{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "AIOX Manifest Schema",
  "description": "Schema definitions for AIOX manifest CSV files",
  "version": "1.0.0",
  "definitions": {
    "agents": {
      "description": "Schema for agents.csv",
      "type": "object",
      "columns": [
        {
          "name": "id",
          "type": "string",
          "required": true,
          "description": "Unique agent identifier (e.g., dev, qa, architect)"
        },
        {
          "name": "name",
          "type": "string",
          "required": true,
          "description": "Display name of the agent (e.g., Dex, Quinn)"
        },
        {
          "name": "archetype",
          "type": "string",
          "required": true,
          "description": "Agent archetype (e.g., Builder, Tester, Architect)"
        },
        {
          "name": "icon",
          "type": "string",
          "required": true,
          "description": "Emoji icon for the agent"
        },
        {
          "name": "version",
          "type": "string",
          "required": true,
          "description": "Agent version (semver format)"
        },
        {
          "name": "status",
          "type": "string",
          "required": true,
          "enum": ["active", "deprecated", "experimental"],
          "description": "Agent status"
        },
        {
          "name": "file_path",
          "type": "string",
          "required": true,
          "description": "Relative path to agent definition file"
        },
        {
          "name": "when_to_use",
          "type": "string",
          "required": false,
          "description": "Description of when to use this agent"
        }
      ],
      "header": "id,name,archetype,icon,version,status,file_path,when_to_use"
    },
    "workers": {
      "description": "Schema for workers.csv",
      "type": "object",
      "columns": [
        {
          "name": "id",
          "type": "string",
          "required": true,
          "description": "Unique worker identifier"
        },
        {
          "name": "name",
          "type": "string",
          "required": true,
          "description": "Display name of the worker"
        },
        {
          "name": "category",
          "type": "string",
          "required": true,
          "description": "Worker category (task, script, template, etc.)"
        },
        {
          "name": "subcategory",
          "type": "string",
          "required": false,
          "description": "Worker subcategory"
        },
        {
          "name": "executor_types",
          "type": "string",
          "required": true,
          "description": "Comma-separated executor types (Worker, Agent)"
        },
        {
          "name": "tags",
          "type": "string",
          "required": false,
          "description": "Comma-separated tags"
        },
        {
          "name": "file_path",
          "type": "string",
          "required": true,
          "description": "Relative path to worker file"
        },
        {
          "name": "status",
          "type": "string",
          "required": true,
          "enum": ["active", "deprecated", "experimental"],
          "description": "Worker status"
        }
      ],
      "header": "id,name,category,subcategory,executor_types,tags,file_path,status"
    },
    "tasks": {
      "description": "Schema for tasks.csv",
      "type": "object",
      "columns": [
        {
          "name": "id",
          "type": "string",
          "required": true,
          "description": "Unique task identifier"
        },
        {
          "name": "name",
          "type": "string",
          "required": true,
          "description": "Display name of the task"
        },
        {
          "name": "category",
          "type": "string",
          "required": true,
          "description": "Task category"
        },
        {
          "name": "format",
          "type": "string",
          "required": true,
          "description": "Task format (TASK-FORMAT-V1, CHECKLIST, etc.)"
        },
        {
          "name": "has_elicitation",
          "type": "boolean",
          "required": true,
          "description": "Whether task requires user interaction"
        },
        {
          "name": "file_path",
          "type": "string",
          "required": true,
          "description": "Relative path to task file"
        },
        {
          "name": "status",
          "type": "string",
          "required": true,
          "enum": ["active", "deprecated", "experimental"],
          "description": "Task status"
        }
      ],
      "header": "id,name,category,format,has_elicitation,file_path,status"
    }
  },
  "validation": {
    "rules": [
      {
        "name": "unique_ids",
        "description": "All IDs must be unique within their manifest"
      },
      {
        "name": "file_exists",
        "description": "All file_path values must point to existing files"
      },
      {
        "name": "valid_status",
        "description": "Status must be one of: active, deprecated, experimental"
      },
      {
        "name": "required_columns",
        "description": "All required columns must have non-empty values"
      }
    ]
  }
}
