此 MCP 可以做什么
Builds, edits, verifies, describes, and renders Mermaid diagrams as SVG, PNG, ASCII, or structured semantic output.
工具
输入模式
{'type': 'object', 'required': ['family', 'ops'], 'properties': {'ops': {'type': 'array', 'items': {'type': 'object'}, 'minItems': 1, 'description': 'Non-empty ordered list of ops; each is { kind, ...fields }.'}, 'family': {'type': 'string', 'description': 'Diagram family to author (one of: flowchart, state, sequence, timeline, class, er, journey, architecture, xychart, pie, quadrant, gantt, mindmap, gitgraph, radar).'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['source'], 'properties': {'format': {'enum': ['text', 'json', 'facts'], 'type': 'string', 'description': 'text (default), json AX tree, or facts semantic read-back.'}, 'source': {'type': 'string', 'description': 'Mermaid source.'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['family'], 'properties': {'detail': {'enum': ['signatures', 'fields'], 'type': 'string', 'description': 'signatures for a compact menu; fields for the complete schema (default).'}, 'family': {'enum': ['flowchart', 'state', 'sequence', 'timeline', 'class', 'er', 'journey', 'architecture', 'xychart', 'pie', 'quadrant', 'gantt', 'mindmap', 'gitgraph', 'radar'], 'type': 'string', 'description': 'Diagram family whose mutation operations are needed.'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'description': 'JavaScript to execute; mermaid.* SDK is global.'}, 'timeoutMs': {'type': 'integer', 'minimum': 1, 'description': 'Optional CPU-time budget (default 5000ms, max 30000ms).'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['source', 'ops'], 'properties': {'ops': {'type': 'array', 'items': {'type': 'object'}, 'minItems': 1, 'description': 'Non-empty ordered list of edit ops; each is { kind, ...fields }.'}, 'source': {'type': 'string', 'description': 'Mermaid source to edit.'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['source'], 'properties': {'source': {'type': 'string', 'description': 'Mermaid source.'}, 'options': {'$id': 'https://agentic-mermaid.dev/schemas/render-options.schema.json', 'type': 'object', '$defs': {'jsonValue': {'anyOf': [{'type': 'null'}, {'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}, {'type': 'array', 'items': {'$ref': '#/$defs/jsonValue'}}, {'type': 'object', 'additionalProperties': {'$ref': '#/$defs/jsonValue'}}], 'description': 'A finite, acyclic JSON value without prototype keys.', 'x-agentic-mermaid-validation-expectation': 'a finite, acyclic JSON value without prototype keys'}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'bg': {'type': 'string', 'default': '#FFFFFF', 'description': 'Background color or CSS variable.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'fg': {'type': 'string', 'default': '#27272A', 'description': 'Primary foreground and text color.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'font': {'type': 'string', 'default': 'Inter', 'description': 'CSS font family or stack.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'the host terminal owns the font face', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'line': {'type': 'string', 'description': 'Connector and secondary-line color.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'seed': {'type': 'number', 'default': 0, 'description': 'Deterministic re-roll seed for stochastic Styles.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal glyph geometry is deterministic and has no stochastic ink'}, 'class': {'type': 'object', 'properties': {'hierarchicalNamespaces': {'type': 'boolean', 'default': True, 'description': 'Nest namespace compounds.'}}, 'description': 'Class-diagram rendering controls.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'this option configures graphical class layout', 'x-agentic-mermaid-applicable-builtin-families': ['class']}, 'gantt': {'type': 'object', 'properties': {'criticalPath': {'type': 'boolean', 'default': False, 'description': 'Emphasize critical-path tasks and connectors.'}, 'dependencyArrows': {'type': 'boolean', 'default': False, 'description': 'Draw scheduled dependency connectors.'}}, 'description': 'Gantt dependency and critical-path overlays.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'graphical Gantt connector emphasis is not represented in cells', 'x-agentic-mermaid-applicable-builtin-families': ['gantt']}, 'muted': {'type': 'string', 'description': 'Secondary text and label color.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'terminal themes have no dedicated muted-text role', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'style': {'anyOf': [{'anyOf': [{'type': 'string', 'description': 'Registered Style or Palette name.'}, {'type': 'object', 'properties': {'fill': {'enum': ['none', 'hachure', 'solid', 'wash'], 'type': 'string', 'description': 'Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.'}, 'font': {'type': 'string', 'description': 'Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'mono': {'type': 'boolean', 'description': 'Advisory monochrome contract: express tone through shading and weight.'}, 'name': {'type': 'string', 'description': 'Canonical look:name or palette:name identity; required only when registering a style.'}, 'blurb': {'type': 'string', 'description': 'Short human-readable description used by discovery surfaces.'}, 'roles': {'type': 'object', 'properties': {'bar': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 4, 'additionalProperties': False}, 'edge': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 8, 'additionalProperties': False}, 'node': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'task': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'actor': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'group': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}, 'headerFillColor': {'type': 'string', 'description': 'Group header surface paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 13, 'additionalProperties': False}, 'label': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 5, 'additionalProperties': False}, 'point': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 4, 'additionalProperties': False}, 'legend': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'series': {'type': 'object', 'properties': {'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 3, 'additionalProperties': False}, 'milestone': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'pie-slice': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'group-header': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'relationship': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 8, 'additionalProperties': False}}, 'description': 'Partial semantic SceneRole defaults. Family-authored styling remains authoritative.', 'additionalProperties': False}, 'bowing': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Rough.js line bowing.'}, 'colors': {'type': 'object', 'properties': {'bg': {'type': 'string', 'description': 'Diagram page background. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'fg': {'type': 'string', 'description': 'Primary text and foreground paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'line': {'type': 'string', 'description': 'Connector and secondary line paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'muted': {'type': 'string', 'description': 'Muted text and secondary data paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'accent': {'type': 'string', 'description': 'Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'border': {'type': 'string', 'description': 'Node and group border paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'surface': {'type': 'string', 'description': 'Node and group surface fill. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}}, 'description': 'Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.', 'maxProperties': 7, 'additionalProperties': False}, 'intent': {'enum': ['premium', 'draft', 'lofi'], 'type': 'string', 'description': 'Advisory intent metadata for pickers and quality tooling.'}, 'passes': {'type': 'integer', 'maximum': 8, 'minimum': 1, 'description': 'Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.'}, 'stroke': {'enum': ['crisp', 'jittered', 'freehand'], 'type': 'string', 'description': 'Stroke treatment; crisp is the default renderer.'}, '$schema': {'type': 'string', 'description': 'Optional JSON Schema pointer for file-backed styles; ignored while rendering.'}, 'backdrop': {'enum': ['plain', 'paper-ruled', 'grid'], 'type': 'string', 'description': 'Flat page furniture drawn behind the diagram.'}, 'bindings': {'type': 'array', 'items': {'type': 'object', 'required': ['channel', 'value', 'slot'], 'properties': {'role': {'enum': ['group-header', 'actor', 'relationship', 'pie-slice', 'legend', 'bar', 'series', 'point', 'task', 'milestone'], 'type': 'string'}, 'slot': {'not': {'enum': ['__proto__', 'constructor', 'prototype']}, 'type': 'string', 'pattern': '^[A-Za-z][A-Za-z0-9._-]{0,63}$'}, 'value': {'type': 'string', 'pattern': '^[^\\r\\n\\u0000]+$', 'maxLength': 256, 'minLength': 1}, 'channel': {'enum': ['category'], 'type': 'string'}}, 'maxProperties': 4, 'additionalProperties': False}, 'maxItems': 4096, 'description': 'Ordered equality bindings from authored/domain meaning to semantic slots.'}, 'washEdge': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Watercolor edge-darkening opacity; requires fill wash in the final stack.'}, 'roughness': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Rough.js stroke irregularity.'}, 'fillWeight': {'type': 'number', 'maximum': 20, 'description': 'Hachure line weight; requires fill hachure in the final stack.', 'exclusiveMinimum': 0}, 'hachureGap': {'type': 'number', 'maximum': 100, 'description': 'Gap between hachure lines; requires fill hachure in the final stack.', 'exclusiveMinimum': 0}, 'constraints': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['kind', 'action'], 'properties': {'kind': {'const': 'contrast'}, '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'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}, 'minimum': {'type': 'number', 'maximum': 21, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'maxFraction'], 'properties': {'kind': {'const': 'accent-area'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}, 'maxFraction': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'role'], 'properties': {'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'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}}, 'additionalProperties': False}]}, 'maxItems': 4096, 'description': 'Closed inspect-only brand constraints with warn or error actions.'}, 'strokeWidth': {'type': 'number', 'maximum': 20, 'description': 'Base stroke width in SVG user units.', 'exclusiveMinimum': 0}, 'washOpacity': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Watercolor glaze opacity; requires fill wash in the final stack.'}, 'hachureAngle': {'type': 'number', 'maximum': 360, 'minimum': -360, 'description': 'Hachure line angle in degrees; requires fill hachure in the final stack.'}, 'formatVersion': {'const': 1, 'description': 'Persisted wire-format version. Optional on input and normalized to 1 on output.'}, 'semanticSlots': {'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}$'}, 'additionalProperties': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}, 'headerFillColor': {'type': 'string', 'description': 'Group header surface paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 16, '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, 'additionalProperties': False}], 'x-agentic-mermaid-validation-expectation': 'a registered Style name or StyleSpec'}, {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'description': 'Registered Style or Palette name.'}, {'type': 'object', 'properties': {'fill': {'enum': ['none', 'hachure', 'solid', 'wash'], 'type': 'string', 'description': 'Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.'}, 'font': {'type': 'string', 'description': 'Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'mono': {'type': 'boolean', 'description': 'Advisory monochrome contract: express tone through shading and weight.'}, 'name': {'type': 'string', 'description': 'Canonical look:name or palette:name identity; required only when registering a style.'}, 'blurb': {'type': 'string', 'description': 'Short human-readable description used by discovery surfaces.'}, 'roles': {'type': 'object', 'properties': {'bar': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 4, 'additionalProperties': False}, 'edge': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 8, 'additionalProperties': False}, 'node': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'task': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'actor': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'group': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}, 'headerFillColor': {'type': 'string', 'description': 'Group header surface paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 13, 'additionalProperties': False}, 'label': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 5, 'additionalProperties': False}, 'point': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 4, 'additionalProperties': False}, 'legend': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'series': {'type': 'object', 'properties': {'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 3, 'additionalProperties': False}, 'milestone': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'pie-slice': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'group-header': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'relationship': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 8, 'additionalProperties': False}}, 'description': 'Partial semantic SceneRole defaults. Family-authored styling remains authoritative.', 'additionalProperties': False}, 'bowing': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Rough.js line bowing.'}, 'colors': {'type': 'object', 'properties': {'bg': {'type': 'string', 'description': 'Diagram page background. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'fg': {'type': 'string', 'description': 'Primary text and foreground paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'line': {'type': 'string', 'description': 'Connector and secondary line paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'muted': {'type': 'string', 'description': 'Muted text and secondary data paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'accent': {'type': 'string', 'description': 'Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'border': {'type': 'string', 'description': 'Node and group border paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'surface': {'type': 'string', 'description': 'Node and group surface fill. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}}, 'description': 'Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.', 'maxProperties': 7, 'additionalProperties': False}, 'intent': {'enum': ['premium', 'draft', 'lofi'], 'type': 'string', 'description': 'Advisory intent metadata for pickers and quality tooling.'}, 'passes': {'type': 'integer', 'maximum': 8, 'minimum': 1, 'description': 'Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.'}, 'stroke': {'enum': ['crisp', 'jittered', 'freehand'], 'type': 'string', 'description': 'Stroke treatment; crisp is the default renderer.'}, '$schema': {'type': 'string', 'description': 'Optional JSON Schema pointer for file-backed styles; ignored while rendering.'}, 'backdrop': {'enum': ['plain', 'paper-ruled', 'grid'], 'type': 'string', 'description': 'Flat page furniture drawn behind the diagram.'}, 'bindings': {'type': 'array', 'items': {'type': 'object', 'required': ['channel', 'value', 'slot'], 'properties': {'role': {'enum': ['group-header', 'actor', 'relationship', 'pie-slice', 'legend', 'bar', 'series', 'point', 'task', 'milestone'], 'type': 'string'}, 'slot': {'not': {'enum': ['__proto__', 'constructor', 'prototype']}, 'type': 'string', 'pattern': '^[A-Za-z][A-Za-z0-9._-]{0,63}$'}, 'value': {'type': 'string', 'pattern': '^[^\\r\\n\\u0000]+$', 'maxLength': 256, 'minLength': 1}, 'channel': {'enum': ['category'], 'type': 'string'}}, 'maxProperties': 4, 'additionalProperties': False}, 'maxItems': 4096, 'description': 'Ordered equality bindings from authored/domain meaning to semantic slots.'}, 'washEdge': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Watercolor edge-darkening opacity; requires fill wash in the final stack.'}, 'roughness': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Rough.js stroke irregularity.'}, 'fillWeight': {'type': 'number', 'maximum': 20, 'description': 'Hachure line weight; requires fill hachure in the final stack.', 'exclusiveMinimum': 0}, 'hachureGap': {'type': 'number', 'maximum': 100, 'description': 'Gap between hachure lines; requires fill hachure in the final stack.', 'exclusiveMinimum': 0}, 'constraints': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['kind', 'action'], 'properties': {'kind': {'const': 'contrast'}, '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'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}, 'minimum': {'type': 'number', 'maximum': 21, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'maxFraction'], 'properties': {'kind': {'const': 'accent-area'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}, 'maxFraction': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'role'], 'properties': {'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'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}}, 'additionalProperties': False}]}, 'maxItems': 4096, 'description': 'Closed inspect-only brand constraints with warn or error actions.'}, 'strokeWidth': {'type': 'number', 'maximum': 20, 'description': 'Base stroke width in SVG user units.', 'exclusiveMinimum': 0}, 'washOpacity': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Watercolor glaze opacity; requires fill wash in the final stack.'}, 'hachureAngle': {'type': 'number', 'maximum': 360, 'minimum': -360, 'description': 'Hachure line angle in degrees; requires fill hachure in the final stack.'}, 'formatVersion': {'const': 1, 'description': 'Persisted wire-format version. Optional on input and normalized to 1 on output.'}, 'semanticSlots': {'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}$'}, 'additionalProperties': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}, 'headerFillColor': {'type': 'string', 'description': 'Group header surface paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 16, '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, 'additionalProperties': False}], 'x-agentic-mermaid-validation-expectation': 'a registered Style name or StyleSpec'}, 'description': 'Style stack merged from left to right.'}], 'description': 'A registered name, inline StyleSpec, or left-to-right stack of either.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'styleInput'}, 'accent': {'type': 'string', 'description': 'Arrowhead, highlight, and data accent color.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'border': {'type': 'string', 'description': 'Node and group border color.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'shadow': {'type': 'boolean', 'default': False, 'description': 'Paint explicit drop shadows on node shapes.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'elevation projects to borders and labels', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart', 'state', 'sequence', 'timeline', 'class', 'er', 'journey', 'xychart', 'pie', 'quadrant', 'gantt', 'mindmap', 'gitgraph']}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Compact SVG serialization while preserving agent hooks.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'compact controls SVG serialization'}, 'journey': {'type': 'object', 'properties': {'experienceCurve': {'type': 'boolean', 'default': True, 'description': 'Connect journey score markers with an experience curve.'}}, 'description': 'User-journey graphical controls.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'experience curves are graphical-only', 'x-agentic-mermaid-applicable-builtin-families': ['journey']}, 'padding': {'type': 'number', 'default': 40, 'minimum': 0, 'description': 'Canvas padding in SVG user units.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output uses paddingX, paddingY, and boxBorderPadding', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart', 'state', 'architecture']}, 'surface': {'type': 'string', 'description': 'Node and group surface color.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'terminal cells do not paint graphical surfaces', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'idPrefix': {'type': 'string', 'pattern': '^[A-Za-z0-9_.:-]+$', 'description': 'Non-empty namespace for generated SVG definition IDs and local references.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output has no SVG definition ids'}, 'security': {'enum': ['default', 'strict'], 'type': 'string', 'default': 'default', 'description': 'Active SVG content is rejected in every mode; strict additionally rejects every external reference. Raw Mermaid themeCSS is rejected in both modes.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal text has its own control-character and HTML-color safety projection'}, 'timeline': {'type': 'object', 'properties': {'maxWidth': {'type': 'number', 'description': 'Best-effort width budget for horizontal timelines.', 'exclusiveMinimum': 0}}, 'description': 'Timeline layout controls.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output uses maxWidth or targetWidth', 'x-agentic-mermaid-applicable-builtin-families': ['timeline']}, 'ganttToday': {'type': 'string', 'description': 'Explicit deterministic date for the Gantt today marker.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-applicable-builtin-families': ['gantt']}, 'interactive': {'type': 'boolean', 'default': False, 'description': 'Enable hover tooltips for supported chart data points.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'terminal output is a static semantic projection', 'x-agentic-mermaid-applicable-builtin-families': ['xychart', 'pie', 'quadrant']}, 'nodeSpacing': {'type': 'number', 'default': 24, 'minimum': 0, 'description': 'Horizontal spacing between sibling nodes.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal layout has a cell-grid spacing contract', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart', 'state', 'class', 'er', 'architecture']}, 'transparent': {'type': 'boolean', 'default': False, 'description': 'Omit the painted SVG canvas background.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'terminal output has no painted canvas background'}, 'architecture': {'type': 'object', 'properties': {'visual': {'type': 'object', 'properties': {'edgeText': {'type': 'string', 'description': 'Architecture connector-label color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'iconSize': {'type': 'number', 'description': 'Architecture group icon size.', 'exclusiveMinimum': 0}, 'groupFont': {'type': 'string', 'description': 'Architecture group-label font family.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'groupText': {'type': 'string', 'description': 'Architecture group-label color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'edgeStroke': {'type': 'string', 'description': 'Architecture connector color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'groupBorder': {'type': 'string', 'description': 'Architecture group border color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'serviceText': {'type': 'string', 'description': 'Architecture service-label color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'edgeFontSize': {'type': 'number', 'description': 'Architecture connector-label font size.', 'exclusiveMinimum': 0}, 'groupSurface': {'type': 'string', 'description': 'Architecture group surface color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'edgeLineWidth': {'type': 'number', 'minimum': 0, 'description': 'Architecture connector width.'}, 'groupFontSize': {'type': 'number', 'description': 'Architecture group-label font size.', 'exclusiveMinimum': 0}, 'groupPaddingX': {'type': 'number', 'minimum': 0, 'description': 'Horizontal padding inside architecture groups.'}, 'groupPaddingY': {'type': 'number', 'minimum': 0, 'description': 'Vertical padding inside architecture groups.'}, 'serviceBorder': {'type': 'string', 'description': 'Architecture service border color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'edgeBendRadius': {'type': 'number', 'minimum': 0, 'description': 'Architecture connector bend radius.'}, 'edgeFontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'Architecture connector-label font weight.'}, 'groupLineWidth': {'type': 'number', 'minimum': 0, 'description': 'Architecture group border width.'}, 'serviceSurface': {'type': 'string', 'description': 'Architecture service surface color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'groupFontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'Architecture group-label font weight.'}, 'serviceFontSize': {'type': 'number', 'description': 'Architecture service-label font size.', 'exclusiveMinimum': 0}, 'serviceIconSize': {'type': 'number', 'description': 'Architecture service icon size.', 'exclusiveMinimum': 0}, 'servicePaddingX': {'type': 'number', 'minimum': 0, 'description': 'Horizontal padding inside architecture services.'}, 'servicePaddingY': {'type': 'number', 'minimum': 0, 'description': 'Vertical padding inside architecture services.'}, 'serviceLineWidth': {'type': 'number', 'minimum': 0, 'description': 'Architecture service border width.'}, 'edgeLetterSpacing': {'type': 'number', 'description': 'Architecture connector-label letter spacing.'}, 'edgeTextTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Architecture connector-label text transform.'}, 'groupCornerRadius': {'type': 'number', 'minimum': 0, 'description': 'Architecture group corner radius.'}, 'groupHeaderHeight': {'type': 'number', 'description': 'Architecture group-header height.', 'exclusiveMinimum': 0}, 'serviceFontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'Architecture service-label font weight.'}, 'groupHeaderSurface': {'type': 'string', 'description': 'Architecture group-header surface color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'groupLabelPaddingX': {'type': 'number', 'minimum': 0, 'description': 'Horizontal padding around architecture group labels.'}, 'groupLetterSpacing': {'type': 'number', 'description': 'Architecture group-label letter spacing.'}, 'groupTextTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Architecture group-label text transform.'}, 'junctionInnerRadius': {'type': 'number', 'minimum': 0, 'description': 'Architecture junction inner radius.'}, 'junctionOuterRadius': {'type': 'number', 'description': 'Architecture junction outer radius.', 'exclusiveMinimum': 0}, 'serviceCornerRadius': {'type': 'number', 'minimum': 0, 'description': 'Architecture service corner radius.'}, 'serviceLetterSpacing': {'type': 'number', 'description': 'Architecture service-label letter spacing.'}, 'serviceTextTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Architecture service-label text transform.'}}, 'description': 'Sparse architecture visual overrides merged over resolved defaults.', 'additionalProperties': False, 'x-agentic-mermaid-runtime-validator': 'architectureVisual'}}, 'description': 'Architecture renderer visual metric and paint overrides.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'this option configures graphical architecture rendering', 'x-agentic-mermaid-applicable-builtin-families': ['architecture']}, 'layerSpacing': {'type': 'number', 'default': 40, 'minimum': 0, 'description': 'Vertical spacing between graph layers.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal layout has a cell-grid spacing contract', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart', 'state', 'class', 'er', 'architecture']}, 'mermaidConfig': {'type': 'object', 'description': 'Mermaid-style recursive runtime configuration.', 'additionalProperties': {'$ref': '#/$defs/jsonValue'}, 'x-agentic-mermaid-terminal': 'consumed'}, 'wrappingWidth': {'type': 'number', 'description': 'Flowchart measured-label wrapping budget in pixels.', 'exclusiveMinimum': 0, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output uses maxWidth or targetWidth', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart']}, 'embedFontImport': {'type': 'boolean', 'default': False, 'description': 'Embed the Google Fonts import in SVG styles; PNG forces this off for offline rasterization.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output embeds no web-font import'}, 'componentSpacing': {'type': 'number', 'minimum': 0, 'description': 'Spacing between disconnected graph components for compatible extension families; no built-in family currently consumes it.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal layout has a cell-grid spacing contract', 'x-agentic-mermaid-applicable-builtin-families': []}}, 'description': 'Shared advanced RenderOptions object, including style/palette/config/security.', 'additionalProperties': False}, 'useAscii': {'type': 'boolean', 'description': 'true = ASCII characters, false = Unicode (default).'}, 'targetWidth': {'type': 'integer', 'minimum': 1, 'description': 'Hard maximum line width in terminal display cells.'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['source'], 'properties': {'fitTo': {'type': 'object', 'oneOf': [{'required': ['width']}, {'required': ['height']}], 'properties': {'width': {'type': 'integer', 'minimum': 1, 'description': 'Exact output width in integer pixels.'}, 'height': {'type': 'integer', 'minimum': 1, 'description': 'Exact output height in integer pixels.'}}, 'description': 'Exactly one output width or height constraint.', 'additionalProperties': False, 'x-agentic-mermaid-scope': 'portable', 'x-agentic-mermaid-receipt': 'included'}, 'scale': {'type': 'number', 'default': 2, 'description': 'Positive output scale used when no fitTo constraint is supplied.', 'exclusiveMinimum': 0, 'x-agentic-mermaid-scope': 'portable', 'x-agentic-mermaid-receipt': 'included'}, 'source': {'type': 'string', 'description': 'Mermaid source.'}, 'options': {'$id': 'https://agentic-mermaid.dev/schemas/render-options.schema.json', 'type': 'object', '$defs': {'jsonValue': {'anyOf': [{'type': 'null'}, {'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}, {'type': 'array', 'items': {'$ref': '#/$defs/jsonValue'}}, {'type': 'object', 'additionalProperties': {'$ref': '#/$defs/jsonValue'}}], 'description': 'A finite, acyclic JSON value without prototype keys.', 'x-agentic-mermaid-validation-expectation': 'a finite, acyclic JSON value without prototype keys'}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'bg': {'type': 'string', 'default': '#FFFFFF', 'description': 'Background color or CSS variable.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'fg': {'type': 'string', 'default': '#27272A', 'description': 'Primary foreground and text color.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'font': {'type': 'string', 'default': 'Inter', 'description': 'CSS font family or stack.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'the host terminal owns the font face', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'line': {'type': 'string', 'description': 'Connector and secondary-line color.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'seed': {'type': 'number', 'default': 0, 'description': 'Deterministic re-roll seed for stochastic Styles.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal glyph geometry is deterministic and has no stochastic ink'}, 'class': {'type': 'object', 'properties': {'hierarchicalNamespaces': {'type': 'boolean', 'default': True, 'description': 'Nest namespace compounds.'}}, 'description': 'Class-diagram rendering controls.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'this option configures graphical class layout', 'x-agentic-mermaid-applicable-builtin-families': ['class']}, 'gantt': {'type': 'object', 'properties': {'criticalPath': {'type': 'boolean', 'default': False, 'description': 'Emphasize critical-path tasks and connectors.'}, 'dependencyArrows': {'type': 'boolean', 'default': False, 'description': 'Draw scheduled dependency connectors.'}}, 'description': 'Gantt dependency and critical-path overlays.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'graphical Gantt connector emphasis is not represented in cells', 'x-agentic-mermaid-applicable-builtin-families': ['gantt']}, 'muted': {'type': 'string', 'description': 'Secondary text and label color.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'terminal themes have no dedicated muted-text role', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'style': {'anyOf': [{'anyOf': [{'type': 'string', 'description': 'Registered Style or Palette name.'}, {'type': 'object', 'properties': {'fill': {'enum': ['none', 'hachure', 'solid', 'wash'], 'type': 'string', 'description': 'Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.'}, 'font': {'type': 'string', 'description': 'Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'mono': {'type': 'boolean', 'description': 'Advisory monochrome contract: express tone through shading and weight.'}, 'name': {'type': 'string', 'description': 'Canonical look:name or palette:name identity; required only when registering a style.'}, 'blurb': {'type': 'string', 'description': 'Short human-readable description used by discovery surfaces.'}, 'roles': {'type': 'object', 'properties': {'bar': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 4, 'additionalProperties': False}, 'edge': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 8, 'additionalProperties': False}, 'node': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'task': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'actor': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'group': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}, 'headerFillColor': {'type': 'string', 'description': 'Group header surface paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 13, 'additionalProperties': False}, 'label': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 5, 'additionalProperties': False}, 'point': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 4, 'additionalProperties': False}, 'legend': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'series': {'type': 'object', 'properties': {'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 3, 'additionalProperties': False}, 'milestone': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'pie-slice': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'group-header': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'relationship': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 8, 'additionalProperties': False}}, 'description': 'Partial semantic SceneRole defaults. Family-authored styling remains authoritative.', 'additionalProperties': False}, 'bowing': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Rough.js line bowing.'}, 'colors': {'type': 'object', 'properties': {'bg': {'type': 'string', 'description': 'Diagram page background. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'fg': {'type': 'string', 'description': 'Primary text and foreground paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'line': {'type': 'string', 'description': 'Connector and secondary line paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'muted': {'type': 'string', 'description': 'Muted text and secondary data paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'accent': {'type': 'string', 'description': 'Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'border': {'type': 'string', 'description': 'Node and group border paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'surface': {'type': 'string', 'description': 'Node and group surface fill. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}}, 'description': 'Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.', 'maxProperties': 7, 'additionalProperties': False}, 'intent': {'enum': ['premium', 'draft', 'lofi'], 'type': 'string', 'description': 'Advisory intent metadata for pickers and quality tooling.'}, 'passes': {'type': 'integer', 'maximum': 8, 'minimum': 1, 'description': 'Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.'}, 'stroke': {'enum': ['crisp', 'jittered', 'freehand'], 'type': 'string', 'description': 'Stroke treatment; crisp is the default renderer.'}, '$schema': {'type': 'string', 'description': 'Optional JSON Schema pointer for file-backed styles; ignored while rendering.'}, 'backdrop': {'enum': ['plain', 'paper-ruled', 'grid'], 'type': 'string', 'description': 'Flat page furniture drawn behind the diagram.'}, 'bindings': {'type': 'array', 'items': {'type': 'object', 'required': ['channel', 'value', 'slot'], 'properties': {'role': {'enum': ['group-header', 'actor', 'relationship', 'pie-slice', 'legend', 'bar', 'series', 'point', 'task', 'milestone'], 'type': 'string'}, 'slot': {'not': {'enum': ['__proto__', 'constructor', 'prototype']}, 'type': 'string', 'pattern': '^[A-Za-z][A-Za-z0-9._-]{0,63}$'}, 'value': {'type': 'string', 'pattern': '^[^\\r\\n\\u0000]+$', 'maxLength': 256, 'minLength': 1}, 'channel': {'enum': ['category'], 'type': 'string'}}, 'maxProperties': 4, 'additionalProperties': False}, 'maxItems': 4096, 'description': 'Ordered equality bindings from authored/domain meaning to semantic slots.'}, 'washEdge': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Watercolor edge-darkening opacity; requires fill wash in the final stack.'}, 'roughness': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Rough.js stroke irregularity.'}, 'fillWeight': {'type': 'number', 'maximum': 20, 'description': 'Hachure line weight; requires fill hachure in the final stack.', 'exclusiveMinimum': 0}, 'hachureGap': {'type': 'number', 'maximum': 100, 'description': 'Gap between hachure lines; requires fill hachure in the final stack.', 'exclusiveMinimum': 0}, 'constraints': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['kind', 'action'], 'properties': {'kind': {'const': 'contrast'}, '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'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}, 'minimum': {'type': 'number', 'maximum': 21, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'maxFraction'], 'properties': {'kind': {'const': 'accent-area'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}, 'maxFraction': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'role'], 'properties': {'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'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}}, 'additionalProperties': False}]}, 'maxItems': 4096, 'description': 'Closed inspect-only brand constraints with warn or error actions.'}, 'strokeWidth': {'type': 'number', 'maximum': 20, 'description': 'Base stroke width in SVG user units.', 'exclusiveMinimum': 0}, 'washOpacity': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Watercolor glaze opacity; requires fill wash in the final stack.'}, 'hachureAngle': {'type': 'number', 'maximum': 360, 'minimum': -360, 'description': 'Hachure line angle in degrees; requires fill hachure in the final stack.'}, 'formatVersion': {'const': 1, 'description': 'Persisted wire-format version. Optional on input and normalized to 1 on output.'}, 'semanticSlots': {'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}$'}, 'additionalProperties': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}, 'headerFillColor': {'type': 'string', 'description': 'Group header surface paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 16, '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, 'additionalProperties': False}], 'x-agentic-mermaid-validation-expectation': 'a registered Style name or StyleSpec'}, {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'description': 'Registered Style or Palette name.'}, {'type': 'object', 'properties': {'fill': {'enum': ['none', 'hachure', 'solid', 'wash'], 'type': 'string', 'description': 'Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.'}, 'font': {'type': 'string', 'description': 'Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'mono': {'type': 'boolean', 'description': 'Advisory monochrome contract: express tone through shading and weight.'}, 'name': {'type': 'string', 'description': 'Canonical look:name or palette:name identity; required only when registering a style.'}, 'blurb': {'type': 'string', 'description': 'Short human-readable description used by discovery surfaces.'}, 'roles': {'type': 'object', 'properties': {'bar': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 4, 'additionalProperties': False}, 'edge': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 8, 'additionalProperties': False}, 'node': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'task': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'actor': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'group': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}, 'headerFillColor': {'type': 'string', 'description': 'Group header surface paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 13, 'additionalProperties': False}, 'label': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 5, 'additionalProperties': False}, 'point': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 4, 'additionalProperties': False}, 'legend': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'series': {'type': 'object', 'properties': {'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 3, 'additionalProperties': False}, 'milestone': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'pie-slice': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'group-header': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'relationship': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 8, 'additionalProperties': False}}, 'description': 'Partial semantic SceneRole defaults. Family-authored styling remains authoritative.', 'additionalProperties': False}, 'bowing': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Rough.js line bowing.'}, 'colors': {'type': 'object', 'properties': {'bg': {'type': 'string', 'description': 'Diagram page background. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'fg': {'type': 'string', 'description': 'Primary text and foreground paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'line': {'type': 'string', 'description': 'Connector and secondary line paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'muted': {'type': 'string', 'description': 'Muted text and secondary data paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'accent': {'type': 'string', 'description': 'Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'border': {'type': 'string', 'description': 'Node and group border paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'surface': {'type': 'string', 'description': 'Node and group surface fill. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}}, 'description': 'Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.', 'maxProperties': 7, 'additionalProperties': False}, 'intent': {'enum': ['premium', 'draft', 'lofi'], 'type': 'string', 'description': 'Advisory intent metadata for pickers and quality tooling.'}, 'passes': {'type': 'integer', 'maximum': 8, 'minimum': 1, 'description': 'Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.'}, 'stroke': {'enum': ['crisp', 'jittered', 'freehand'], 'type': 'string', 'description': 'Stroke treatment; crisp is the default renderer.'}, '$schema': {'type': 'string', 'description': 'Optional JSON Schema pointer for file-backed styles; ignored while rendering.'}, 'backdrop': {'enum': ['plain', 'paper-ruled', 'grid'], 'type': 'string', 'description': 'Flat page furniture drawn behind the diagram.'}, 'bindings': {'type': 'array', 'items': {'type': 'object', 'required': ['channel', 'value', 'slot'], 'properties': {'role': {'enum': ['group-header', 'actor', 'relationship', 'pie-slice', 'legend', 'bar', 'series', 'point', 'task', 'milestone'], 'type': 'string'}, 'slot': {'not': {'enum': ['__proto__', 'constructor', 'prototype']}, 'type': 'string', 'pattern': '^[A-Za-z][A-Za-z0-9._-]{0,63}$'}, 'value': {'type': 'string', 'pattern': '^[^\\r\\n\\u0000]+$', 'maxLength': 256, 'minLength': 1}, 'channel': {'enum': ['category'], 'type': 'string'}}, 'maxProperties': 4, 'additionalProperties': False}, 'maxItems': 4096, 'description': 'Ordered equality bindings from authored/domain meaning to semantic slots.'}, 'washEdge': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Watercolor edge-darkening opacity; requires fill wash in the final stack.'}, 'roughness': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Rough.js stroke irregularity.'}, 'fillWeight': {'type': 'number', 'maximum': 20, 'description': 'Hachure line weight; requires fill hachure in the final stack.', 'exclusiveMinimum': 0}, 'hachureGap': {'type': 'number', 'maximum': 100, 'description': 'Gap between hachure lines; requires fill hachure in the final stack.', 'exclusiveMinimum': 0}, 'constraints': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['kind', 'action'], 'properties': {'kind': {'const': 'contrast'}, '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'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}, 'minimum': {'type': 'number', 'maximum': 21, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'maxFraction'], 'properties': {'kind': {'const': 'accent-area'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}, 'maxFraction': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'role'], 'properties': {'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'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}}, 'additionalProperties': False}]}, 'maxItems': 4096, 'description': 'Closed inspect-only brand constraints with warn or error actions.'}, 'strokeWidth': {'type': 'number', 'maximum': 20, 'description': 'Base stroke width in SVG user units.', 'exclusiveMinimum': 0}, 'washOpacity': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Watercolor glaze opacity; requires fill wash in the final stack.'}, 'hachureAngle': {'type': 'number', 'maximum': 360, 'minimum': -360, 'description': 'Hachure line angle in degrees; requires fill hachure in the final stack.'}, 'formatVersion': {'const': 1, 'description': 'Persisted wire-format version. Optional on input and normalized to 1 on output.'}, 'semanticSlots': {'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}$'}, 'additionalProperties': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}, 'headerFillColor': {'type': 'string', 'description': 'Group header surface paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 16, '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, 'additionalProperties': False}], 'x-agentic-mermaid-validation-expectation': 'a registered Style name or StyleSpec'}, 'description': 'Style stack merged from left to right.'}], 'description': 'A registered name, inline StyleSpec, or left-to-right stack of either.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'styleInput'}, 'accent': {'type': 'string', 'description': 'Arrowhead, highlight, and data accent color.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'border': {'type': 'string', 'description': 'Node and group border color.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'shadow': {'type': 'boolean', 'default': False, 'description': 'Paint explicit drop shadows on node shapes.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'elevation projects to borders and labels', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart', 'state', 'sequence', 'timeline', 'class', 'er', 'journey', 'xychart', 'pie', 'quadrant', 'gantt', 'mindmap', 'gitgraph']}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Compact SVG serialization while preserving agent hooks.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'compact controls SVG serialization'}, 'journey': {'type': 'object', 'properties': {'experienceCurve': {'type': 'boolean', 'default': True, 'description': 'Connect journey score markers with an experience curve.'}}, 'description': 'User-journey graphical controls.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'experience curves are graphical-only', 'x-agentic-mermaid-applicable-builtin-families': ['journey']}, 'padding': {'type': 'number', 'default': 40, 'minimum': 0, 'description': 'Canvas padding in SVG user units.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output uses paddingX, paddingY, and boxBorderPadding', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart', 'state', 'architecture']}, 'surface': {'type': 'string', 'description': 'Node and group surface color.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'terminal cells do not paint graphical surfaces', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'idPrefix': {'type': 'string', 'pattern': '^[A-Za-z0-9_.:-]+$', 'description': 'Non-empty namespace for generated SVG definition IDs and local references.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output has no SVG definition ids'}, 'security': {'enum': ['default', 'strict'], 'type': 'string', 'default': 'default', 'description': 'Active SVG content is rejected in every mode; strict additionally rejects every external reference. Raw Mermaid themeCSS is rejected in both modes.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal text has its own control-character and HTML-color safety projection'}, 'timeline': {'type': 'object', 'properties': {'maxWidth': {'type': 'number', 'description': 'Best-effort width budget for horizontal timelines.', 'exclusiveMinimum': 0}}, 'description': 'Timeline layout controls.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output uses maxWidth or targetWidth', 'x-agentic-mermaid-applicable-builtin-families': ['timeline']}, 'ganttToday': {'type': 'string', 'description': 'Explicit deterministic date for the Gantt today marker.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-applicable-builtin-families': ['gantt']}, 'interactive': {'type': 'boolean', 'default': False, 'description': 'Enable hover tooltips for supported chart data points.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'terminal output is a static semantic projection', 'x-agentic-mermaid-applicable-builtin-families': ['xychart', 'pie', 'quadrant']}, 'nodeSpacing': {'type': 'number', 'default': 24, 'minimum': 0, 'description': 'Horizontal spacing between sibling nodes.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal layout has a cell-grid spacing contract', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart', 'state', 'class', 'er', 'architecture']}, 'transparent': {'type': 'boolean', 'default': False, 'description': 'Omit the painted SVG canvas background.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'terminal output has no painted canvas background'}, 'architecture': {'type': 'object', 'properties': {'visual': {'type': 'object', 'properties': {'edgeText': {'type': 'string', 'description': 'Architecture connector-label color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'iconSize': {'type': 'number', 'description': 'Architecture group icon size.', 'exclusiveMinimum': 0}, 'groupFont': {'type': 'string', 'description': 'Architecture group-label font family.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'groupText': {'type': 'string', 'description': 'Architecture group-label color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'edgeStroke': {'type': 'string', 'description': 'Architecture connector color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'groupBorder': {'type': 'string', 'description': 'Architecture group border color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'serviceText': {'type': 'string', 'description': 'Architecture service-label color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'edgeFontSize': {'type': 'number', 'description': 'Architecture connector-label font size.', 'exclusiveMinimum': 0}, 'groupSurface': {'type': 'string', 'description': 'Architecture group surface color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'edgeLineWidth': {'type': 'number', 'minimum': 0, 'description': 'Architecture connector width.'}, 'groupFontSize': {'type': 'number', 'description': 'Architecture group-label font size.', 'exclusiveMinimum': 0}, 'groupPaddingX': {'type': 'number', 'minimum': 0, 'description': 'Horizontal padding inside architecture groups.'}, 'groupPaddingY': {'type': 'number', 'minimum': 0, 'description': 'Vertical padding inside architecture groups.'}, 'serviceBorder': {'type': 'string', 'description': 'Architecture service border color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'edgeBendRadius': {'type': 'number', 'minimum': 0, 'description': 'Architecture connector bend radius.'}, 'edgeFontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'Architecture connector-label font weight.'}, 'groupLineWidth': {'type': 'number', 'minimum': 0, 'description': 'Architecture group border width.'}, 'serviceSurface': {'type': 'string', 'description': 'Architecture service surface color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'groupFontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'Architecture group-label font weight.'}, 'serviceFontSize': {'type': 'number', 'description': 'Architecture service-label font size.', 'exclusiveMinimum': 0}, 'serviceIconSize': {'type': 'number', 'description': 'Architecture service icon size.', 'exclusiveMinimum': 0}, 'servicePaddingX': {'type': 'number', 'minimum': 0, 'description': 'Horizontal padding inside architecture services.'}, 'servicePaddingY': {'type': 'number', 'minimum': 0, 'description': 'Vertical padding inside architecture services.'}, 'serviceLineWidth': {'type': 'number', 'minimum': 0, 'description': 'Architecture service border width.'}, 'edgeLetterSpacing': {'type': 'number', 'description': 'Architecture connector-label letter spacing.'}, 'edgeTextTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Architecture connector-label text transform.'}, 'groupCornerRadius': {'type': 'number', 'minimum': 0, 'description': 'Architecture group corner radius.'}, 'groupHeaderHeight': {'type': 'number', 'description': 'Architecture group-header height.', 'exclusiveMinimum': 0}, 'serviceFontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'Architecture service-label font weight.'}, 'groupHeaderSurface': {'type': 'string', 'description': 'Architecture group-header surface color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'groupLabelPaddingX': {'type': 'number', 'minimum': 0, 'description': 'Horizontal padding around architecture group labels.'}, 'groupLetterSpacing': {'type': 'number', 'description': 'Architecture group-label letter spacing.'}, 'groupTextTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Architecture group-label text transform.'}, 'junctionInnerRadius': {'type': 'number', 'minimum': 0, 'description': 'Architecture junction inner radius.'}, 'junctionOuterRadius': {'type': 'number', 'description': 'Architecture junction outer radius.', 'exclusiveMinimum': 0}, 'serviceCornerRadius': {'type': 'number', 'minimum': 0, 'description': 'Architecture service corner radius.'}, 'serviceLetterSpacing': {'type': 'number', 'description': 'Architecture service-label letter spacing.'}, 'serviceTextTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Architecture service-label text transform.'}}, 'description': 'Sparse architecture visual overrides merged over resolved defaults.', 'additionalProperties': False, 'x-agentic-mermaid-runtime-validator': 'architectureVisual'}}, 'description': 'Architecture renderer visual metric and paint overrides.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'this option configures graphical architecture rendering', 'x-agentic-mermaid-applicable-builtin-families': ['architecture']}, 'layerSpacing': {'type': 'number', 'default': 40, 'minimum': 0, 'description': 'Vertical spacing between graph layers.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal layout has a cell-grid spacing contract', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart', 'state', 'class', 'er', 'architecture']}, 'mermaidConfig': {'type': 'object', 'description': 'Mermaid-style recursive runtime configuration.', 'additionalProperties': {'$ref': '#/$defs/jsonValue'}, 'x-agentic-mermaid-terminal': 'consumed'}, 'wrappingWidth': {'type': 'number', 'description': 'Flowchart measured-label wrapping budget in pixels.', 'exclusiveMinimum': 0, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output uses maxWidth or targetWidth', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart']}, 'embedFontImport': {'type': 'boolean', 'default': False, 'description': 'Embed the Google Fonts import in SVG styles; PNG forces this off for offline rasterization.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output embeds no web-font import'}, 'componentSpacing': {'type': 'number', 'minimum': 0, 'description': 'Spacing between disconnected graph components for compatible extension families; no built-in family currently consumes it.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal layout has a cell-grid spacing contract', 'x-agentic-mermaid-applicable-builtin-families': []}}, 'description': 'Shared advanced RenderOptions object.', 'additionalProperties': False}, 'background': {'type': 'string', 'pattern': '^\\s*(?:#[0-9A-Fa-f]{3,4}|#[0-9A-Fa-f]{6}|#[0-9A-Fa-f]{8}|[tT][rR][aA][nN][sS][pP][aA][rR][eE][nN][tT]|[bB][lL][aA][cC][kK]|[sS][iI][lL][vV][eE][rR]|[gG][rR][aA][yY]|[gG][rR][eE][yY]|[wW][hH][iI][tT][eE]|[mM][aA][rR][oO][oO][nN]|[rR][eE][dD]|[pP][uU][rR][pP][lL][eE]|[fF][uU][cC][hH][sS][iI][aA]|[gG][rR][eE][eE][nN]|[lL][iI][mM][eE]|[oO][lL][iI][vV][eE]|[yY][eE][lL][lL][oO][wW]|[nN][aA][vV][yY]|[bB][lL][uU][eE]|[tT][eE][aA][lL]|[aA][qQ][uU][aA]|[oO][rR][aA][nN][gG][eE])\\s*$', 'minLength': 1, 'description': 'Portable basic color or hex color painted behind the raster artifact.', 'x-agentic-mermaid-scope': 'portable', 'x-agentic-mermaid-receipt': 'included', 'x-agentic-mermaid-runtime-validator': 'portablePngBackground'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['source'], 'properties': {'source': {'type': 'string', 'description': 'Mermaid source.'}, 'options': {'$id': 'https://agentic-mermaid.dev/schemas/render-options.schema.json', 'type': 'object', '$defs': {'jsonValue': {'anyOf': [{'type': 'null'}, {'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}, {'type': 'array', 'items': {'$ref': '#/$defs/jsonValue'}}, {'type': 'object', 'additionalProperties': {'$ref': '#/$defs/jsonValue'}}], 'description': 'A finite, acyclic JSON value without prototype keys.', 'x-agentic-mermaid-validation-expectation': 'a finite, acyclic JSON value without prototype keys'}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'bg': {'type': 'string', 'default': '#FFFFFF', 'description': 'Background color or CSS variable.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'fg': {'type': 'string', 'default': '#27272A', 'description': 'Primary foreground and text color.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'font': {'type': 'string', 'default': 'Inter', 'description': 'CSS font family or stack.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'the host terminal owns the font face', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'line': {'type': 'string', 'description': 'Connector and secondary-line color.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'seed': {'type': 'number', 'default': 0, 'description': 'Deterministic re-roll seed for stochastic Styles.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal glyph geometry is deterministic and has no stochastic ink'}, 'class': {'type': 'object', 'properties': {'hierarchicalNamespaces': {'type': 'boolean', 'default': True, 'description': 'Nest namespace compounds.'}}, 'description': 'Class-diagram rendering controls.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'this option configures graphical class layout', 'x-agentic-mermaid-applicable-builtin-families': ['class']}, 'gantt': {'type': 'object', 'properties': {'criticalPath': {'type': 'boolean', 'default': False, 'description': 'Emphasize critical-path tasks and connectors.'}, 'dependencyArrows': {'type': 'boolean', 'default': False, 'description': 'Draw scheduled dependency connectors.'}}, 'description': 'Gantt dependency and critical-path overlays.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'graphical Gantt connector emphasis is not represented in cells', 'x-agentic-mermaid-applicable-builtin-families': ['gantt']}, 'muted': {'type': 'string', 'description': 'Secondary text and label color.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'terminal themes have no dedicated muted-text role', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'style': {'anyOf': [{'anyOf': [{'type': 'string', 'description': 'Registered Style or Palette name.'}, {'type': 'object', 'properties': {'fill': {'enum': ['none', 'hachure', 'solid', 'wash'], 'type': 'string', 'description': 'Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.'}, 'font': {'type': 'string', 'description': 'Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'mono': {'type': 'boolean', 'description': 'Advisory monochrome contract: express tone through shading and weight.'}, 'name': {'type': 'string', 'description': 'Canonical look:name or palette:name identity; required only when registering a style.'}, 'blurb': {'type': 'string', 'description': 'Short human-readable description used by discovery surfaces.'}, 'roles': {'type': 'object', 'properties': {'bar': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 4, 'additionalProperties': False}, 'edge': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 8, 'additionalProperties': False}, 'node': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'task': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'actor': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'group': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}, 'headerFillColor': {'type': 'string', 'description': 'Group header surface paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 13, 'additionalProperties': False}, 'label': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 5, 'additionalProperties': False}, 'point': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 4, 'additionalProperties': False}, 'legend': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'series': {'type': 'object', 'properties': {'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 3, 'additionalProperties': False}, 'milestone': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'pie-slice': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'group-header': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'relationship': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 8, 'additionalProperties': False}}, 'description': 'Partial semantic SceneRole defaults. Family-authored styling remains authoritative.', 'additionalProperties': False}, 'bowing': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Rough.js line bowing.'}, 'colors': {'type': 'object', 'properties': {'bg': {'type': 'string', 'description': 'Diagram page background. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'fg': {'type': 'string', 'description': 'Primary text and foreground paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'line': {'type': 'string', 'description': 'Connector and secondary line paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'muted': {'type': 'string', 'description': 'Muted text and secondary data paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'accent': {'type': 'string', 'description': 'Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'border': {'type': 'string', 'description': 'Node and group border paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'surface': {'type': 'string', 'description': 'Node and group surface fill. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}}, 'description': 'Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.', 'maxProperties': 7, 'additionalProperties': False}, 'intent': {'enum': ['premium', 'draft', 'lofi'], 'type': 'string', 'description': 'Advisory intent metadata for pickers and quality tooling.'}, 'passes': {'type': 'integer', 'maximum': 8, 'minimum': 1, 'description': 'Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.'}, 'stroke': {'enum': ['crisp', 'jittered', 'freehand'], 'type': 'string', 'description': 'Stroke treatment; crisp is the default renderer.'}, '$schema': {'type': 'string', 'description': 'Optional JSON Schema pointer for file-backed styles; ignored while rendering.'}, 'backdrop': {'enum': ['plain', 'paper-ruled', 'grid'], 'type': 'string', 'description': 'Flat page furniture drawn behind the diagram.'}, 'bindings': {'type': 'array', 'items': {'type': 'object', 'required': ['channel', 'value', 'slot'], 'properties': {'role': {'enum': ['group-header', 'actor', 'relationship', 'pie-slice', 'legend', 'bar', 'series', 'point', 'task', 'milestone'], 'type': 'string'}, 'slot': {'not': {'enum': ['__proto__', 'constructor', 'prototype']}, 'type': 'string', 'pattern': '^[A-Za-z][A-Za-z0-9._-]{0,63}$'}, 'value': {'type': 'string', 'pattern': '^[^\\r\\n\\u0000]+$', 'maxLength': 256, 'minLength': 1}, 'channel': {'enum': ['category'], 'type': 'string'}}, 'maxProperties': 4, 'additionalProperties': False}, 'maxItems': 4096, 'description': 'Ordered equality bindings from authored/domain meaning to semantic slots.'}, 'washEdge': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Watercolor edge-darkening opacity; requires fill wash in the final stack.'}, 'roughness': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Rough.js stroke irregularity.'}, 'fillWeight': {'type': 'number', 'maximum': 20, 'description': 'Hachure line weight; requires fill hachure in the final stack.', 'exclusiveMinimum': 0}, 'hachureGap': {'type': 'number', 'maximum': 100, 'description': 'Gap between hachure lines; requires fill hachure in the final stack.', 'exclusiveMinimum': 0}, 'constraints': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['kind', 'action'], 'properties': {'kind': {'const': 'contrast'}, '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'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}, 'minimum': {'type': 'number', 'maximum': 21, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'maxFraction'], 'properties': {'kind': {'const': 'accent-area'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}, 'maxFraction': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'role'], 'properties': {'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'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}}, 'additionalProperties': False}]}, 'maxItems': 4096, 'description': 'Closed inspect-only brand constraints with warn or error actions.'}, 'strokeWidth': {'type': 'number', 'maximum': 20, 'description': 'Base stroke width in SVG user units.', 'exclusiveMinimum': 0}, 'washOpacity': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Watercolor glaze opacity; requires fill wash in the final stack.'}, 'hachureAngle': {'type': 'number', 'maximum': 360, 'minimum': -360, 'description': 'Hachure line angle in degrees; requires fill hachure in the final stack.'}, 'formatVersion': {'const': 1, 'description': 'Persisted wire-format version. Optional on input and normalized to 1 on output.'}, 'semanticSlots': {'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}$'}, 'additionalProperties': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}, 'headerFillColor': {'type': 'string', 'description': 'Group header surface paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 16, '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, 'additionalProperties': False}], 'x-agentic-mermaid-validation-expectation': 'a registered Style name or StyleSpec'}, {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'description': 'Registered Style or Palette name.'}, {'type': 'object', 'properties': {'fill': {'enum': ['none', 'hachure', 'solid', 'wash'], 'type': 'string', 'description': 'Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.'}, 'font': {'type': 'string', 'description': 'Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'mono': {'type': 'boolean', 'description': 'Advisory monochrome contract: express tone through shading and weight.'}, 'name': {'type': 'string', 'description': 'Canonical look:name or palette:name identity; required only when registering a style.'}, 'blurb': {'type': 'string', 'description': 'Short human-readable description used by discovery surfaces.'}, 'roles': {'type': 'object', 'properties': {'bar': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 4, 'additionalProperties': False}, 'edge': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 8, 'additionalProperties': False}, 'node': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'task': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'actor': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'group': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}, 'headerFillColor': {'type': 'string', 'description': 'Group header surface paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 13, 'additionalProperties': False}, 'label': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 5, 'additionalProperties': False}, 'point': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 4, 'additionalProperties': False}, 'legend': {'type': 'object', 'properties': {'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'series': {'type': 'object', 'properties': {'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 3, 'additionalProperties': False}, 'milestone': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'pie-slice': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 5, 'additionalProperties': False}, 'group-header': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 11, 'additionalProperties': False}, 'relationship': {'type': 'object', 'properties': {'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}}, 'maxProperties': 8, 'additionalProperties': False}}, 'description': 'Partial semantic SceneRole defaults. Family-authored styling remains authoritative.', 'additionalProperties': False}, 'bowing': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Rough.js line bowing.'}, 'colors': {'type': 'object', 'properties': {'bg': {'type': 'string', 'description': 'Diagram page background. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'fg': {'type': 'string', 'description': 'Primary text and foreground paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'line': {'type': 'string', 'description': 'Connector and secondary line paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'muted': {'type': 'string', 'description': 'Muted text and secondary data paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'accent': {'type': 'string', 'description': 'Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'border': {'type': 'string', 'description': 'Node and group border paint. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}, 'surface': {'type': 'string', 'description': 'Node and group surface fill. Must be a safe, non-fetching CSS color.', 'x-agentic-mermaid-runtime-validator': 'safeCssColor'}}, 'description': 'Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.', 'maxProperties': 7, 'additionalProperties': False}, 'intent': {'enum': ['premium', 'draft', 'lofi'], 'type': 'string', 'description': 'Advisory intent metadata for pickers and quality tooling.'}, 'passes': {'type': 'integer', 'maximum': 8, 'minimum': 1, 'description': 'Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.'}, 'stroke': {'enum': ['crisp', 'jittered', 'freehand'], 'type': 'string', 'description': 'Stroke treatment; crisp is the default renderer.'}, '$schema': {'type': 'string', 'description': 'Optional JSON Schema pointer for file-backed styles; ignored while rendering.'}, 'backdrop': {'enum': ['plain', 'paper-ruled', 'grid'], 'type': 'string', 'description': 'Flat page furniture drawn behind the diagram.'}, 'bindings': {'type': 'array', 'items': {'type': 'object', 'required': ['channel', 'value', 'slot'], 'properties': {'role': {'enum': ['group-header', 'actor', 'relationship', 'pie-slice', 'legend', 'bar', 'series', 'point', 'task', 'milestone'], 'type': 'string'}, 'slot': {'not': {'enum': ['__proto__', 'constructor', 'prototype']}, 'type': 'string', 'pattern': '^[A-Za-z][A-Za-z0-9._-]{0,63}$'}, 'value': {'type': 'string', 'pattern': '^[^\\r\\n\\u0000]+$', 'maxLength': 256, 'minLength': 1}, 'channel': {'enum': ['category'], 'type': 'string'}}, 'maxProperties': 4, 'additionalProperties': False}, 'maxItems': 4096, 'description': 'Ordered equality bindings from authored/domain meaning to semantic slots.'}, 'washEdge': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Watercolor edge-darkening opacity; requires fill wash in the final stack.'}, 'roughness': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Rough.js stroke irregularity.'}, 'fillWeight': {'type': 'number', 'maximum': 20, 'description': 'Hachure line weight; requires fill hachure in the final stack.', 'exclusiveMinimum': 0}, 'hachureGap': {'type': 'number', 'maximum': 100, 'description': 'Gap between hachure lines; requires fill hachure in the final stack.', 'exclusiveMinimum': 0}, 'constraints': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['kind', 'action'], 'properties': {'kind': {'const': 'contrast'}, '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'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}, 'minimum': {'type': 'number', 'maximum': 21, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'maxFraction'], 'properties': {'kind': {'const': 'accent-area'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}, 'maxFraction': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'action', 'role'], 'properties': {'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'}, 'action': {'enum': ['warn', 'error'], 'type': 'string'}}, 'additionalProperties': False}]}, 'maxItems': 4096, 'description': 'Closed inspect-only brand constraints with warn or error actions.'}, 'strokeWidth': {'type': 'number', 'maximum': 20, 'description': 'Base stroke width in SVG user units.', 'exclusiveMinimum': 0}, 'washOpacity': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Watercolor glaze opacity; requires fill wash in the final stack.'}, 'hachureAngle': {'type': 'number', 'maximum': 360, 'minimum': -360, 'description': 'Hachure line angle in degrees; requires fill hachure in the final stack.'}, 'formatVersion': {'const': 1, 'description': 'Persisted wire-format version. Optional on input and normalized to 1 on output.'}, 'semanticSlots': {'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}$'}, 'additionalProperties': {'type': 'object', 'properties': {'cue': {'enum': ['none', 'outline', 'double-line', 'pattern'], 'type': 'string', 'description': 'Non-color semantic cue on roles whose family renderer exposes a cue projection.'}, 'fontSize': {'type': 'number', 'maximum': 256, 'minimum': 1, 'description': 'Font size in SVG user units.'}, 'paddingX': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Horizontal role padding.'}, 'paddingY': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Vertical role padding.'}, 'fillColor': {'type': 'string', 'description': 'Surface fill paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'lineWidth': {'type': 'number', 'maximum': 20, 'description': 'Border or connector width.', 'exclusiveMinimum': 0}, 'textColor': {'type': 'string', 'description': 'Text paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'bendRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable connector bend radius.'}, 'fontFamily': {'type': 'string', 'description': 'Safe font family/stack for roles whose descriptor exposes family-specific typography.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'fontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'CSS numeric font weight.'}, 'borderColor': {'type': 'string', 'description': 'Border paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'strokeColor': {'type': 'string', 'description': 'Connector stroke paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}, 'cornerRadius': {'type': 'number', 'maximum': 256, 'minimum': 0, 'description': 'Applicable corner radius.'}, 'letterSpacing': {'type': 'number', 'maximum': 4, 'minimum': -2, 'description': 'Letter spacing in SVG user units.'}, 'textTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Text transformation.'}, 'headerFillColor': {'type': 'string', 'description': 'Group header surface paint.', 'x-agentic-mermaid-runtime-validator': 'safeStylePaint'}}, 'maxProperties': 16, '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, 'additionalProperties': False}], 'x-agentic-mermaid-validation-expectation': 'a registered Style name or StyleSpec'}, 'description': 'Style stack merged from left to right.'}], 'description': 'A registered name, inline StyleSpec, or left-to-right stack of either.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'styleInput'}, 'accent': {'type': 'string', 'description': 'Arrowhead, highlight, and data accent color.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'border': {'type': 'string', 'description': 'Node and group border color.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'shadow': {'type': 'boolean', 'default': False, 'description': 'Paint explicit drop shadows on node shapes.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'elevation projects to borders and labels', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart', 'state', 'sequence', 'timeline', 'class', 'er', 'journey', 'xychart', 'pie', 'quadrant', 'gantt', 'mindmap', 'gitgraph']}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Compact SVG serialization while preserving agent hooks.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'compact controls SVG serialization'}, 'journey': {'type': 'object', 'properties': {'experienceCurve': {'type': 'boolean', 'default': True, 'description': 'Connect journey score markers with an experience curve.'}}, 'description': 'User-journey graphical controls.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'experience curves are graphical-only', 'x-agentic-mermaid-applicable-builtin-families': ['journey']}, 'padding': {'type': 'number', 'default': 40, 'minimum': 0, 'description': 'Canvas padding in SVG user units.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output uses paddingX, paddingY, and boxBorderPadding', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart', 'state', 'architecture']}, 'surface': {'type': 'string', 'description': 'Node and group surface color.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'terminal cells do not paint graphical surfaces', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'idPrefix': {'type': 'string', 'pattern': '^[A-Za-z0-9_.:-]+$', 'description': 'Non-empty namespace for generated SVG definition IDs and local references.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output has no SVG definition ids'}, 'security': {'enum': ['default', 'strict'], 'type': 'string', 'default': 'default', 'description': 'Active SVG content is rejected in every mode; strict additionally rejects every external reference. Raw Mermaid themeCSS is rejected in both modes.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal text has its own control-character and HTML-color safety projection'}, 'timeline': {'type': 'object', 'properties': {'maxWidth': {'type': 'number', 'description': 'Best-effort width budget for horizontal timelines.', 'exclusiveMinimum': 0}}, 'description': 'Timeline layout controls.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output uses maxWidth or targetWidth', 'x-agentic-mermaid-applicable-builtin-families': ['timeline']}, 'ganttToday': {'type': 'string', 'description': 'Explicit deterministic date for the Gantt today marker.', 'x-agentic-mermaid-terminal': 'consumed', 'x-agentic-mermaid-applicable-builtin-families': ['gantt']}, 'interactive': {'type': 'boolean', 'default': False, 'description': 'Enable hover tooltips for supported chart data points.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'terminal output is a static semantic projection', 'x-agentic-mermaid-applicable-builtin-families': ['xychart', 'pie', 'quadrant']}, 'nodeSpacing': {'type': 'number', 'default': 24, 'minimum': 0, 'description': 'Horizontal spacing between sibling nodes.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal layout has a cell-grid spacing contract', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart', 'state', 'class', 'er', 'architecture']}, 'transparent': {'type': 'boolean', 'default': False, 'description': 'Omit the painted SVG canvas background.', 'x-agentic-mermaid-terminal': 'projected', 'x-agentic-mermaid-terminal-note': 'terminal output has no painted canvas background'}, 'architecture': {'type': 'object', 'properties': {'visual': {'type': 'object', 'properties': {'edgeText': {'type': 'string', 'description': 'Architecture connector-label color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'iconSize': {'type': 'number', 'description': 'Architecture group icon size.', 'exclusiveMinimum': 0}, 'groupFont': {'type': 'string', 'description': 'Architecture group-label font family.', 'x-agentic-mermaid-runtime-validator': 'safeCssFontFamily'}, 'groupText': {'type': 'string', 'description': 'Architecture group-label color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'edgeStroke': {'type': 'string', 'description': 'Architecture connector color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'groupBorder': {'type': 'string', 'description': 'Architecture group border color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'serviceText': {'type': 'string', 'description': 'Architecture service-label color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'edgeFontSize': {'type': 'number', 'description': 'Architecture connector-label font size.', 'exclusiveMinimum': 0}, 'groupSurface': {'type': 'string', 'description': 'Architecture group surface color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'edgeLineWidth': {'type': 'number', 'minimum': 0, 'description': 'Architecture connector width.'}, 'groupFontSize': {'type': 'number', 'description': 'Architecture group-label font size.', 'exclusiveMinimum': 0}, 'groupPaddingX': {'type': 'number', 'minimum': 0, 'description': 'Horizontal padding inside architecture groups.'}, 'groupPaddingY': {'type': 'number', 'minimum': 0, 'description': 'Vertical padding inside architecture groups.'}, 'serviceBorder': {'type': 'string', 'description': 'Architecture service border color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'edgeBendRadius': {'type': 'number', 'minimum': 0, 'description': 'Architecture connector bend radius.'}, 'edgeFontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'Architecture connector-label font weight.'}, 'groupLineWidth': {'type': 'number', 'minimum': 0, 'description': 'Architecture group border width.'}, 'serviceSurface': {'type': 'string', 'description': 'Architecture service surface color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'groupFontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'Architecture group-label font weight.'}, 'serviceFontSize': {'type': 'number', 'description': 'Architecture service-label font size.', 'exclusiveMinimum': 0}, 'serviceIconSize': {'type': 'number', 'description': 'Architecture service icon size.', 'exclusiveMinimum': 0}, 'servicePaddingX': {'type': 'number', 'minimum': 0, 'description': 'Horizontal padding inside architecture services.'}, 'servicePaddingY': {'type': 'number', 'minimum': 0, 'description': 'Vertical padding inside architecture services.'}, 'serviceLineWidth': {'type': 'number', 'minimum': 0, 'description': 'Architecture service border width.'}, 'edgeLetterSpacing': {'type': 'number', 'description': 'Architecture connector-label letter spacing.'}, 'edgeTextTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Architecture connector-label text transform.'}, 'groupCornerRadius': {'type': 'number', 'minimum': 0, 'description': 'Architecture group corner radius.'}, 'groupHeaderHeight': {'type': 'number', 'description': 'Architecture group-header height.', 'exclusiveMinimum': 0}, 'serviceFontWeight': {'type': 'number', 'maximum': 1000, 'minimum': 1, 'description': 'Architecture service-label font weight.'}, 'groupHeaderSurface': {'type': 'string', 'description': 'Architecture group-header surface color.', 'x-agentic-mermaid-runtime-validator': 'safeCssPaint'}, 'groupLabelPaddingX': {'type': 'number', 'minimum': 0, 'description': 'Horizontal padding around architecture group labels.'}, 'groupLetterSpacing': {'type': 'number', 'description': 'Architecture group-label letter spacing.'}, 'groupTextTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Architecture group-label text transform.'}, 'junctionInnerRadius': {'type': 'number', 'minimum': 0, 'description': 'Architecture junction inner radius.'}, 'junctionOuterRadius': {'type': 'number', 'description': 'Architecture junction outer radius.', 'exclusiveMinimum': 0}, 'serviceCornerRadius': {'type': 'number', 'minimum': 0, 'description': 'Architecture service corner radius.'}, 'serviceLetterSpacing': {'type': 'number', 'description': 'Architecture service-label letter spacing.'}, 'serviceTextTransform': {'enum': ['uppercase', 'lowercase', 'capitalize'], 'type': 'string', 'description': 'Architecture service-label text transform.'}}, 'description': 'Sparse architecture visual overrides merged over resolved defaults.', 'additionalProperties': False, 'x-agentic-mermaid-runtime-validator': 'architectureVisual'}}, 'description': 'Architecture renderer visual metric and paint overrides.', 'additionalProperties': False, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'this option configures graphical architecture rendering', 'x-agentic-mermaid-applicable-builtin-families': ['architecture']}, 'layerSpacing': {'type': 'number', 'default': 40, 'minimum': 0, 'description': 'Vertical spacing between graph layers.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal layout has a cell-grid spacing contract', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart', 'state', 'class', 'er', 'architecture']}, 'mermaidConfig': {'type': 'object', 'description': 'Mermaid-style recursive runtime configuration.', 'additionalProperties': {'$ref': '#/$defs/jsonValue'}, 'x-agentic-mermaid-terminal': 'consumed'}, 'wrappingWidth': {'type': 'number', 'description': 'Flowchart measured-label wrapping budget in pixels.', 'exclusiveMinimum': 0, 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output uses maxWidth or targetWidth', 'x-agentic-mermaid-applicable-builtin-families': ['flowchart']}, 'embedFontImport': {'type': 'boolean', 'default': False, 'description': 'Embed the Google Fonts import in SVG styles; PNG forces this off for offline rasterization.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal output embeds no web-font import'}, 'componentSpacing': {'type': 'number', 'minimum': 0, 'description': 'Spacing between disconnected graph components for compatible extension families; no built-in family currently consumes it.', 'x-agentic-mermaid-terminal': 'not-applicable', 'x-agentic-mermaid-terminal-note': 'terminal layout has a cell-grid spacing contract', 'x-agentic-mermaid-applicable-builtin-families': []}}, 'description': 'Shared advanced RenderOptions object. Styles accept a registered Look (crisp, hand-drawn, excalidraw, pen-and-ink, freehand, watercolor, blueprint, look:tufte, accessible-high-contrast, patent-drawing, status-dashboard, ops-schematic, chalkboard, risograph, architectural-plan, publication-figure), Palette (paper, dusk, zinc-light, zinc-dark, tokyo-night, tokyo-night-storm, tokyo-night-light, catppuccin-mocha, catppuccin-latte, nord, nord-light, dracula, github-light, github-dark, solarized-light, solarized-dark, one-dark, salmon, salmon-dark, tufte-dark), inline record, or left-to-right stack.', 'additionalProperties': False}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['source'], 'properties': {'source': {'type': 'string', 'description': 'Mermaid source.'}}, 'additionalProperties': False}
近期工具变更
类似的 MCP 服务器
GripForge
Generates, rigs, animates, analyzes, and packages game characters, weapons, armor, effects, environments, and engine-ready assets.
spriteship
Generates and manages 2D game characters, assets, animations, tilesets, UI packs, maps, and engine-ready exports for multiple gam…
Blixtworks
Offers pay-per-call utilities for text, image processing and analysis, data conversion, validation, web inspection, cryptography,…
Compose Preview Catalogs
Browses, renders, compares, audits, and edits Jetpack Compose preview catalogs and associated UI designs.
arch-tools-mcp
Provides general-purpose agent APIs for browser automation, web and PDF extraction, data conversion, email operations, fact check…
kernelcad
Authors, evaluates, reviews, simulates, edits, and exports parametric CAD assemblies and geometry from editable TypeScript-based …
floot
Creates, edits, previews, databases, and publishes full-stack web and mobile applications with hosted resources and deployment wo…
Raven
Supports coding agents with design audits, design-system guidance, and a configurable visual preference profile.