@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.
- package/assets/checks/board-long-work.github.mjs +101 -0
- package/assets/checks/board-runs.github.mjs +34 -0
- package/assets/checks/check-board.github.mjs +16 -2
- package/assets/checks/check-reuse.mjs +4 -1
- package/assets/checks/check-schema-drift.mjs +65 -6
- package/assets/checks/rt-kit-checks.config.mjs +13 -0
- package/assets/checks/signals.mjs +41 -1
- package/assets/commands/next-session.md +16 -5
- package/assets/defaults/project.sh +16 -0
- package/assets/hooks/browser-guard-no-asking.sh +5 -1
- package/assets/hooks/git-guard-delivery.sh +15 -11
- package/assets/hooks/git-guard-push-tests.sh +22 -0
- package/assets/hooks/glossary-load.sh +23 -2
- package/assets/hooks/grill-gate.sh +62 -0
- package/assets/laws/autonomous-work.md +30 -0
- package/assets/laws/project-documentation.md +8 -0
- package/assets/patterns/autonomous-work-run.md +105 -0
- package/assets/patterns/browser-verification-stand.md +1 -1
- package/assets/patterns/doc-style-write.md +16 -0
- package/assets/patterns/git-workflow-pr-ready.md +93 -0
- package/assets/patterns/git-workflow-pr.azure.md +1 -1
- package/assets/patterns/git-workflow-pr.github.md +1 -1
- package/assets/patterns/git-workflow-pr.gitlab.md +1 -1
- package/assets/patterns/task-flow-start.md +47 -47
- package/assets/patterns/ts-procedure.md +3 -2
- package/assets/rules/autonomous-work.md +92 -0
- package/assets/rules/browser-verification.md +6 -0
- package/assets/rules/deploy-flow.azure.md +7 -0
- package/assets/rules/deploy-flow.github.md +7 -0
- package/assets/rules/deploy-flow.gitlab.md +7 -0
- package/assets/rules/doc-style.md +18 -0
- package/assets/rules/git-workflow.azure.md +8 -0
- package/assets/rules/git-workflow.github.md +44 -45
- package/assets/rules/git-workflow.gitlab.md +8 -0
- package/assets/rules/reuse-first.md +17 -3
- package/assets/rules/task-flow.md +62 -63
- package/assets/skills/agent-kit.md +20 -20
- package/lib/commands.d.ts.map +1 -1
- package/lib/commands.js +6 -0
- package/lib/commands.js.map +1 -1
- package/lib/push-gate.d.ts +14 -0
- package/lib/push-gate.d.ts.map +1 -0
- package/lib/push-gate.js +93 -0
- package/lib/push-gate.js.map +1 -0
- package/package.json +1 -1
- package/rt-tools-agent-kit-0.23.0.tgz +0 -0
- package/assets/laws/application/access.md +0 -34
- package/assets/laws/application/locales.md +0 -33
- package/assets/laws/application/search-visibility.md +0 -24
- package/assets/patterns/permissions-procedure.md +0 -71
- package/assets/patterns/seo-page.md +0 -104
- package/assets/patterns/seo-verify.md +0 -83
- package/assets/patterns/translations-content.md +0 -107
- package/assets/patterns/translations-key.md +0 -64
- package/assets/rules/permissions.md +0 -116
- package/assets/rules/seo.md +0 -139
- package/assets/rules/translations.md +0 -96
- 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
|
-
|
|
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
|
+
сверены с длиной файла одной командой, а расходятся они — файл дочитывается чтением.
|
package/lib/commands.d.ts.map
CHANGED
|
@@ -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;
|
|
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),
|