{
	"$schema": "http://json-schema.org/draft-07/schema#",
	"title": "Pi Coding Agent Theme",
	"description": "Theme schema for Pi coding agent",
	"type": "object",
	"required": ["name", "colors"],
	"properties": {
		"$schema": {
			"type": "string",
			"description": "JSON schema reference"
		},
		"name": {
			"type": "string",
			"description": "Theme name"
		},
		"vars": {
			"type": "object",
			"description": "Reusable color variables",
			"additionalProperties": {
				"oneOf": [
					{
						"type": "string",
						"description": "Hex color (#RRGGBB), variable reference, or empty string for terminal default"
					},
					{
						"type": "integer",
						"minimum": 0,
						"maximum": 255,
						"description": "256-color palette index (0-255)"
					}
				]
			}
		},
		"colors": {
			"type": "object",
			"description": "Theme color definitions (all required)",
			"required": [
				"accent",
				"border",
				"borderAccent",
				"borderMuted",
				"success",
				"error",
				"warning",
				"muted",
				"dim",
				"text",
				"thinkingText",
				"selectedBg",
				"userMessageBg",
				"userMessageText",
				"customMessageBg",
				"customMessageText",
				"customMessageLabel",
				"toolPendingBg",
				"toolSuccessBg",
				"toolErrorBg",
				"toolTitle",
				"toolOutput",
				"mdHeading",
				"mdLink",
				"mdLinkUrl",
				"mdCode",
				"mdCodeBlock",
				"mdCodeBlockBorder",
				"mdQuote",
				"mdQuoteBorder",
				"mdHr",
				"mdListBullet",
				"toolDiffAdded",
				"toolDiffRemoved",
				"toolDiffContext",
				"syntaxComment",
				"syntaxKeyword",
				"syntaxFunction",
				"syntaxVariable",
				"syntaxString",
				"syntaxNumber",
				"syntaxType",
				"syntaxOperator",
				"syntaxPunctuation",
				"thinkingOff",
				"thinkingMinimal",
				"thinkingLow",
				"thinkingMedium",
				"thinkingHigh",
				"thinkingXhigh",
				"bashMode"
			],
			"properties": {
				"accent": {
					"$ref": "#/$defs/colorValue",
					"description": "Primary accent color (logo, selected items, cursor)"
				},
				"border": {
					"$ref": "#/$defs/colorValue",
					"description": "Normal borders"
				},
				"borderAccent": {
					"$ref": "#/$defs/colorValue",
					"description": "Highlighted borders"
				},
				"borderMuted": {
					"$ref": "#/$defs/colorValue",
					"description": "Subtle borders"
				},
				"success": {
					"$ref": "#/$defs/colorValue",
					"description": "Success states"
				},
				"error": {
					"$ref": "#/$defs/colorValue",
					"description": "Error states"
				},
				"warning": {
					"$ref": "#/$defs/colorValue",
					"description": "Warning states"
				},
				"muted": {
					"$ref": "#/$defs/colorValue",
					"description": "Secondary/dimmed text"
				},
				"dim": {
					"$ref": "#/$defs/colorValue",
					"description": "Very dimmed text (more subtle than muted)"
				},
				"text": {
					"$ref": "#/$defs/colorValue",
					"description": "Default text color (usually empty string)"
				},
				"thinkingText": {
					"$ref": "#/$defs/colorValue",
					"description": "Thinking block text color"
				},
				"selectedBg": {
					"$ref": "#/$defs/colorValue",
					"description": "Selected item background"
				},
				"userMessageBg": {
					"$ref": "#/$defs/colorValue",
					"description": "User message background"
				},
				"userMessageText": {
					"$ref": "#/$defs/colorValue",
					"description": "User message text color"
				},
				"customMessageBg": {
					"$ref": "#/$defs/colorValue",
					"description": "Custom message background (hook-injected messages)"
				},
				"customMessageText": {
					"$ref": "#/$defs/colorValue",
					"description": "Custom message text color"
				},
				"customMessageLabel": {
					"$ref": "#/$defs/colorValue",
					"description": "Custom message type label color"
				},
				"toolPendingBg": {
					"$ref": "#/$defs/colorValue",
					"description": "Tool execution box (pending state)"
				},
				"toolSuccessBg": {
					"$ref": "#/$defs/colorValue",
					"description": "Tool execution box (success state)"
				},
				"toolErrorBg": {
					"$ref": "#/$defs/colorValue",
					"description": "Tool execution box (error state)"
				},
				"toolTitle": {
					"$ref": "#/$defs/colorValue",
					"description": "Tool execution box title color"
				},
				"toolOutput": {
					"$ref": "#/$defs/colorValue",
					"description": "Tool execution box output text color"
				},
				"mdHeading": {
					"$ref": "#/$defs/colorValue",
					"description": "Markdown heading text"
				},
				"mdLink": {
					"$ref": "#/$defs/colorValue",
					"description": "Markdown link text"
				},
				"mdLinkUrl": {
					"$ref": "#/$defs/colorValue",
					"description": "Markdown link URL"
				},
				"mdCode": {
					"$ref": "#/$defs/colorValue",
					"description": "Markdown inline code"
				},
				"mdCodeBlock": {
					"$ref": "#/$defs/colorValue",
					"description": "Markdown code block content"
				},
				"mdCodeBlockBorder": {
					"$ref": "#/$defs/colorValue",
					"description": "Markdown code block fences"
				},
				"mdQuote": {
					"$ref": "#/$defs/colorValue",
					"description": "Markdown blockquote text"
				},
				"mdQuoteBorder": {
					"$ref": "#/$defs/colorValue",
					"description": "Markdown blockquote border"
				},
				"mdHr": {
					"$ref": "#/$defs/colorValue",
					"description": "Markdown horizontal rule"
				},
				"mdListBullet": {
					"$ref": "#/$defs/colorValue",
					"description": "Markdown list bullets/numbers"
				},
				"toolDiffAdded": {
					"$ref": "#/$defs/colorValue",
					"description": "Added lines in tool diffs"
				},
				"toolDiffRemoved": {
					"$ref": "#/$defs/colorValue",
					"description": "Removed lines in tool diffs"
				},
				"toolDiffContext": {
					"$ref": "#/$defs/colorValue",
					"description": "Context lines in tool diffs"
				},
				"syntaxComment": {
					"$ref": "#/$defs/colorValue",
					"description": "Syntax highlighting: comments"
				},
				"syntaxKeyword": {
					"$ref": "#/$defs/colorValue",
					"description": "Syntax highlighting: keywords"
				},
				"syntaxFunction": {
					"$ref": "#/$defs/colorValue",
					"description": "Syntax highlighting: function names"
				},
				"syntaxVariable": {
					"$ref": "#/$defs/colorValue",
					"description": "Syntax highlighting: variable names"
				},
				"syntaxString": {
					"$ref": "#/$defs/colorValue",
					"description": "Syntax highlighting: string literals"
				},
				"syntaxNumber": {
					"$ref": "#/$defs/colorValue",
					"description": "Syntax highlighting: number literals"
				},
				"syntaxType": {
					"$ref": "#/$defs/colorValue",
					"description": "Syntax highlighting: type names"
				},
				"syntaxOperator": {
					"$ref": "#/$defs/colorValue",
					"description": "Syntax highlighting: operators"
				},
				"syntaxPunctuation": {
					"$ref": "#/$defs/colorValue",
					"description": "Syntax highlighting: punctuation"
				},
				"thinkingOff": {
					"$ref": "#/$defs/colorValue",
					"description": "Thinking level border: off"
				},
				"thinkingMinimal": {
					"$ref": "#/$defs/colorValue",
					"description": "Thinking level border: minimal"
				},
				"thinkingLow": {
					"$ref": "#/$defs/colorValue",
					"description": "Thinking level border: low"
				},
				"thinkingMedium": {
					"$ref": "#/$defs/colorValue",
					"description": "Thinking level border: medium"
				},
				"thinkingHigh": {
					"$ref": "#/$defs/colorValue",
					"description": "Thinking level border: high"
				},
				"thinkingXhigh": {
					"$ref": "#/$defs/colorValue",
					"description": "Thinking level border: xhigh (OpenAI codex-max only)"
				},
				"bashMode": {
					"$ref": "#/$defs/colorValue",
					"description": "Editor border color in bash mode"
				}
			},
			"additionalProperties": false
		},
		"export": {
			"type": "object",
			"description": "Optional colors for HTML export (defaults derived from userMessageBg if not specified)",
			"properties": {
				"pageBg": {
					"$ref": "#/$defs/colorValue",
					"description": "Page background color"
				},
				"cardBg": {
					"$ref": "#/$defs/colorValue",
					"description": "Card/container background color"
				},
				"infoBg": {
					"$ref": "#/$defs/colorValue",
					"description": "Info sections background (system prompt, notices)"
				}
			},
			"additionalProperties": false
		}
	},
	"additionalProperties": false,
	"$defs": {
		"colorValue": {
			"oneOf": [
				{
					"type": "string",
					"description": "Hex color (#RRGGBB), variable reference, or empty string for terminal default"
				},
				{
					"type": "integer",
					"minimum": 0,
					"maximum": 255,
					"description": "256-color palette index (0-255)"
				}
			]
		}
	}
}
