---
docgen:
  source: npm/skills/start-check/js/check.mjs
  crc: 1809127a
---

# check.mjs

## Огляд

Файл `n-cursor start-check scan|run` є частиною smoke-перевірки для скілу `n-start-check`. Він автоматично аналізує та запускає воркспейси, визначаючи тип стартового скрипта (сервер чи CLI) та перевіряючи успішність його виконання з обмеженням часу. Результати аналізу та запуску записуються у форматі JSON для подальшого аналізу та діагностики проблем.

## Поведінка

- `classifyStartType` визначає, чи є команда `start` CLI чи довгим процесом (сервером).
- `scanStartWorkspaces` сканує монорепо, визначаючи воркспейси з `start`, їхні команди та типи.
- `parseStartLog` витягує готовність, першу помилку та хвіст логу з процесу.
- `runWorkspaceStart` запускає команду `start` воркспейсу з grace-таймаутом, класифікує результат та повертає інформацію про процес.
- `runStartCheckCli` виконує `scan` або `run` воркспейсу, приймаючи аргументи командного рядка.

## Публічний API

- classifyStartType — Визначає, чи є команда `start` сервером або CLI.
- scanStartWorkspaces — Перевіряє монорепо на наявність команди `start` та її типу у кожному воркспейсі.
- parseStartLog — Аналізує лог процесу `start` для виявлення статусу, помилок та кінця.
- runWorkspaceStart — Запускає команду `start` у воркспейсі з обмеженим часом та визначає результат.
- runStartCheckCli — Запускає CLI для сканування воркспейсів з `start` та індивідуального запуску воркспейсу з подальшим виводом результатів у JSON.

## Гарантії поведінки

- Скрипт детерміновано виконує перевірку запуску воркспейса.
- Скрипт використовує `spawnSync` з таймаутом для запуску процесів.
- Скрипт інтерпретує exit-коди та парсить логи.
- Результат перевірки воркспейса представлений у форматі `[{workspace, name, hasStart, startCmd, type}]`.
- У разі невдачі перевірки, скрипт повертає `false` або `null`.
- Скрипт не кидає винятків.
- Скрипт не використовує кешування.
- Скрипт не взаємодіє з мережею.
- Результат запуску воркспейса представлений у форматі `{workspace, type, exitCode, timedOut, status, ready, firstError, logTail, sideEffects}`.
- `sideEffects` містить відкат стану воркспейса до його початкового стану перед запуском.
