IWE Update (агент-обновитель)
Роль: R6 Кодировщик. Один выход: обновлённый IWE + объяснение что изменилось. Триггер: «обнови IWE», «обновись»,
/iwe-update, или агент предлагает после обнаружения новой версии.
Алгоритм
0. Extensions before
bash .claude/scripts/load-extensions.sh iwe-update before
Код 0 → прочитать каждый путь из вывода в алфавитном порядке и выполнить
инструкции до превью. Код 1 → расширений нет, продолжить. Любой другой код или
ошибка обязательного шага расширения → обновление не начинать, показать
настоящую причину ошибки.
1. Превью (--check)
Запустить update.sh в режиме превью:
cd "$IWE_TEMPLATE" && bash update.sh --check 2>&1
Из вывода извлечь:
- Версию upstream (текущая vs новая)
- Список новых файлов
- Список обновлённых файлов
- Количество строк изменений
Если «Всё актуально» → сообщить пользователю и завершить.
2. CHANGELOG — что изменилось
CHANGELOG.md больше не доставляется локально (WP-401 Ф6.1) — читать по raw-URL:
curl -fsSL "https://raw.githubusercontent.com/TserenTserenov/FMT-exocortex-template/main/CHANGELOG.md"
Найти записи между текущей и новой версией.
Объяснить пользователю на человеческом языке:
- Что добавлено и зачем (не список файлов, а польза)
- Что изменилось в поведении (может ли сломать что-то)
- Что исправлено (баги, которые могли затрагивать пользователя)
Формат объяснения:
## Обновление IWE: v{old} → v{new}
**Что нового:**
- [1-3 пункта на языке пользователя, не разработчика]
**Что изменилось:**
- [поведение, которое может заметить пользователь]
**Исправления:**
- [если есть]
3. Анализ совместимости
Перед применением — проверить пользовательские кастомизации:
3a. Extensions:
ls extensions/*.md 2>/dev/null
Если есть extension-файлы → проверить, не конфликтуют ли новые extension points с существующими файлами.
3b. params.yaml:
Прочитать params.yaml. Если обновление добавляет новые параметры → сообщить пользователю:
«Появился новый параметр
X(default: Y). Хотите изменить?»
3c. CLAUDE.md:
Проверить, есть ли .claude.md.base:
- Есть → 3-way merge сработает автоматически
- Нет → предупредить: «Первое обновление после миграции. CLAUDE.md будет обновлён с сохранением USER-SPACE секции. Рекомендую проверить результат.»
4. Применение
Если пользователь одобрил (или --yes):
cd "$IWE_TEMPLATE" && bash update.sh --yes 2>&1
Из вывода извлечь результат:
- Сколько файлов обновлено
- Были ли конфликты 3-way merge
- Подстановка переменных прошла?
- Platform-space обновлён?
5. Пост-обновление
5a. Конфликты 3-way merge:
Если CLAUDE.md содержит маркеры <<<<<<< → помочь разрешить:
- Показать каждый конфликт
- Объяснить: «Платформа изменила X, а вы изменили Y. Что оставить?»
- Применить выбор пользователя
5b. Новые параметры: Если в обновлении появились новые параметры в params.yaml шаблона → предложить добавить в пользовательский params.yaml.
5c. Новые extension points: Если в обновлении появились новые extension points в протоколах → сообщить:
«Появились новые точки расширения: [список]. Вы можете создать файлы extensions/X.md для кастомизации.»
5d. Рекомендации: На основе кастомизаций пользователя (его extensions/, params.yaml, Pack) — предложить как использовать новые возможности.
5e. Extensions checks:
bash .claude/scripts/load-extensions.sh iwe-update checks
Код 0 → прочитать и выполнить каждый файл до итогового отчёта. Код 1 →
проверок нет. Любой другой код или провал проверки не откатывает уже применённые
файлы, но запрещает объявлять обновление полностью успешным: показать
«обновление применено, пользовательская проверка не прошла», точную причину,
путь упавшего extension и список уже выполненных checks-файлов. Remediation:
исправить или временно отключить именно этот extension, снова загрузить
iwe-update checks и повторить все проверки; до их успеха состояние называется
applied_with_failed_extension_check, а не успешным обновлением.
6. Отчёт
## Обновление завершено
**Версия:** v{old} → v{new}
**Файлов обновлено:** N
**Конфликтов:** 0 / N (разрешены)
**Новые возможности:** [краткий список]
Перезапустите Claude Code для применения обновлений memory/.
7. Extensions after
bash .claude/scripts/load-extensions.sh iwe-update after
Код 0 → прочитать и выполнить файлы после отчёта. Код 1 → расширений нет.
Ошибка after не отменяет уже применённое обновление, но обязательно выводится
отдельным предупреждением с именем расширения и причиной.
Автоматическое предложение обновления
При Day Open (шаг 5: IWE за ночь) — если update.sh --check показывает доступные обновления → добавить в «Требует внимания»:
«Доступно обновление IWE v{new}. Запустите
/iwe-updateдля обновления.»