@rt-tools/agent-kit 0.22.0 → 0.23.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.
Files changed (58) hide show
  1. package/assets/checks/board-long-work.github.mjs +101 -0
  2. package/assets/checks/board-runs.github.mjs +34 -0
  3. package/assets/checks/check-board.github.mjs +16 -2
  4. package/assets/checks/check-reuse.mjs +4 -1
  5. package/assets/checks/check-schema-drift.mjs +65 -6
  6. package/assets/checks/rt-kit-checks.config.mjs +13 -0
  7. package/assets/checks/signals.mjs +41 -1
  8. package/assets/commands/next-session.md +16 -5
  9. package/assets/defaults/project.sh +16 -0
  10. package/assets/hooks/browser-guard-no-asking.sh +5 -1
  11. package/assets/hooks/git-guard-delivery.sh +15 -11
  12. package/assets/hooks/git-guard-push-tests.sh +22 -0
  13. package/assets/hooks/glossary-load.sh +23 -2
  14. package/assets/hooks/grill-gate.sh +62 -0
  15. package/assets/laws/autonomous-work.md +30 -0
  16. package/assets/laws/project-documentation.md +8 -0
  17. package/assets/patterns/autonomous-work-run.md +105 -0
  18. package/assets/patterns/browser-verification-stand.md +1 -1
  19. package/assets/patterns/doc-style-write.md +16 -0
  20. package/assets/patterns/git-workflow-pr-ready.md +93 -0
  21. package/assets/patterns/git-workflow-pr.azure.md +1 -1
  22. package/assets/patterns/git-workflow-pr.github.md +1 -1
  23. package/assets/patterns/git-workflow-pr.gitlab.md +1 -1
  24. package/assets/patterns/task-flow-start.md +47 -47
  25. package/assets/patterns/ts-procedure.md +3 -2
  26. package/assets/rules/autonomous-work.md +92 -0
  27. package/assets/rules/browser-verification.md +6 -0
  28. package/assets/rules/deploy-flow.azure.md +7 -0
  29. package/assets/rules/deploy-flow.github.md +7 -0
  30. package/assets/rules/deploy-flow.gitlab.md +7 -0
  31. package/assets/rules/doc-style.md +18 -0
  32. package/assets/rules/git-workflow.azure.md +8 -0
  33. package/assets/rules/git-workflow.github.md +44 -45
  34. package/assets/rules/git-workflow.gitlab.md +8 -0
  35. package/assets/rules/reuse-first.md +17 -3
  36. package/assets/rules/task-flow.md +62 -63
  37. package/assets/skills/agent-kit.md +20 -20
  38. package/lib/commands.d.ts.map +1 -1
  39. package/lib/commands.js +6 -0
  40. package/lib/commands.js.map +1 -1
  41. package/lib/push-gate.d.ts +14 -0
  42. package/lib/push-gate.d.ts.map +1 -0
  43. package/lib/push-gate.js +93 -0
  44. package/lib/push-gate.js.map +1 -0
  45. package/package.json +1 -1
  46. package/rt-tools-agent-kit-0.23.0.tgz +0 -0
  47. package/assets/laws/application/access.md +0 -34
  48. package/assets/laws/application/locales.md +0 -33
  49. package/assets/laws/application/search-visibility.md +0 -24
  50. package/assets/patterns/permissions-procedure.md +0 -71
  51. package/assets/patterns/seo-page.md +0 -104
  52. package/assets/patterns/seo-verify.md +0 -83
  53. package/assets/patterns/translations-content.md +0 -107
  54. package/assets/patterns/translations-key.md +0 -64
  55. package/assets/rules/permissions.md +0 -116
  56. package/assets/rules/seo.md +0 -139
  57. package/assets/rules/translations.md +0 -96
  58. package/rt-tools-agent-kit-0.22.0.tgz +0 -0
@@ -115,56 +115,60 @@ flowchart TD
115
115
  правится.** Гард хода работы требует три вещи: папку задачи по имени ветки, замысел в ней и
116
116
  объявленное в ходе работы состояние. Договорённость о продукте требует свой гард на те же
117
117
  события.
118
- - **Гард судит объявленный переход, а не наличие файлов.** Пустой замысел, положенный ради
119
- снятия отказа, лежит так же, как написанный, поэтому отказ снимает объявленное состояние —
120
- `этап-идёт`, `этапы-кончились`, `разбор-кончился`. Четвёртый путь не состояние, а история
121
- ветки: папка, разобранная её коммитом, означает отданную работу, и правка по замечаниям идёт
122
- без замысла на диске.
118
+ - **Гард судит объявленный переход, а не наличие файлов.** Пустой замысел лежит так же, как
119
+ написанный, поэтому отказ снимает объявленное состояние — `этап-идёт`, `этапы-кончились`,
120
+ `разбор-кончился`. Четвёртый путь не состояние, а история ветки: папка, разобранная её
121
+ коммитом, означает отданную работу, и правка по замечаниям идёт без замысла на диске.
123
122
  - **Строка состояния, переведённая вперёд, — то же объявление намерения, только машиночитаемое.**
124
- Пустоты за ней не видно никому: состояние объявляется тем ходом, в котором его обязательное
125
- действие начато делом, а не тем, в котором о нём отчитались.
126
- - **Отказ по состоянию называет обязательное действие объявленного состояния.**
127
- Исполнитель, которому сказано только «не в том состоянии», перепишет строку состояния вместо
128
- того, чтобы сделать шаг.
123
+ Состояние объявляется тем ходом, в котором его обязательное действие начато делом.
124
+ - **Отказ по состоянию называет обязательное действие объявленного состояния.** Услышав только
125
+ «не в том состоянии», исполнитель перепишет строку состояния вместо шага.
129
126
  - **Именем состояния считается только слово из перечня.** Своё слово не говорит ни о входе, ни о
130
- выходе, ни об обязательном действии, а перечень называет все три.
131
- - **Два требования — два гарда, и снять одно можно, не теряя второго.** Одним файлом отказ от
132
- требования договорённости снимал заодно папку задачи то, о чём дерево не просило. Судят
133
- порознь: строка о неизменном поведении снимает договорённость, а не требование дойти до
134
- правки кода.
127
+ выходе, ни об обязательном действии.
128
+ - **Два требования — два гарда, и снять одно можно, не теряя второго.** Судят порознь: строка о
129
+ неизменном поведении снимает договорённость, а не требование дойти до правки кода.
135
130
  - **Влитая договорённость ветку не запирает.** После вливания директории «предложено» на диске
136
- нет, а замысел на неё ссылается до конца работы: гард отличает влитое от незаведённого по
137
- истории ветки. Иначе правкам по замечаниям не было бы дороги.
131
+ нет, а замысел ссылается на неё до конца работы: влитое от незаведённого гард отличает по
132
+ истории ветки.
138
133
  - **Договорённость требуется по путям правки, а не по оценке задачи.** `apps/**` и `libs/**` —
139
134
  признак; правила, тексты, обвязка и зависимости под него не подпадают. Обход — строка
140
135
  `**Поведение:** не меняется — <причина владельца>` в замысле; пустая причина не принимается.
141
136
  - **Что требует слова владельца, берётся списком, а не оценкой на месте.** Оценку «это безопасно»
142
- назначает тот, кому она удобна, и меняется она с настроением разговора, а не со свойствами
143
- команды. Недовольство владельца простоем разрешением не бывает.
137
+ назначает тот, кому она удобна. Недовольство владельца простоем разрешением не бывает.
138
+ - **На команду владельца ответ начинается с результата, а не с намерения и не с его обоснования.**
139
+ Владелец, поставивший задачу, мнения о ней не запрашивал, и обоснование при уже принятом чужом
140
+ решении читается его оценкой: авторство переписывается на исполнителя. Исключение одно —
141
+ исполнение упёрлось в препятствие: тогда называется препятствие, а не отношение к задаче.
144
142
  - **Заход работу не начинает сам.** Начало требует слова владельца в этом же заходе: передача,
145
143
  состояние из хука запуска и назначенный эпик говорят, что делать, если работать, и молчат о
146
144
  том, работать ли. Судится это формой реплики, а не смыслом: правка кода после пустой реплики,
147
145
  одного слова или одного пути ход не заканчивает.
148
- - **Указание работать по ходу работы покрывает все его шаги, включая меняющие историю.** Отметка
149
- этапа, пуш и заявка предписаны им самим: спрашивают о том, чего в нём нет.
146
+ - **Указание работать по ходу работы покрывает все его шаги, включая меняющие историю.**
147
+ Спрашивают о том, чего в ходе работы нет.
150
148
  - **Вопрос, записанный прошлым заходом, вопросом владельца не становится.** Он адресован автору
151
149
  передачи, и часть таких вопросов закрыта шагом работы.
150
+ - **Указание владельца действует до его отмены, и новый факт против него — строка в ответе о
151
+ цене, а не новый вопрос.** Переспрашивают то, чего указание не покрывает; обстоятельство,
152
+ меняющее цену указания, но не смысл, называется вслух, и работа идёт дальше. Меню, где два
153
+ варианта из трёх предлагают отменить решение владельца, и есть такая отмена. Правило о развилке
154
+ говорит, КАК задавать вопрос, и молчит о том, задавать ли его вовсе.
155
+ - **Ответ, данный репликой владельца, записан наравне с ответом в документе.** Вопрос, на который
156
+ в разговоре уже отвечали, второй раз не задают.
152
157
  - **Слово владельца об устройстве — постановка, а не решение.** Названное им обычно уже живёт в
153
- дереве под этим самым словом: у него есть имя на экране, раздел в спеке и поле в модели. Прежде
154
- чем строить, слово сверяется с ними, а разошлось прочтение с деревом — спрашивается владелец, до
155
- правки: истолкованное по ближайшему коду, оно выглядит исполненной просьбой ровно до приёмки.
158
+ дереве под этим самым словом именем на экране, разделом спека, полем модели, и сверяется с
159
+ ними до правки. Разошлось прочтение спрашивается владелец: истолкованное по ближайшему коду
160
+ выглядит исполненной просьбой ровно до приёмки.
156
161
  - **Папка задачи заводится под любую работу, без исключений.** Исключение, у которого есть хоть
157
- одна законная форма, исполняется как разрешение. Заводится она до первой правки: сколько
158
- заходов уйдёт на работу, заранее не знает никто.
162
+ одна законная форма, исполняется как разрешение. Заводится она до первой правки.
159
163
  - **Папка задачи едет в ветку коммитом, а не живёт в одном рабочем дереве.** Незакоммиченная,
160
- она проходит все правки без отказа, а признак отданной работы берётся из истории: отказ придёт
161
- в последней точке, когда замысел уже снят. Вне истории законен один черновик без номера.
164
+ она проходит все правки без отказа, а отказ приходит в последней точке, когда замысел уже снят:
165
+ признак отданной работы берётся из истории. Вне истории законен один черновик без номера.
162
166
  - **Папка задачи разбирается последним коммитом до открытия PR, а не после одобрения.** Человек
163
167
  вливает, как только видит зелёное, и закрывающему коммиту места не остаётся вовсе. Цена:
164
168
  замысла с этой минуты на диске нет, и признак отданной работы гард берёт из истории ветки.
165
- - **Открыв PR, исполнитель называет владельцу три вещи: номер, чего ждёт и что сделает следом.**
166
- Ждёт он прогона, следом идёт снятие черновика. Зелёный прогон говорит, что не сломано, и молчит
167
- о заблокированной у черновика кнопке слияния.
169
+ - **Открыв PR, исполнитель называет владельцу номер, чего ждёт и что сделает следом.** Ждёт он
170
+ прогона, следом снимает черновик: зелёный прогон говорит, что не сломано, и молчит о
171
+ заблокированной у черновика кнопке слияния.
168
172
  - **Просьба о слиянии — отдельный ход, и раньше зелёного прогона её не бывает.** Порядок один:
169
173
  папка разобрана и запушена → PR открыт черновиком → прогон зелёный → черновик снят →
170
174
  исполнитель просит влить, называя номер.
@@ -174,66 +178,60 @@ flowchart TD
174
178
  - **Гард замысла — нижняя граница требования, а не его предел.** Он требует папку только под
175
179
  правку кода приложения, а статья выше — под любую работу. Прочитанный как признак, он
176
180
  становится разрешением работать без замысла везде, куда не смотрит.
177
- - **Указание работать по правилу — это указание делать его шаги, включая те, что меняют
178
- историю.** Отметка сделанного этапа, коммит, пуш и открытие заявки правилом предписаны, и
179
- отдельного слова владельца на каждый из них не требуется: спросить надо о том, чего в правиле
180
- нет. Ход, который довёл работу до готовности и встал перед коммитом, работу не отдал, а спрятал.
181
- - **Взятая задача ходом не кончается.** Заведение задачи, ветки, колонки и папки подготовка, а
182
- не работа: они переводят её в состояние записанного замысла, где обязательное действие уже
183
- другое. Держит это страж выхода хода, называя в отказе первый этап замысла.
184
- - **Ожидание одной части этапа остановкой этапа не бывает.** Части, которые от ожидаемого не
185
- зависят, делаются тем же ходом, а владельцу называется, что сделано и что осталось на его шаг.
186
- Отбитая гардом команда и отклонённый вызов читаются так же: сперва делается всё, что мимо них.
181
+ - **Указание работать по правилу — это указание делать его шаги, включая меняющие историю.**
182
+ Отметка этапа, коммит, пуш и открытие заявки правилом предписаны: спросить надо о том, чего в
183
+ нём нет. Ход, доведший работу до готовности и вставший перед коммитом, её не отдал, а спрятал.
184
+ - **Взятая задача ходом не кончается.** Заведение задачи, ветки, колонки и папки подготовка:
185
+ она переводит работу в состояние записанного замысла, где действие уже другое. Держит это страж
186
+ выхода хода, называя в отказе первый этап.
187
+ - **Ожидание одной части этапа остановкой этапа не бывает.** Независимые от ожидаемого части
188
+ делаются тем же ходом, а владельцу называется, что сделано и что осталось на его шаг. Отбитая
189
+ команда читается так же: сперва делается всё, что мимо неё.
187
190
  - **Сделанное отмечается только в ходе работы.** «Где стоим» перезаписывается каждым заходом, а
188
191
  не дописывается: это первое, что читает следующий заход.
189
192
  - **Слово для нового понятия ищется в словаре дерева.** Общую часть везёт пакет, предметную
190
193
  дописывает дерево надстройкой; словарь уезжает в контекст на запуске сессии целиком, поэтому
191
194
  «не читал» основанием не бывает.
192
195
  - **Папка задачи заводится черновиком и получает номер командой.** До конца разбора неизвестно,
193
- сколько задач из него выйдет, поэтому номер не может быть первым. Команда заведения
194
- переименовывает черновик, проставляет шапку замысла и собирает папку с образца, снимая с копий
195
- шапку раскладки.
196
+ сколько задач из него выйдет, поэтому номер не бывает первым. Команда переименовывает черновик,
197
+ проставляет шапку замысла и снимает с копий шапку раскладки.
196
198
  - **Брошенный разбор виден.** Черновик старше недели перечисляет сверка очереди.
197
199
  - **Следующая задача берётся из замысла эпика, а список очереди работ спрашивается только там, где
198
200
  эпика нет.** По списку номеров первая задача чужого эпика неотличима от своей. Кончившийся эпик
199
201
  называется владельцу тем же ходом, которым берётся работа вне его.
200
- - **Эпик не закрывается по признаку, подтверждённому только чтением.** Признак, проверяемый
201
- глазами, называется проверенным лишь вместе с командой или замером и их выводом.
202
+ - **Эпик не закрывается по признаку, подтверждённому только чтением.** Проверяемое глазами
203
+ называется проверенным лишь вместе с командой и её выводом.
202
204
  - **Задачи эпика заводятся все разом, тем же ходом, что и сам эпик.** Заведение по одной прячет
203
205
  объём. Номера возвращаются в раздел порядка той же правкой: без них «взять следующую» отвечает
204
206
  названием, а не карточкой.
205
207
 
206
208
  - **Замысел эпика лежит там, где его найдут без сети и после мержа.** Карточка порядка задач не
207
- держит, а папка задачи держала бы его до слияния первой из них; каталог называет компаньон
208
- правила. Имя, адрес и способ, названные владельцем по ходу, дописываются туда же тем ходом,
209
- каким приняты.
209
+ держит, а папка задачи держала бы его до слияния первой; каталог называет компаньон правила.
210
+ Названное владельцем по ходу дописывается туда же тем ходом, каким принято.
210
211
  - **Сборка по образцу начинается с чтения самого образца, а не пересказа о нём.** Пересказ лежит
211
212
  в разборе просьбы и в замысле эпика; образцом они не считаются. Повторяемая часть открывается
212
213
  целиком — обходом каталогов, а не одним файлом, за которым пришли.
213
214
  - **Что действует на дерево, а не на правку, лежит вне индекса.** Путь к образцу и разрешение
214
- работать вне эпика ветке не принадлежат: записанные файлом репозитория, они в ней и остаются,
215
- а следующая, отведённая от главной, их не несёт. Место записи — рядом с передачей захода.
215
+ работать вне эпика ветке не принадлежат и живут рядом с передачей захода.
216
216
  - **Закрытая работа разбирается правилами, и это шаг закрытия, а не отдельная просьба.** Что
217
- грузилось, что помогло и чего не хватило, видно только тому заходу, который работу вёл. Разбор
218
- кончается правкой слоя правил или предложением наружу; ведёт его роль разбора закрытой задачи,
219
- если дерево её разложило.
217
+ грузилось и чего не хватило, видно только заходу, который работу вёл. Разбор кончается правкой
218
+ слоя правил или предложением наружу.
220
219
  - **Разбор закрытой работы уходит в фон, а исполнитель берёт следующую задачу.** Роль работает
221
- своим ходом и ничего не спрашивает. Сводку собирают до запуска, вернувшиеся находки принимают
222
- одним ходом.
220
+ своим ходом; сводку собирают до запуска, находки принимают одним ходом.
223
221
  - **Находки разбора ждут владельца, а в пакет уезжает только сводка наблюдений.** Предложение —
224
222
  заготовка правки чужого дерева, и уехавшая без разбора, она становится работой того, кто её не
225
223
  заказывал. Сводка уезжает всегда: она говорит, чем пользовались, и мнением не бывает.
226
- - **Дешёвый шаг закрытия идёт раньше дорогого, а прогон — после вливания.** Вливание договорённости
227
- и приведение текстов стоят минуты, прогон — окно захода. Идущий после вливания, он проверяет и его
228
- самого: идущий до, он смотрит то, что в главную не поедет.
224
+ - **Дешёвый шаг закрытия идёт раньше дорогого, а прогон — после вливания.** Вливание
225
+ договорённости и приведение текстов стоят минуты, прогон — окно захода; идущий до вливания, он
226
+ смотрит то, что в главную не поедет.
229
227
  - **Договорённость вливается в спек домена одним из последних коммитов ветки, до открытия PR.**
230
228
  К этому моменту код написан, привязки известны, и в главной ветке директория `proposed/` не
231
229
  появляется вовсе. Готовые к вливанию перечисляет `npm run check:specs`.
232
230
  - **Папка закрытой задачи разбирается, а не переносится целиком.** В `docs/archive/` уезжает то, что
233
231
  объясняет решение; остальное удаляется. Неразобранную ловит сверка очереди.
234
232
  - **Открытие PR и снятие черновика отбиваются, пока ветка везёт папку своей задачи.** Слияние
235
- нажимает человек на хостинге, где гардов нет: снятый черновик он читает как приглашение влить и
236
- кнопку нажимает, не дожидаясь коммита уборки. Судится содержимое ветки, а не рабочее дерево.
233
+ нажимает человек на хостинге, где гардов нет: снятый черновик он читает приглашением влить.
234
+ Судится содержимое ветки, а не рабочее дерево.
237
235
  - **Ветка, снёсшая папку, обязана прибавить запись в архив.** Снести дешевле, чем разобрать, а
238
236
  первым уходит разбор просьбы — единственная запись слов владельца.
239
237
  - **Обход — строка `Task-folder-skip: <причина>` в PR или в самой команде.** Пустая причина обходом
@@ -253,8 +251,9 @@ flowchart TD
253
251
  видит правку файла и не знает ни о разведке до первого вопроса, ни о шести обязательных, ни об
254
252
  ответах на них — пустая таблица проходит так же, как заполненная.
255
253
 
256
- Гард разговора судит завершение хода, а не отправку вопроса: к моменту отказа вопрос уже у
257
- владельца. Отсюда порядок правило читается первым движением захода, а не по отказу гарда.
254
+ Понимания текста у гарда разговора нет: второй его признак судит общие слова темы вопроса и
255
+ последней реплики владельца, а не смысл вопрос о другом предмете, названный прежними словами,
256
+ он отобьёт. Отказ называет законный ход: назвать то, чего в прежнем ответе владельца нет.
258
257
 
259
258
  Неизменность замысла не стережёт ничто: правка по ходу отличима от первоначальной записи только
260
259
  по истории.
@@ -228,17 +228,17 @@ npx agent-kit adopt [файлы] # отдать пакету свой файл,
228
228
 
229
229
  ## Установка туда, где уже всё своё
230
230
 
231
- 1. `init`, затем `skip` на всё, что дерево держит само. Пустая раскладка — законное начало.
232
- 2. Снимок того, что говорят проверки дерева, до единой правки. Он и есть мерило.
231
+ 1. `init`, затем `skip` на всё, что дерево держит само; пустая раскладка — законное начало.
232
+ 2. Снимок того, что говорят проверки дерева, до единой правки: он и есть мерило.
233
233
  3. Ресурс за ресурсом: пакетную редакцию довести до здешней, предметность вынести в
234
234
  надстройку, снять отказ, разложить, прогнать сценарии и сверить снимок.
235
235
  4. Разложенное поверх своего пакет не пишет: файл без шапки для него чужой. Отдаётся он
236
- командой `adopt` — прежнее содержимое ложится рядом с пометкой `.before-rt-kit`, и снять его
237
- потом решает владелец.
238
- 5. Свои сценарии отданного файла переписываются под пакетное поведение либо снимаются. Чинить
239
- пакетную редакцию на месте нельзя: правка разложенной копии живёт до следующей раскладки, а
240
- её адрес источник пакета или надстройка дерева. Сценарий, ждущий поведения снятого файла,
241
- краснеет и после верной отдачи: он проверяет то, чего в дереве больше нет.
236
+ командой `adopt` — прежнее содержимое ложится рядом с пометкой `.before-rt-kit`.
237
+ 5. Ресурс, у которого здешняя редакция богаче пакетной по существу, в раскладку не берётся.
238
+ Признак статья, которой в пакетной редакции нет и не может быть: она выводится из предмета
239
+ дерева. Он уходит в `skip`, а наверх едет предложение снять его из пакета.
240
+ 6. Свои сценарии отданного файла переписываются под пакетное поведение либо снимаются: чинить
241
+ пакетную редакцию на месте нельзя, её адрес источник пакета или надстройка.
242
242
 
243
243
  ## Свойства дерева
244
244
 
@@ -272,6 +272,10 @@ npx agent-kit adopt [файлы] # отдать пакету свой файл,
272
272
 
273
273
  ## Ловушки раскладки
274
274
 
275
+ - **Словарь — такой же разложенный ресурс, как правило.** Хук запуска кладёт его в контекст
276
+ целиком, до первой реплики, и оттого он выглядит обычным документом дерева; шапка у него есть,
277
+ но читается служебной строкой. Новое слово идёт в надстройку словаря, своим разделом.
278
+
275
279
  - **Запись файла командой оболочки судится по всем путям, названным в её теле.** Гейт вынимает
276
280
  пути из текста команды, а тело документа читает целиком, как только в команде встречается имя
277
281
  интерпретатора, — и строка запуска первой строкой записываемого файла возвращает его туда сама.
@@ -281,18 +285,14 @@ npx agent-kit adopt [файлы] # отдать пакету свой файл,
281
285
  оболочки остаётся для того, что файлом дерева не станет.
282
286
  - **Своё, стоящее рядом с разложенным, повторяет его механику молча.** Проверка, гард и утилита
283
287
  дерева лежат в тех же каталогах, что и пакетные, а общий разбор списка известного, корни
284
- исходников, список пропускаемых каталогов и снимок долга приезжают модулем настройки проверок.
285
- Второе такое же заводится в своей проверке без единого сигнала: имена разные, форма разная, и
286
- повтора не видит ни сверка раскладки файл не разложен, ни проверка повторов, которая ищет
287
- совпадение текста. Признак один, и он читается, а не ищется: до того как в своей проверке
288
+ исходников и снимок долга приезжают модулем настройки проверок. Второе такое же заводится без
289
+ сигнала: повтора не видит ни сверка раскладки файл не разложен, ни проверка повторов,
290
+ которая ищет совпадение текста. Признак один, и он читается: до того как в своей проверке
288
291
  заводится разбор списка, чтение настройки или сравнение с накопленным, смотрят, что
289
- экспортирует модуль настройки проверок и чем живут соседние проверки.
292
+ экспортирует модуль настройки проверок.
290
293
  - **Правило, загруженное инструментом, бывает показано не целиком, и обрыв ничем не помечен.**
291
294
  Длинный файл приезжает в контекст обрезанным по строке, а снаружи это выглядит концом: показанное
292
- кончается осмысленным пунктом, и число разделов с оглавлением никто не сверяет. Бьёт обрыв ровно
293
- по хвосту, а хвост то место, где дерево отменяет умолчания пакета: разделы надстройки сливаются
294
- по совпавшему заголовку и новыми уходят в конец. Заход, читавший правило до конца по своему
295
- ощущению, исполнил пакетный образец буквально и открыл заявку черновиком там, где дерево
296
- черновиков не держит вовсе. Отсюда порядок: решение о порядке работы принимается только после
297
- того, как показанные строки сверены с длиной файла — одной командой, — а расходятся они, файл
298
- дочитывается чтением.
295
+ кончается осмысленным пунктом. Бьёт обрыв ровно по хвосту, а хвост то место, где дерево
296
+ отменяет умолчания пакета: разделы надстройки сливаются по совпавшему заголовку и новыми уходят
297
+ в конец. Отсюда порядок: решение о порядке работы принимается после того, как показанные строки
298
+ сверены с длиной файла одной командой, а расходятся они файл дочитывается чтением.
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../projects/agent-kit/src/lib/commands.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAsB7C,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,2FAA2F;AAC3F,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CAC1B;AA2DD,+DAA+D;AAC/D,eAAO,MAAM,WAAW,EAAE,MAAyB,CAAC;AA0ZpD;;;;GAIG;AACH,wBAAgB,IAAI,CAChB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,SAAS,MAAM,EAAO,EAC5B,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EAC/C,SAAS,GAAE,MAAW,GACvB,iBAAiB,CAgCnB;AAmKD,wBAAgB,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG,iBAAiB,CA8DzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CA+CpF;AAQD,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8FAA8F;IAC9F,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CAC1B;AA8JD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,GAAG,iBAAiB,CA6DlF;AA0BD,wBAAgB,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,iBAAiB,CA6E3D;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,iBAAiB,CA2DzD"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../projects/agent-kit/src/lib/commands.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAuB7C,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,2FAA2F;AAC3F,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CAC1B;AA2DD,+DAA+D;AAC/D,eAAO,MAAM,WAAW,EAAE,MAAyB,CAAC;AA0ZpD;;;;GAIG;AACH,wBAAgB,IAAI,CAChB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,SAAS,MAAM,EAAO,EAC5B,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EAC/C,SAAS,GAAE,MAAW,GACvB,iBAAiB,CAgCnB;AAmKD,wBAAgB,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG,iBAAiB,CA8DzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CA+CpF;AAQD,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8FAA8F;IAC9F,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CAC1B;AA8JD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,GAAG,iBAAiB,CA6DlF;AA0BD,wBAAgB,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,iBAAiB,CAkF3D;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,iBAAiB,CA2DzD"}
package/lib/commands.js CHANGED
@@ -14,6 +14,7 @@ import { CONFIG_PATH, DEFAULT_LAYOUT, KINDS, OVERRIDES_DIR, PROFILE_FILE, readCo
14
14
  import { hooksSection, SETTINGS_PATH } from './hooks-map.js';
15
15
  import { DEFAULT_DAYS, KEEP_DAYS, OBSERVATIONS_DIR, readObservations, summarize, } from './observations.js';
16
16
  import { isRefusal } from './plan.js';
17
+ import { pushGateLines } from './push-gate.js';
17
18
  import { laidOutSkills, treeSnapshot } from './snapshot.js';
18
19
  import { mergedBody, pendingOf, planSync, runSync } from './sync.js';
19
20
  import { thresholdLines } from './thresholds.js';
@@ -968,6 +969,11 @@ export function doctor(env) {
968
969
  return ` снят каскадом: ${one.id} — вслед за ${one.parent}${root}`;
969
970
  }),
970
971
  ...profileLines(root, assetsDir, config),
972
+ // Набор перед пушем — итоговый, а не пересказ умолчания: собирается он из двух файлов, и
973
+ // прочитать сборку было нечем. Дерево, пишущее надстройку, видит здесь умолчание и не
974
+ // дописывает повтор, а снятое надстройкой видно на разборе ветки, а не только тому, кто
975
+ // его снял.
976
+ ...pushGateLines(root, config.layout.defaults ?? DEFAULT_LAYOUT.defaults),
971
977
  ...localValueLines(root, assetsDir, config),
972
978
  ...replacedLines(config, assetsDir, root),
973
979
  ...thresholdLines(root),