@gian-tiaga/eda 3.11.0 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/MIGRATION.md CHANGED
@@ -91,6 +91,7 @@ docs/
91
91
  - **У `eda-review` есть режим исполнения.** `review.execution` принимает `subagents` или `main`; default `subagents` сохраняет прежнее поведение. Безусловный Claude `context: fork` удалён, поэтому `main` не создаёт отдельного агента для ревью.
92
92
  - **У `eda-orhestra` появился режим исполнения.** `orhestra.execution` принимает `subagents`, `main` или `main_propagated`; default `subagents` сохраняет прежнее поведение. `main` выполняет верхние этапы текущим агентом, а `main_propagated` дополнительно передаёт `main` совместимым execute/review-этапам.
93
93
  - **У `eda-polish` больше нет порога.** Цикл завершается только при нуле находок и останавливается досрочно, если за круг число открытых находок не сократилось. Аргумент вида `args: "threshold 90 limit 2"` в шаге оркестратора `eda update` приводит к виду `args: "limit 2"`.
94
+ - **У `eda-polish` появилась своя настройка исполнения.** `polish.execution` принимает `subagents` или `main`; default `subagents`. Раньше цикл полировки брал режим из `review.execution`, поэтому в проекте с `review.execution: main` `eda-polish` тоже работал без субагентов. После обновления эти настройки независимы: `review.execution` задаёт только раскладку проверок внутри `eda-review`, а прежнее поведение возвращает `polish.execution: main`.
94
95
  - **Формат ревью дополнен.** У каждой находки появилось поле `repro` — чем проблема воспроизводится, — а в отчёт добавлен раздел «Отклонено» с причинами отклонения. `eda-fix-by-review` может отклонить находку, но только фактически неверную и с обоснованием в отчёте. Старые файлы ревью читаются как есть.
95
96
 
96
97
  ## Проверка миграции
package/README.md CHANGED
@@ -57,7 +57,7 @@ eda update-all ~/Code
57
57
  | `eda-review` | Оркестрирует отдельные read-only проверки корректности, архитектуры, правил, references, business-правил, плана, качества, тестов, безопасности, производительности, frontend/UI/UX, API, БД, документации и предыдущих ревью. Сохраняет только доказанные дефекты, которые обязательно исправить; косметические и спекулятивные предложения отбрасывает. Любая находка даёт `changes-required`, а чистое ревью — `clean` и 100/100. Без аргументов ревьюит `git diff HEAD` | `docs/artifacts/reviews/` |
58
58
  | `eda-fix-by-review` | Применяет все находки из ревью с учётом правил, архитектуры и применимых карточек. Спрашивает только при неоднозначности, конфликте, расширении scope или рискованном действии. В конце ссылается на отчёт прямо в файле ревью | `docs/artifacts/review-fixes/` |
59
59
  | `eda-manual-test` | Делает ручную проверку после изменений. По умолчанию проверка полная: разбирает план или другой артефакт по разделам, дополняет его фактическим `git diff HEAD` и закрывает матрицу областей — API, база данных, консольные команды, интерфейс, алгоритмы, фон и интеграции, права и роли, конфигурация, логи, регрессии рядом. Область нельзя закрыть чтением кода или зелёными автотестами; незакрытая область даёт `blocked`. Быстрый smoke включается настройкой `manual-test.depth` или словом в запросе. Применимая business-карточка может добавить только относящийся к задаче инвариант или сценарий. Не правит код, не пишет автотесты и не коммитит | `docs/artifacts/manual-tests/` |
60
- | `eda-polish` | Оркестрирует доводку изменений: запускает полное `eda-review`, затем `eda-fix-by-review` и повторяет цикл до `clean` и отсутствия находок либо до лимита 5 итераций. В `main` оба контракта выполняет основной агент без субагентов, в `subagents` каждый шаг получает отдельный изолированный контекст. Все находки исправляются, score остаётся справочным. Не коммитит | `docs/artifacts/reviews/`, `docs/artifacts/review-fixes/` |
60
+ | `eda-polish` | Оркестрирует доводку изменений: запускает полное `eda-review`, затем `eda-fix-by-review` и повторяет цикл до `clean` и отсутствия находок либо до лимита 5 итераций. Режим цикла задаёт `polish.execution`: в `main` оба контракта выполняет основной агент без субагентов, в `subagents` каждый шаг получает отдельный изолированный контекст. Все находки исправляются, score остаётся справочным. Не коммитит | `docs/artifacts/reviews/`, `docs/artifacts/review-fixes/` |
61
61
  | `eda-send-review` | На `sonnet` / `gpt-5.6-terra` отправляет ревью на GitHub PR через `gh` всегда в едином формате: общий комментарий-сводка плюс комментарии к строкам кода. Без явно указанного типа использует `comment`; `approve` и `request-changes` берёт только из контекста текущего вызова. По настройке может скрыть предыдущие сводки eda-send-review и зарезолвить их inline-треды. По умолчанию шлёт все пункты. Claude-модель закрепляется при установке; Codex-модель хранится как рекомендуемый будущий override | (комментарий в PR) |
62
62
  | `eda-commit` | Работает как лёгкий оркестратор одного `sonnet` / `gpt-5.6-terra` агента: тот сам собирает git-контекст, пишет сообщения и тексты PR по исходному запросу и фактическим изменениям, точечно коммитит и выполняет явно заданные push/PR/merge-действия. Агент экономит время: собирает контекст одним вызовом, не читает кодовую базу и документацию целиком, вместо полного diff берёт сводку `--stat` и дочитывает только неясные файлы, а смысл работы берёт из свежих артефактов `docs/artifacts/**`, если они есть в составе изменений. Весь состав идёт одним коммитом; на несколько логически цельных коммитов он делится только по явной просьбе (`split`, «раздели», «отдельными коммитами») или при явно раздельном scope. Для PR использует шаблон репозитория, отражает все группы изменений и указывает только реально выполненные проверки. С явным контекстом охватывает указанный состав; без контекста коммитит всё — все tracked-изменения и все untracked-файлы независимо от авторства и связи с текущей задачей, кроме очевидных кэшей и локальных служебных артефактов вроде `.DS_Store`. В Claude Code сам оркестратор закреплён за `sonnet`; в Codex остаётся на активной модели сессии из-за отсутствия per-skill override. При вероятном секрете агент блокируется до индексации затронутой группы. После любого push всегда возвращает ссылку — на существующий PR или на его создание — и спрашивает, создавать ли PR, если его нет. Если продолжение не задано, предлагает применимые варианты | (git, опционально GitHub PR) |
63
63
  | `eda-worktree` | На `haiku` / `gpt-5.6-luna` создаёт через пакетного агента git worktree рядом с основным проектом в папке `{name}-work-{n}` и одноимённую ветку. Базу берёт из аргумента или спрашивает | соседняя папка `{name}-work-{n}` |
@@ -143,6 +143,7 @@ eda update-all ~/Code
143
143
  | `eda-plan-execute` | `subagents` / `main` / `auto` | Разово меняет, где выполняются фазы, поверх `plan-execute.mode` | `main` для обязательного выполнения основным агентом, `subagents` для изолированных фаз, `auto` для выбора по размеру плана |
144
144
  | `eda-plan-polish` | `threshold N`, `limit N` | Меняет gate и максимальное число итераций «проверка + исправление» | Для доводки ответственных планов перед `eda-plan-execute` |
145
145
  | `eda-manual-test` | `full` / `полная проверка`, `smoke` / `быстро` | Разово меняет глубину ручной проверки поверх `manual-test.depth` | `smoke` для короткой правки, `full` — когда нужно закрыть все области после плана |
146
+ | `eda-polish` | `subagents` / `main`, `limit N` | Разово меняет способ выполнения review и исправлений поверх `polish.execution` и число итераций | `subagents` держит каждый шаг в чистом контексте, `main` экономит контекст на мелкой доводке |
146
147
  | `eda-review` | `subagents` / `main` | Разово меняет способ выполнения выбранных проверок поверх `review.execution` | `main` экономит контекст на частых локальных ревью; `subagents` сохраняет независимость ролей для ответственных изменений |
147
148
 
148
149
  ---
@@ -245,6 +246,11 @@ plan-execute:
245
246
  # subagents — каждая фаза в отдельном субагенте, main — весь план одним контекстом, auto — решает по плану.
246
247
  mode: auto
247
248
 
249
+ polish:
250
+ # Где eda-polish выполняет review и исправления цикла полировки.
251
+ # subagents — каждое review и каждое исправление в отдельном изолированном субагенте, main — оба контракта основным агентом.
252
+ execution: subagents
253
+
248
254
  manual-test:
249
255
  # Глубина ручной проверки в eda-manual-test.
250
256
  # full — закрыть все применимые области: API, база, консольные команды, интерфейс, алгоритмы, фон, права, конфигурацию, логи и регрессии рядом.
@@ -404,6 +410,7 @@ discover-automations:
404
410
  - `plan-review.threshold` — доля закрытых пунктов чек-листа для статуса `ready`, default `100`. Отдельных агентов у `plan-review` больше нет: проверку целиком делает один субагент.
405
411
  - `plan-polish.limit` — максимальное число итераций «проверка + исправление»; default `1`. Отдельного подтверждающего прохода нет: исправление проверяет ревью следующей итерации. Цикл останавливается раньше, если score перестал расти.
406
412
  - `plan-execute.mode` — где `eda-plan-execute` выполняет фазы: `subagents` — каждая фаза в отдельном изолированном субагенте с независимой проверкой, `main` — весь план одним контекстом без субагентов, `auto` — выбор по плану; default `auto`. Явный режим в вызове имеет приоритет.
413
+ - `polish.execution` — где `eda-polish` выполняет review и исправления своего цикла: `subagents` — каждый шаг в отдельном изолированном субагенте, `main` — оба контракта основным агентом; default `subagents`. Настройка независима от `review.execution`, которая задаёт только раскладку проверок внутри `eda-review`. Явный режим в вызове и `main` от `eda-orhestra` в `main_propagated` имеют приоритет.
407
414
  - `manual-test.depth` — глубина ручной проверки в `eda-manual-test`: `full` — закрыть все применимые области матрицы покрытия, `smoke` — только запуск и основной сценарий изменённой области, `ask_each_time` — спрашивать каждый раз; default `full`. Явная глубина в вызове имеет приоритет.
408
415
  - `review.execution` — где выполняются проверки `eda-review`: `subagents` запускает отдельные специализированные роли, `main` выполняет те же выбранные проверки основным агентом без субагентов и с однократной загрузкой общего контекста; default `subagents`. Явный режим в вызове имеет приоритет.
409
416
  - `review.agents.<check>.mode` — запускать проверку всегда, автоматически по контексту или отключить.
package/lib/install.js CHANGED
@@ -278,6 +278,9 @@ const DEFAULT_SETTINGS = {
278
278
  planExecute: {
279
279
  mode: 'auto'
280
280
  },
281
+ polish: {
282
+ execution: 'subagents'
283
+ },
281
284
  manualTest: {
282
285
  depth: 'full'
283
286
  },
@@ -300,6 +303,7 @@ const SETTINGS_SECTION_NAMES = [
300
303
  'plan-review',
301
304
  'plan-polish',
302
305
  'plan-execute',
306
+ 'polish',
303
307
  'manual-test',
304
308
  'review',
305
309
  'send-review',
@@ -402,6 +406,16 @@ const PLAN_EXECUTE_MODE_CHOICES = [
402
406
  name: 'Выполнять весь план основным агентом без субагентов'
403
407
  }
404
408
  ];
409
+ const POLISH_EXECUTION_CHOICES = [
410
+ {
411
+ value: 'subagents',
412
+ name: 'Каждое review и исправление выполнять отдельным изолированным субагентом'
413
+ },
414
+ {
415
+ value: 'main',
416
+ name: 'Review и исправления выполнять основным агентом без субагентов'
417
+ }
418
+ ];
405
419
  const PLAN_SIZE_CHOICES = [
406
420
  {
407
421
  value: 'normal',
@@ -788,6 +802,7 @@ export async function askSettings({
788
802
  ['plan-review', 'planReview.threshold', settings.planReview, 'threshold', 'Какой порог готовности использовать в eda-plan-review?', PLAN_REVIEW_THRESHOLD_CHOICES],
789
803
  ['plan-polish', 'planPolish.limit', settings.planPolish, 'limit', 'Сколько итераций «проверка + исправление» разрешить eda-plan-polish?', PLAN_POLISH_LIMIT_CHOICES],
790
804
  ['plan-execute', 'planExecute.mode', settings.planExecute, 'mode', 'Как eda-plan-execute должен выполнять фазы по умолчанию?', PLAN_EXECUTE_MODE_CHOICES],
805
+ ['polish', 'polish.execution', settings.polish, 'execution', 'Как eda-polish должен выполнять review и исправления по умолчанию?', POLISH_EXECUTION_CHOICES],
791
806
  ['manual-test', 'manualTest.depth', settings.manualTest, 'depth', 'Какую глубину ручной проверки использовать в eda-manual-test по умолчанию?', MANUAL_TEST_DEPTH_CHOICES],
792
807
  ['review', 'review.execution', settings.review, 'execution', 'Как eda-review должен выполнять проверки по умолчанию?', REVIEW_EXECUTION_CHOICES]
793
808
  ];
@@ -1268,6 +1283,14 @@ function migrateSettingsContent(content) {
1268
1283
  value => { settings.planExecute.mode = value; }
1269
1284
  );
1270
1285
 
1286
+ const polish = objectValue(raw.polish);
1287
+ transfer(
1288
+ 'polish.execution',
1289
+ normalizeExecutionValue('polish.execution', polish.execution, { single: 'main' }),
1290
+ oneOf(['subagents', 'main']),
1291
+ value => { settings.polish.execution = value; }
1292
+ );
1293
+
1271
1294
  const manualTest = objectValue(raw['manual-test']);
1272
1295
  transfer(
1273
1296
  'manualTest.depth',
@@ -1510,6 +1533,11 @@ plan-execute:
1510
1533
  # subagents — каждая фаза в отдельном субагенте, main — весь план одним контекстом, auto — решает по плану.
1511
1534
  mode: ${settings.planExecute.mode}
1512
1535
 
1536
+ polish:
1537
+ # Где eda-polish выполняет review и исправления цикла полировки.
1538
+ # subagents — каждое review и каждое исправление в отдельном изолированном субагенте, main — оба контракта основным агентом.
1539
+ execution: ${settings.polish.execution ?? 'subagents'}
1540
+
1513
1541
  manual-test:
1514
1542
  # Глубина ручной проверки в eda-manual-test.
1515
1543
  # full — закрыть все применимые области: API, база, консольные команды, интерфейс, алгоритмы, фон, права, конфигурацию, логи и регрессии рядом.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gian-tiaga/eda",
3
- "version": "3.11.0",
3
+ "version": "3.12.0",
4
4
  "description": "Пакет скилов и специализированных агентов eda-* для Claude Code и Codex CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -9,13 +9,13 @@ description: 'Итеративно ревьюит и исправляет изм
9
9
 
10
10
  ## Вход из сообщения пользователя
11
11
 
12
- Текст рядом с вызовом скилла в текущем сообщении — главный вход. Разбери target, путь к плану, PR/ветку/diff/файл, лимит итераций, ограничения и режим `subagents` или `main`. Явный режим важнее `review.execution` из полного `docs/settings.yaml` версии 3; при отсутствии валидного значения используй `subagents`. Передавай выбранный режим и overrides проверок и моделей в каждый `eda-review`.
12
+ Текст рядом с вызовом скилла в текущем сообщении — главный вход. Разбери target, путь к плану, PR/ветку/diff/файл, лимит итераций, ограничения и режим `subagents` или `main`. Явный режим важнее `polish.execution` из полного `docs/settings.yaml` версии 3; при отсутствующем файле, другой версии или невалидном значении используй `subagents` и добавь предупреждение. `review.execution` режимом цикла не управляет: в `main` передавай `main` каждому `eda-review`, в `subagents` режим его проверок не навязывай — ревью прочитает `review.execution` само. Overrides проверок и моделей передавай в каждый `eda-review`.
13
13
 
14
14
  Лимит по умолчанию — `5` итераций; пользователь может задать `limit N` положительным целым числом. Порога у цикла нет: устаревшие `threshold N`, `до 90` и `цель 90` не применяй и скажи об этом в финале.
15
15
 
16
16
  ## Правила
17
17
 
18
- Зафиксируй режим и его источник до первой итерации. Выбор из вызова, override оркестратора или `review.execution` обязателен на весь цикл: большой diff, число проверок и нехватка контекста не разрешают переход к субагентам. Сохраняй режим и прогресс после сжатия контекста; если продолжить технически невозможно, верни конкретный блокер без смены режима. Менять режим можно только по новому прямому указанию пользователя.
18
+ Зафиксируй режим и его источник до первой итерации. Выбор из вызова, override оркестратора или `polish.execution` обязателен на весь цикл: большой diff, число проверок и нехватка контекста не разрешают переход к субагентам. Сохраняй режим и прогресс после сжатия контекста; если продолжить технически невозможно, верни конкретный блокер без смены режима. Менять режим можно только по новому прямому указанию пользователя.
19
19
 
20
20
  1. В `main` основной агент сам выполняет установленные контракты `eda-review` и `eda-fix-by-review` в текущем контексте. Не запускай для них верхнеуровневых или leaf-субагентов и не заменяй их отдельным CLI.
21
21
  2. В `subagents` каждый вызов `eda-review` и `eda-fix-by-review` запускай отдельным изолированным субагентом. В Claude Code используй `Agent`, в Codex — `spawn_agent` с `fork_turns: "none"`; не оставляй `fork_turns` по умолчанию и не используй `"all"`. Если нативные субагенты недоступны, остановись без CLI-fallback.
@@ -52,7 +52,6 @@ description: 'Итеративно ревьюит и исправляет изм
52
52
  ```text
53
53
  Используй eda-review для <TARGET_CONTEXT>.
54
54
  План: <PLAN_FILE | none>.
55
- Режим исполнения review: <$EXECUTION: main | subagents>.
56
55
  Overrides проверок и моделей: <из запроса | none>.
57
56
  Ранее отклонённые находки: <предыдущий review file и fix report | none>.
58
57
  Верни путь к файлу, status, result, score, находки и coverage.
@@ -80,6 +79,7 @@ description: 'Итеративно ревьюит и исправляет изм
80
79
  ## Чего НЕ делать
81
80
 
82
81
  - В `subagents` делать ревью или исправления основным агентом.
82
+ - Брать режим цикла из `review.execution` или переключать его из-за размера diff.
83
83
  - Запускать отдельный этап проверки готового ревью.
84
84
  - Считать цикл успешным при наличии находок или завершать его по score.
85
85
  - Выбирать или отклонять находки основным агентом: отклонение — работа `eda-fix-by-review`.