import { defineConfig } from 'vitepress'
import { withMermaid } from 'vitepress-plugin-mermaid'

function normalizeBase(base?: string): string {
  if (!base || base === '/') {
    return '/'
  }

  return base.endsWith('/') ? base : `${base}/`
}

const docsBase = normalizeBase(process.env.DOCS_BASE || '/')
const editBranch = process.env.DOCS_EDIT_BRANCH || 'main'

export default withMermaid(
  defineConfig({
    title: 'MemPalace',
    description: 'Give your AI a memory. Local-first storage and retrieval for AI workflows, with benchmark results and MCP tooling.',
    base: docsBase,

    head: [
      ['link', { rel: 'icon', href: `${docsBase}mempalace_logo.png` }],
      ['link', { rel: 'preconnect', href: 'https://fonts.googleapis.com' }],
      ['link', { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' }],
      ['link', { href: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap', rel: 'stylesheet' }],
      ['meta', { property: 'og:title', content: 'MemPalace — AI Memory System' }],
      ['meta', { property: 'og:description', content: '96.6% LongMemEval recall. Zero API calls. Local, free, open source.' }],
      ['meta', { property: 'og:image', content: `${docsBase}mempalace_logo.png` }],
    ],

    themeConfig: {
      logo: '/mempalace_logo.png',
      siteTitle: 'MemPalace',

      nav: [
        { text: 'Guide', link: '/guide/getting-started' },
        { text: 'Concepts', link: '/concepts/the-palace' },
        { text: 'Reference', link: '/reference/cli' },
      ],

      sidebar: {
        '/guide/': [
          {
            text: 'Guide',
            items: [
              { text: 'Getting Started', link: '/guide/getting-started' },
              { text: 'Mining Your Data', link: '/guide/mining' },
              { text: 'Searching Memories', link: '/guide/searching' },
              { text: 'MCP Integration', link: '/guide/mcp-integration' },
              { text: 'Claude Code Plugin', link: '/guide/claude-code' },
              { text: 'Gemini CLI', link: '/guide/gemini-cli' },
              { text: 'OpenClaw Skill', link: '/guide/openclaw' },
              { text: 'Local Models', link: '/guide/local-models' },
              { text: 'Auto-Save Hooks', link: '/guide/hooks' },
              { text: 'Configuration', link: '/guide/configuration' },
            ],
          },
        ],
        '/concepts/': [
          {
            text: 'Concepts',
            items: [
              { text: 'The Palace', link: '/concepts/the-palace' },
              { text: 'Memory Stack', link: '/concepts/memory-stack' },
              { text: 'AAAK Dialect', link: '/concepts/aaak-dialect' },
              { text: 'Knowledge Graph', link: '/concepts/knowledge-graph' },
              { text: 'Specialist Agents', link: '/concepts/agents' },
              { text: 'Contradiction Detection', link: '/concepts/contradiction-detection' },
            ],
          },
        ],
        '/reference/': [
          {
            text: 'Reference',
            items: [
              { text: 'CLI Commands', link: '/reference/cli' },
              { text: 'MCP Tools', link: '/reference/mcp-tools' },
              { text: 'Python API', link: '/reference/python-api' },
              { text: 'API Reference', link: '/reference/api-reference' },
              { text: 'Module Map', link: '/reference/modules' },
              { text: 'Benchmarks', link: '/reference/benchmarks' },
              { text: 'Contributing', link: '/reference/contributing' },
            ],
          },
        ],
      },

      socialLinks: [
        { icon: 'github', link: 'https://github.com/MemPalace/mempalace' },
        { icon: 'discord', link: 'https://discord.com/invite/ycTQQCu6kn' },
      ],

      search: {
        provider: 'local',
      },

      footer: {
        message: 'Released under the MIT License.',
        copyright: 'Copyright © 2026 MemPalace contributors',
      },

      editLink: {
        pattern: `https://github.com/MemPalace/mempalace/edit/${editBranch}/website/:path`,
        text: 'Edit this page on GitHub',
      },
    },

    mermaid: {
      theme: 'dark',
    },
  })
)
