/**
 * slides/09-installation-1.js
 * ----------------------------------------------------------------------------
 * Slide 09 -- Installation: prerequisites + clone
 * Steps 1-2 of 5.
 */
'use strict';

const { helpers, layouts } = require('../../design-system');

function buildInstallPart1(pres, theme) {
  const slide = pres.addSlide();
  helpers.slideBase(slide, pres, theme);
  helpers.addHeader(slide, pres, theme, {
    eyebrow: 'STAGE 4',
    sectionNumber: 4,
    title: 'Установка (1/2): шаги 1-2',
  });

  helpers.addCodeBlock(slide, pres, theme, {
    x: 0.5, y: layouts.CONTENT_TOP, w: 5.5, h: 1.5,
    language: 'bash',
    code: [
      '# 1. prerequisites',
      'python --version    # >= 3.11',
      'node --version      # >= 20',
      'uv --version        # или pip',
      'docker --version    # для dev',
    ].join('\n'),
    filePath: 'INSTALLATION.md: step 1',
    startLine: 1,
  });

  helpers.addCodeBlock(slide, pres, theme, {
    x: 0.5, y: 3.1, w: 5.5, h: 1.75,
    language: 'bash',
    code: [
      '# 2. clone + install',
      'git clone https://github.com/',
      '    langchain-ai/open-swe.git',
      'cd open-swe',
      'uv sync     # или pip install -e .',
    ].join('\n'),
    filePath: 'INSTALLATION.md: step 2',
    startLine: 1,
  });

  helpers.addCallout(slide, pres, theme, {
    x: 6.2, y: layouts.CONTENT_TOP, w: 3.3, h: 1.55,
    kind: 'info',
    title: 'Не SaaS',
    text:
      'Open SWE -- не готовый сервис. ' +
      'После клонирования нужно ' +
      'поднять backend, UI, sandbox, ' +
      'GitHub App, LangSmith.',
  });

  helpers.addCallout(slide, pres, theme, {
    x: 6.2, y: 3.1, w: 3.3, h: 1.75,
    kind: 'warning',
    title: 'ENV-файл',
    text:
      'cp .env.example .env, затем ' +
      'заполните:\n' +
      '- GITHUB_APP_ID\n' +
      '- LANGSMITH_API_KEY\n' +
      '- DAYTONA_API_KEY',
  });

  helpers.addPageNumber(slide, pres, theme, 9);
  helpers.addSourceLine(slide, pres, theme, {
    source: 'github.com/langchain-ai/open-swe/blob/main/INSTALLATION.md',
  });
  return slide;
}

module.exports = { buildInstallPart1 };
