AACWorkflow Docs

Агент обновления зависимостей

Непрерывно сканируйте устаревшие npm-пакеты, уязвимости безопасности и критические изменения. Автоматически предлагайте PR с путями обновления и оценкой рисков.

Поддержание зависимостей в актуальном состоянии имеет решающее значение для безопасности и стабильности, но отслеживание вручную утомительно. Уведомления о безопасности, новые основные версии и обновления переходных зависимостей накапливаются быстро.

Агент обновления зависимостей отслеживает ваш реестр пакетов, обнаруживает уязвимости и устаревшие пакеты, оценивает безопасность обновления и открывает PR с четкими оценками риска.

Что делает агент

По еженедельному расписанию агент зависимостей:

  1. Сканирует зависимости — запускает npm audit, yarn audit или pnpm audit для поиска уязвимостей и устаревших пакетов
  2. Фильтрует по риску — разделяет обновления patch/minor от основных версий, которые могут вызвать проблемы
  3. Оценивает критические изменения — проверяет журналы изменений и выпуски GitHub на предмет критических изменений
  4. Тестирует обновления — запускает ваш набор тестов для обновленных зависимостей
  5. Предлагает PR — создает сгруппированные PR (один для плановых обновлений, один для безопасности, один на каждый основной bump) с резюме рисков
  6. Отслеживает оценки риска — включает серьезность CVE, скорость внедрения и стабильность выпуска в описание PR

Настройка

Предварительные условия

  • Рабочая область AACWorkflow с активным агентом
  • npm, yarn или pnpm настроены в вашем репозитории
  • CI/CD конвейер, который запускает тесты (GitHub Actions, Buildkite и т.д.)

Шаг 1: Создание агента обновления зависимостей

  1. Перейдите в Settings → Agents и нажмите New Agent
  2. Выберите ваш runtime и провайдер
  3. Назовите его dependency-bot или upgrade-manager
  4. Добавьте эту системную подсказку:
Role: Dependency update manager
Task: Weekly or on-demand:
1. Run npm/yarn/pnpm audit to find vulnerabilities and outdated packages
2. Separate findings:
   - Critical/high CVEs → immediate branch
   - Patch & minor updates → routine maintenance branch
   - Major version updates → per-package branches (evaluate breaking changes)
3. For each major update:
   - Check GitHub releases for breaking changes
   - Run full test suite with updated version
   - Report pass/fail and any deprecation warnings
4. Create GitHub branches and PRs grouped by risk tier
5. Add detailed PR description with:
   - Vulnerability CVE-IDs and severity (CVSS score if available)
   - Changelog highlights
   - Test results summary
   - "⚠️ This is a major version bump" flag for breaking updates

Example PR title format:
- "deps: security updates (npm audit)" → patch updates, no breaks
- "deps: urgent | CVE-2025-1234 (critical)" → security hot-fix
- "deps: major | react@19 + breaking changes" → major version bump

5. Auto-request code review from team (post in Slack/Teams)
6. Link PRs to AACWorkflow issues for tracking

Шаг 2: Планирование агента

Перейдите в Settings → Automations и создайте запланированную задачу:

  • Trigger: Еженедельно (например, четверг в 10:00)
  • Task: Назначьте dependency-bot агенту
  • Template: dependency-update

Или используйте cron-задачу:

# Каждый четверг в 10:00
0 10 * * 4 curl -X POST https://aacworkflow.com/api/tasks \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"agent_id": "dependency-bot", "title": "Weekly dependency scan"}'

Шаг 3: Настройка правил аудита

Добавьте .aacworkflow/dependency-config.yml:

dependency_audit:
  package_managers:
    - npm
    - pnpm
  auto_merge:
    enabled: true
    conditions:
      - type: patch
        only_if: all_tests_pass
      - type: minor
        only_if: all_tests_pass_and_no_deprecation_warnings
      - type: major
        only_if: manual_approval
  
  skip_packages:
    - react       # pin in package.json, don't auto-update
    - react-dom
    - expo        # mobile pinned
  
  priority:
    critical_cve: "auto-merge if tests pass"
    high_cve: "create PR, notify team"
    medium_cve: "batch with weekly update"
    patches: "batch with weekly update"

  notification:
    slack_channel: "#dependencies"
    mention_on_critical: "@security-team"

Примеры выходных PR

Плановое обновление (patch + minor)

Title: deps: routine updates (3 packages)

Body:

## Changes

- chalk 5.3.0 → 5.4.1 (patch)
- lodash-es 4.17.21 → 4.18.0 (minor)
- ts-node 10.9.1 → 10.9.2 (patch)

All changes are backwards compatible. Tests: ✅ PASS (1200 tests in 42s)

---
**Risk:** Low | No deprecation warnings | Routine maintenance
Merging this is safe.

Обновление безопасности (высокий CVE)

Title: deps: urgent | CVE-2025-1234 (high) in express

Body:

## Vulnerability

**express 4.18.0 → 4.19.5** (patch)

⚠️ **CVE-2025-1234** — Request header parsing DoS
- CVSS Score: 7.5 (High)
- Affected: express < 4.19.5
- Fix: Backport in patch release

https://nvd.nist.gov/vuln/detail/CVE-2025-1234

## Action

This is a security patch with no breaking changes.

Tests: ✅ PASS (1200 tests in 40s)
No deprecation warnings.

---
**Risk:** Low (security patch only)
✅ Safe to merge immediately. Recommend merging today.

Обновление основной версии (критическое изменение)

Title: deps: major | typescript@5.6 (from 5.5)

Body:

## Breaking Changes

**typescript 5.5.4 → 5.6.0** (major)

### Highlights
- Stricter null checking (new flag)
- Removed deprecated `ts.transpileOnly` option
- New `verbatimModuleSyntax` requirement for type imports

### Migration Required

Files needing updates:
- `tsconfig.json`: set `verbatimModuleSyntax: true`
- 3 files with bare `import type` → add `type` keyword

## Test Results

Typecheck: ⚠️ 12 errors (migration required) Unit tests: ⛔ FAIL (due to typecheck failures) E2E: ⛔ SKIP (blocked by typecheck)


This PR is in **DRAFT** mode. Required steps to merge:
1. Fix tsconfig.json
2. Update import statements
3. Re-run tests (target: all green)
4. Get code review from @backend-lead

---
**Risk:** Medium | Requires migration | Recommend 1–2 day sprint

Советы и лучшие практики

Разделяйте по риску. Группируйте плановые патчи, пакетные обновления безопасности и обрабатывайте основные версии как отдельные проекты. Не перегружайте команду одним PR из 50 файлов.

  • Тестируйте перед предложением — запустите полный набор тестов для обновленных зависимостей; открывайте PR только если тесты проходят или сбои явно предсуществуют
  • Переходные зависимости — используйте npm audit fix --audit-level=moderate для автоматического применения безопасных обновлений переходных зависимостей
  • Стратегия файла блокировки — зафиксируйте файлы блокировки; запустите тесты перед слиянием, чтобы поймать тонкие критические изменения
  • Безопасность в первую очередь — если существует критический CVE, откройте PR в тот же день; не пакетируйте с плановыми обновлениями
  • Предупреждения об устаревании — захватите выходные данные устаревания npm list в PR; спланируйте сроки удаления
  • Уведомления команды — публикуйте PR с высокой серьезностью в Slack/Teams сразу; не ждите еженедельного дайджеста

Связанные руководства

  • CI Triage Agent — если обновление зависимостей нарушает тесты, агент CI поможет триажу
  • Release Notes Agent — включите обновления зависимостей в примечания к выпуску