{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://agy-powerline.com/schema/v1.json",
  "title": "agy-powerline statusline.config.json",
  "description": "Config of the agy-powerline statusline for Google Antigravity CLI. https://agy-powerline.com/docs/configuration/",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "type": "string",
      "description": "This schema's URL, for editors."
    },
    "agyPowerline": {
      "type": "object",
      "description": "Written by npx agy-powerline export: the release that wrote the file.",
      "properties": {
        "version": {
          "type": "string"
        }
      }
    },
    "theme": {
      "description": "Theme id, or dark, light or colorblind.",
      "enum": [
        "dark-aurora",
        "dark-ocean",
        "dark-ember",
        "dark-forest",
        "dark-neon",
        "dark-mono",
        "dark-nocturne",
        "dark-onyx",
        "dark-metro",
        "dark-macchiato",
        "dark-nord",
        "dark-rose-pine",
        "light-paper",
        "light-sky",
        "light-sunset",
        "light-cream",
        "light-gruvbox",
        "light-tokyo-night",
        "colorblind-dark",
        "colorblind-light",
        "custom",
        "dark",
        "light",
        "colorblind"
      ]
    },
    "layout": {
      "description": "pills, lines or classic.",
      "enum": [
        "pills",
        "lines",
        "classic"
      ]
    },
    "emojis": {
      "type": "boolean",
      "description": "Show emoji icons (default true)."
    },
    "ascii": {
      "type": "boolean",
      "description": "Plain-text caps, separators and meters for terminals without a Nerd Font."
    },
    "color": {
      "description": "Color depth.",
      "enum": [
        "auto",
        "truecolor",
        "256",
        "none"
      ]
    },
    "pacing": {
      "type": "boolean",
      "description": "Show the quota pace marker (default true)."
    },
    "minimalist": {
      "type": "boolean",
      "description": "Values only, without icons or labels."
    },
    "rowGap": {
      "type": "boolean",
      "description": "A blank line between rows."
    },
    "log": {
      "type": "boolean",
      "description": "Keep the local problem log (default true)."
    },
    "meterStyle": {
      "description": "Meter style for every meter.",
      "enum": [
        "pips",
        "cells",
        "dots",
        "blocks",
        "shade",
        "line",
        "geometric",
        "squares",
        "braille",
        "bars",
        "rings",
        "ramp"
      ]
    },
    "gradient": {
      "type": "string",
      "description": "A gradient preset (aurora, sunset, ocean, forest, neon, candy, rainbow, mono), hex stops like #ff5f6d-#ffc371, or off."
    },
    "clock": {
      "type": "object",
      "additionalProperties": false,
      "description": "How times look, for the clock and the reset widgets.",
      "properties": {
        "hour12": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "true for 6:33pm, false for 18:33."
        },
        "timeZone": {
          "type": "string",
          "description": "An IANA time zone, such as Europe/Paris."
        },
        "locale": {
          "type": "string",
          "description": "A language tag, such as fr-FR."
        }
      }
    },
    "thresholds": {
      "type": "object",
      "additionalProperties": false,
      "description": "When quota and context widgets turn to the caution and danger colors.",
      "properties": {
        "quotaWarn": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Remaining quota % for the caution color (default 30)."
        },
        "quotaCrit": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Remaining quota % for the danger color (default 10)."
        },
        "contextWarn": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Used context % for the caution color (default 70)."
        },
        "contextCrit": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Used context % for the danger color (default 90)."
        },
        "blink": {
          "enum": [
            true,
            false,
            "warn"
          ],
          "description": "true blinks danger-level widgets; \"warn\" caution-level ones too."
        }
      }
    },
    "powerline": {
      "type": "object",
      "additionalProperties": false,
      "description": "Pills layout caps and separators.",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "separators": {
          "type": "array",
          "maxItems": 16,
          "items": {
            "type": "string",
            "description": "A code point in hex (E0B4) or one character."
          }
        },
        "separatorInvert": {
          "type": "array",
          "items": {
            "type": "boolean"
          }
        },
        "startCaps": {
          "type": "array",
          "maxItems": 16,
          "items": {
            "type": "string",
            "description": "A code point in hex (E0B4) or one character."
          }
        },
        "endCaps": {
          "type": "array",
          "maxItems": 16,
          "items": {
            "type": "string",
            "description": "A code point in hex (E0B4) or one character."
          }
        }
      }
    },
    "customTheme": {
      "type": "object",
      "description": "Colors of the \"custom\" theme.",
      "additionalProperties": false,
      "properties": {
        "text": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "track": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "model": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "fiveHour": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "weekly": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "thirdParty": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "context": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "git": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "gitDirty": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "meta": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "caution": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "warn": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "terminal": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        }
      }
    },
    "widgets": {
      "type": "array",
      "description": "The widgets, in order. https://agy-powerline.com/docs/configuration/#widgets",
      "items": {
        "$ref": "#/definitions/widget"
      }
    }
  },
  "definitions": {
    "widget": {
      "type": "object",
      "required": [
        "id"
      ],
      "additionalProperties": true,
      "properties": {
        "id": {
          "description": "Widget id.",
          "enum": [
            "model",
            "quota",
            "fiveHourPct",
            "fiveHourReset",
            "fiveHourBar",
            "weeklyPct",
            "weeklyReset",
            "weeklyBar",
            "thirdPartyFiveHour",
            "thirdPartyWeekly",
            "argonWeekly",
            "argonReset",
            "context",
            "contextPct",
            "contextTokens",
            "cwd",
            "project",
            "os",
            "host",
            "git",
            "gitChanges",
            "gitFiles",
            "gitSha",
            "gitStash",
            "gitWorktree",
            "plan",
            "agentState",
            "artifacts",
            "tasks",
            "mode",
            "title",
            "sessionTime",
            "ram",
            "version",
            "sandbox",
            "cacheRead",
            "cacheCreate",
            "cacheHit",
            "totalTokens",
            "clock",
            "tokensToday",
            "tokensWeek",
            "exec",
            "customText",
            "separator",
            "lineBreak"
          ]
        },
        "color": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "textColor": {
          "type": "string",
          "description": "A theme color slot (model, git, meta, caution...), a basic name (blue, green...), a hex color or rgb(r, g, b)."
        },
        "bold": {
          "type": "boolean"
        },
        "raw": {
          "type": "boolean",
          "description": "Value only, without icon or label."
        },
        "label": {
          "type": "string",
          "maxLength": 20,
          "description": "Your own name before the value."
        },
        "icon": {
          "type": "string",
          "description": "Your own icon: one emoji or up to two characters."
        },
        "maxWidth": {
          "type": "integer",
          "minimum": 4,
          "maximum": 200
        },
        "depth": {
          "type": "integer",
          "minimum": 1,
          "maximum": 10,
          "description": "cwd only."
        },
        "warn": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Caution level for this widget."
        },
        "crit": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Danger level for this widget."
        },
        "blink": {
          "enum": [
            true,
            false,
            "warn"
          ]
        },
        "showBelow": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Quota widgets: hide while more than this % is left."
        },
        "showAbove": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Context widgets: hide while less than this % is used."
        },
        "pace": {
          "type": "boolean",
          "description": "Quota meters: show the pace marker."
        },
        "meterStyle": {
          "enum": [
            "pips",
            "cells",
            "dots",
            "blocks",
            "shade",
            "line",
            "geometric",
            "squares",
            "braille",
            "bars",
            "rings",
            "ramp"
          ]
        },
        "format": {
          "enum": [
            "countdown",
            "time",
            "both"
          ],
          "description": "Reset widgets."
        },
        "short": {
          "type": "boolean",
          "description": "model: the short model name."
        },
        "split": {
          "type": "boolean",
          "description": "Token widgets: input and output apart."
        },
        "budget": {
          "type": "number",
          "minimum": 1,
          "description": "tokensToday / tokensWeek."
        },
        "text": {
          "type": "string",
          "description": "customText: the text to show."
        }
      }
    }
  }
}
