{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://swl-ses.dev/schemas/diary-entry.json",
  "title": "SWL Diary Entry",
  "description": "Diario estructurado por sesion. Captura logros, decisiones, challenges y aprendizajes clave en formato consumible por /swl:aprender.",
  "type": "object",
  "required": ["id", "sessionId", "date", "createdAt"],
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^diary-\\d{8}-[a-f0-9]+$",
      "description": "ID unico del diario: diary-YYYYMMDD-{hash}"
    },
    "sessionId": {
      "type": "string",
      "minLength": 1,
      "description": "ID de la sesion de Claude Code que origina el diario"
    },
    "agent": {
      "type": ["string", "null"],
      "description": "Agente principal de la sesion (si aplica)"
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Fecha de la sesion en formato YYYY-MM-DD"
    },
    "startTime": {
      "type": ["string", "null"],
      "format": "date-time",
      "description": "Inicio de la sesion en ISO 8601"
    },
    "endTime": {
      "type": ["string", "null"],
      "format": "date-time",
      "description": "Fin de la sesion en ISO 8601 (null si esta abierta)"
    },
    "accomplishments": {
      "type": "array",
      "maxItems": 20,
      "items": { "type": "string", "maxLength": 500 },
      "description": "Logros concretos de la sesion"
    },
    "decisions": {
      "type": "array",
      "maxItems": 20,
      "items": { "type": "string", "maxLength": 500 },
      "description": "Decisiones tomadas con su justificacion breve"
    },
    "challenges": {
      "type": "array",
      "maxItems": 20,
      "items": { "type": "string", "maxLength": 500 },
      "description": "Bloqueos o problemas encontrados"
    },
    "keyLearnings": {
      "type": "array",
      "maxItems": 20,
      "items": { "type": "string", "maxLength": 500 },
      "description": "Aprendizajes clave que alimentan APRENDIZAJES.md o instintos"
    },
    "tags": {
      "type": "array",
      "maxItems": 20,
      "items": { "type": "string", "maxLength": 500 },
      "description": "Etiquetas para clasificacion y busqueda"
    },
    "sourceAgents": {
      "type": "array",
      "uniqueItems": true,
      "items": { "type": "string" },
      "description": "Agentes que contribuyeron a la sesion (cross-agent enrichment)"
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp de creacion del diario"
    }
  }
}
