{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://agent-emblem.vercel.app/api/configuration.schema.json",
  "title": "AgentEmblem snippet configuration",
  "description": "Inputs for the website's code generator. These are sandbox defaults and bounds, not a replacement for the full React prop types.",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "preset": {
      "type": "string",
      "enum": [
        "circle",
        "square",
        "spark",
        "cursor"
      ],
      "default": "circle"
    },
    "state": {
      "type": "string",
      "enum": [
        "idle",
        "thinking",
        "loading",
        "composing",
        "talking",
        "researching",
        "listening"
      ],
      "default": "thinking"
    },
    "size": {
      "type": "integer",
      "minimum": 16,
      "maximum": 240,
      "default": 24
    },
    "showText": {
      "type": "boolean",
      "default": true,
      "description": "Use AgentEmblemThinking instead of the mark-only AgentEmblem."
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160
    },
    "source": {
      "type": "string",
      "minLength": 1,
      "maxLength": 40000,
      "description": "Optional SVG string or image URL, emitted as a literal. No asset is fetched by the generator."
    },
    "color": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$"
    },
    "colorMode": {
      "type": "string",
      "enum": [
        "system",
        "light",
        "dark"
      ],
      "default": "system"
    },
    "shape": {
      "type": "string",
      "enum": [
        "circle",
        "square",
        "diamond",
        "plus"
      ]
    },
    "thinkingStyle": {
      "type": "string",
      "enum": [
        "trace",
        "bounce"
      ]
    },
    "markScale": {
      "type": "number",
      "minimum": 0.5,
      "maximum": 1
    },
    "particleCount": {
      "type": "integer",
      "minimum": 1,
      "maximum": 4096
    },
    "particleUniformity": {
      "type": "number",
      "minimum": 0,
      "maximum": 1
    },
    "particlePositionUniformity": {
      "type": "number",
      "minimum": 0,
      "maximum": 1
    },
    "animateVisibility": {
      "type": "boolean",
      "default": true
    },
    "animateMotion": {
      "type": "boolean",
      "default": true
    }
  }
}
