{
  "buildCommand": "node site/fetch-translation-coverage.js && node site/build.js && node site/build-projects.js --strict && node site/build-agents.js && node site/build-manuals.js && node site/clean-urls.js && node site/version-assets.js",
  "outputDirectory": "site",
  "framework": null,
  "installCommand": "echo skip",
  "routes": [
    {
      "src": "/blogs(?:\\.html)?/",
      "status": 308,
      "headers": {
        "Location": "/blogs"
      }
    },
    {
      "src": "/blogs(?:\\.html)?",
      "methods": [
        "GET",
        "HEAD"
      ],
      "dest": "/api/blogs"
    },
    {
      "src": "/(blog|guides)/([a-z0-9][a-z0-9-]*)/?",
      "methods": [
        "GET",
        "HEAD"
      ],
      "dest": "/api/writing?path=/$1/$2/"
    },
    {
      "src": "/lesson\\.html",
      "methods": [
        "GET",
        "HEAD"
      ],
      "dest": "/api/lesson?legacy=1"
    },
    {
      "src": "/certification\\.html",
      "methods": [
        "GET",
        "HEAD"
      ],
      "dest": "/api/certification?legacy=1"
    },
    {
      "src": "/og/([a-z]+)/([a-z0-9][a-z0-9/-]*)\\.png",
      "methods": [
        "GET",
        "HEAD"
      ],
      "dest": "/api/og?type=$1&id=$2"
    },
    {
      "src": "/",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "dest": "/agent-pages/index.md"
    }
  ],
  "rewrites": [
    {
      "source": "/lesson",
      "destination": "/api/lesson"
    },
    {
      "source": "/certification",
      "destination": "/api/certification"
    },
    {
      "source": "/prereqs",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/prereqs.md"
    },
    {
      "source": "/prereqs",
      "destination": "/prereqs.html"
    },
    {
      "source": "/project",
      "destination": "/project.html"
    },
    {
      "source": "/about",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/about.md"
    },
    {
      "source": "/about",
      "destination": "/about.html"
    },
    {
      "source": "/inside-an-ai-agent",
      "destination": "/inside-an-ai-agent.html"
    },
    {
      "source": "/skills",
      "destination": "/skills.html"
    },
    {
      "source": "/catalog",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/catalog.md"
    },
    {
      "source": "/catalog",
      "destination": "/catalog.html"
    },
    {
      "source": "/glossary",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/glossary.md"
    },
    {
      "source": "/glossary",
      "destination": "/glossary.html"
    },
    {
      "source": "/glossary/:page([a-z0-9-]+)",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/glossary/:page.md"
    },
    {
      "source": "/glossary/:page([a-z0-9-]+)",
      "destination": "/hubs/glossary/:page.html"
    },
    {
      "source": "/phase/:page([a-z0-9-]+)",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/phase/:page.md"
    },
    {
      "source": "/phase/:page([a-z0-9-]+)",
      "destination": "/hubs/phase/:page.html"
    },
    {
      "source": "/path",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/prereqs.md"
    },
    {
      "source": "/path",
      "destination": "/prereqs.html"
    },
    {
      "source": "/roadmap",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/prereqs.md"
    },
    {
      "source": "/roadmap",
      "destination": "/prereqs.html"
    },
    {
      "source": "/developer",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/developer.md"
    },
    {
      "source": "/developer",
      "destination": "/developer.html"
    },
    {
      "source": "/docs",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/developer.md"
    },
    {
      "source": "/docs",
      "destination": "/developer.html"
    },
    {
      "source": "/contact",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/contact.md"
    },
    {
      "source": "/contact",
      "destination": "/contact.html"
    },
    {
      "source": "/privacy",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/privacy.md"
    },
    {
      "source": "/privacy",
      "destination": "/privacy.html"
    },
    {
      "source": "/sponsors",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/sponsors.md"
    },
    {
      "source": "/sponsors",
      "destination": "/sponsors.html"
    },
    {
      "source": "/assessment",
      "destination": "/assessment.html"
    },
    {
      "source": "/developers",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/developer.md"
    },
    {
      "source": "/developers",
      "destination": "/developer.html"
    },
    {
      "source": "/api",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/developer.md"
    },
    {
      "source": "/api",
      "destination": "/developer.html"
    },
    {
      "source": "/projects",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/projects.md"
    },
    {
      "source": "/projects",
      "destination": "/projects.html"
    },
    {
      "source": "/learning-paths",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/learning-paths.md"
    },
    {
      "source": "/learning-paths",
      "destination": "/learning-paths.html"
    },
    {
      "source": "/certifications",
      "has": [
        {
          "type": "header",
          "key": "accept",
          "value": "(?i).*text/markdown.*"
        }
      ],
      "destination": "/agent-pages/certifications.md"
    },
    {
      "source": "/certifications",
      "destination": "/certifications.html"
    },
    {
      "source": "/mcp",
      "destination": "/api/mcp"
    },
    {
      "source": "/.well-known/mcp.json",
      "destination": "/server.json"
    },
    {
      "source": "/api/openapi.json",
      "destination": "/openapi.json"
    },
    {
      "source": "/:page(manuals|manual-[a-z0-9-]+)",
      "destination": "/:page.html"
    },
    {
      "source": "/api/:missing*",
      "destination": "/api/not-found?api=1"
    }
  ],
  "headers": [
    {
      "source": "/(.*)\\.(png|jpg|jpeg|svg|webp|woff2|woff|ttf|ico)",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "public, max-age=86400, s-maxage=604800, stale-while-revalidate=2592000"
        }
      ]
    },
    {
      "source": "/(.*)\\.(css|js)",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "public, max-age=0, must-revalidate"
        }
      ]
    },
    {
      "source": "/certification-data.js",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "no-cache, must-revalidate"
        }
      ]
    },
    {
      "source": "/projects-data.js",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "no-cache, must-revalidate"
        }
      ]
    },
    {
      "source": "/build-meta.js",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "no-cache, must-revalidate"
        }
      ]
    },
    {
      "source": "/(.*)\\.html",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "public, max-age=0, must-revalidate"
        },
        {
          "key": "Vary",
          "value": "Accept, Accept-Encoding"
        }
      ]
    },
    {
      "source": "/",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "public, max-age=0, must-revalidate"
        },
        {
          "key": "Vary",
          "value": "Accept, Accept-Encoding"
        }
      ]
    },
    {
      "source": "/(blogs|glossary|catalog|certifications|certification|assessment|path|prereqs|roadmap|about|developer|docs|contact|privacy|sponsors|projects|project|learning-paths|developers|api|manuals|manual-[a-z0-9-]+)",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "public, max-age=0, must-revalidate"
        },
        {
          "key": "Vary",
          "value": "Accept, Accept-Encoding"
        }
      ]
    },
    {
      "source": "/(glossary|phase)/([a-z0-9-]+)",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "public, max-age=0, must-revalidate"
        },
        {
          "key": "Vary",
          "value": "Accept, Accept-Encoding"
        }
      ]
    },
    {
      "source": "/llms.txt",
      "headers": [
        {
          "key": "Content-Type",
          "value": "text/markdown; charset=utf-8"
        },
        {
          "key": "Vary",
          "value": "Accept, Accept-Encoding"
        },
        {
          "key": "Cache-Control",
          "value": "public, max-age=0, must-revalidate"
        }
      ]
    },
    {
      "source": "/developer.md",
      "headers": [
        {
          "key": "Content-Type",
          "value": "text/markdown; charset=utf-8"
        },
        {
          "key": "Cache-Control",
          "value": "public, max-age=0, must-revalidate"
        }
      ]
    },
    {
      "source": "/agent-pages/:page.md",
      "headers": [
        {
          "key": "Content-Type",
          "value": "text/markdown; charset=utf-8"
        },
        {
          "key": "Cache-Control",
          "value": "public, max-age=0, must-revalidate"
        }
      ]
    }
  ],
  "functions": {
    "api/lesson.js": {
      "maxDuration": 10,
      "includeFiles": "{site/lesson.html,site/lesson-seo.json,site/lesson-terms.json,site/lesson-markdown.js,languages.json,phases/*/*/docs/en.md,certifications/*/lessons/*/docs/en.md,lib/og-render.js,lib/og-fonts/*.json}"
    },
    "api/certification.js": {
      "maxDuration": 10,
      "includeFiles": "{site/certification.html,site/certification-seo.json,lib/og-render.js,lib/og-fonts/*.json}"
    },
    "api/og.js": {
      "maxDuration": 10,
      "includeFiles": "{site/lesson-seo.json,site/certification-seo.json,site/og-cards.json,site/anatomy/*.png,lib/og-render.js,lib/og-fonts/*.json}"
    },
    "api/markdown.js": {
      "maxDuration": 10,
      "includeFiles": "{site/*.html,site/agent-pages/*.md}",
      "excludeFiles": "site/**/*.js"
    },
    "api/v1/markdown.js": {
      "maxDuration": 10,
      "includeFiles": "{site/*.html,site/agent-pages/*.md}",
      "excludeFiles": "site/**/*.js"
    },
    "api/not-found.js": {
      "maxDuration": 10,
      "includeFiles": "site/404.html"
    },
    "api/mcp.js": {
      "maxDuration": 10,
      "includeFiles": "generated/agent-content.json"
    },
    "api/v1/catalog.js": {
      "maxDuration": 10,
      "includeFiles": "generated/agent-content.json"
    },
    "api/v1/resource.js": {
      "maxDuration": 10,
      "includeFiles": "generated/agent-content.json"
    },
    "api/blogs.js": {
      "maxDuration": 10,
      "includeFiles": "site/blogs.html"
    }
  },
  "trailingSlash": false,
  "redirects": [
    {
      "source": "/index.html",
      "destination": "/",
      "permanent": true
    },
    {
      "source": "/index",
      "destination": "/",
      "permanent": true
    },
    {
      "source": "/:page(about|catalog|glossary|prereqs|developer|contact|privacy|sponsors|projects|project|learning-paths|certifications|assessment|inside-an-ai-agent|skills).html",
      "destination": "/:page",
      "permanent": true
    },
    {
      "source": "/:page(manuals|manual-[a-z0-9-]+).html",
      "destination": "/:page",
      "permanent": true
    },
    {
      "source": "/hubs/glossary/:page([a-z0-9-]+).html",
      "destination": "/glossary/:page",
      "permanent": true
    },
    {
      "source": "/hubs/phase/:page([a-z0-9-]+).html",
      "destination": "/phase/:page",
      "permanent": true
    },
    {
      "source": "/phase",
      "destination": "/catalog",
      "permanent": false
    },
    {
      "source": "/project",
      "missing": [
        {
          "type": "query",
          "key": "id"
        }
      ],
      "destination": "/projects",
      "permanent": false
    }
  ]
}