@rt-tools/agent-kit 0.20.0 → 0.22.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/check-reuse.mjs +11 -1
- package/assets/checks/check-specs.mjs +8 -23
- package/assets/checks/signals/core.json +12 -2
- package/assets/checks/signals.mjs +17 -0
- package/assets/checks/spec-proposed.mjs +122 -0
- package/assets/hooks/browser-guard-device-id.sh +3 -0
- package/assets/hooks/browser-guard-no-asking.sh +3 -0
- package/assets/hooks/browser-guard-no-listing.sh +3 -0
- package/assets/hooks/browser-guard-no-other-drivers.sh +3 -0
- package/assets/hooks/browser-guard-require-select.sh +3 -0
- package/assets/hooks/claim-guard.sh +4 -0
- package/assets/hooks/conscience-guard.sh +4 -0
- package/assets/hooks/deny-tail.sh +12 -0
- package/assets/hooks/dev-server-guard.sh +3 -0
- package/assets/hooks/docs-guard.sh +4 -11
- package/assets/hooks/exam-guard.sh +3 -0
- package/assets/hooks/git-guard-delivery.sh +4 -4
- package/assets/hooks/git-guard-main.sh +4 -9
- package/assets/hooks/git-guard-push-tests.sh +3 -0
- package/assets/hooks/grill-gate.sh +5 -0
- package/assets/hooks/guard-note.sh +45 -0
- package/assets/hooks/handoff-entry-guard.sh +3 -0
- package/assets/hooks/handoff-write.sh +58 -7
- package/assets/hooks/hook-input.sh +1 -0
- package/assets/hooks/override-write-guard.sh +4 -4
- package/assets/hooks/postmortem-guard.sh +4 -0
- package/assets/hooks/proposal-guard.sh +11 -0
- package/assets/hooks/prose-style-guard.sh +3 -0
- package/assets/hooks/qa-dataid-guard.sh +3 -0
- package/assets/hooks/rerun-guard.sh +3 -0
- package/assets/hooks/reuse-first-guard.sh +3 -0
- package/assets/hooks/rule-article.sh +1 -1
- package/assets/hooks/rule-source-guard.sh +4 -4
- package/assets/hooks/sql-guard.sh +3 -0
- package/assets/hooks/task-context-load.sh +1 -1
- package/assets/hooks/task-flow-draft-guard.sh +3 -0
- package/assets/hooks/task-flow-guard.sh +3 -0
- package/assets/hooks/turn-entry-load.sh +27 -2
- package/assets/hooks/turn-exit-guard.sh +4 -0
- package/assets/hooks/waiting-turn-guard.sh +32 -10
- package/assets/hooks/window-fill-guard.sh +3 -0
- package/assets/hooks/work-start-guard.sh +5 -0
- package/assets/hooks/write-targets.sh +59 -10
- package/assets/laws/delivery.md +5 -0
- package/assets/laws/frontend-application.md +10 -0
- package/assets/laws/work-conduct.md +8 -0
- package/assets/patterns/browser-verification-stand.md +24 -9
- package/assets/patterns/git-workflow-pr.github.md +29 -22
- package/assets/patterns/spec-driven-domain.md +5 -0
- package/assets/patterns/spec-driven-rule.md +41 -1
- package/assets/patterns/task-flow-archive.md +12 -0
- package/assets/patterns/task-flow-handoff.md +14 -1
- package/assets/patterns/task-flow-resume.md +11 -0
- package/assets/patterns/task-flow-start.md +40 -40
- package/assets/patterns/testing-e2e.md +15 -0
- package/assets/patterns/testing-unit.md +13 -0
- package/assets/pitfalls/git-workflow.github.md +13 -0
- package/assets/pitfalls/spec-driven.md +20 -0
- package/assets/pitfalls/task-flow.md +78 -48
- package/assets/rules/git-workflow.azure.md +5 -0
- package/assets/rules/git-workflow.github.md +26 -23
- package/assets/rules/git-workflow.gitlab.md +5 -0
- package/assets/rules/spec-driven.md +23 -24
- package/assets/rules/turn-conduct.md +13 -15
- package/assets/rules/turn-entry.md +6 -4
- package/assets/rules/typescript-conventions.md +7 -0
- package/assets/skills/agent-kit-extend.md +11 -0
- package/assets/skills/agent-kit.md +12 -2
- package/lib/commands.d.ts.map +1 -1
- package/lib/commands.js +36 -1
- package/lib/commands.js.map +1 -1
- package/lib/observations.d.ts +13 -1
- package/lib/observations.d.ts.map +1 -1
- package/lib/observations.js +7 -1
- package/lib/observations.js.map +1 -1
- package/package.json +1 -1
- package/rt-tools-agent-kit-0.22.0.tgz +0 -0
- package/rt-tools-agent-kit-0.20.0.tgz +0 -0
|
@@ -58,6 +58,26 @@
|
|
|
58
58
|
и число это падает по мере того, как их читают. Счёт при этом грубый: строка, показанная
|
|
59
59
|
образцом внутри ограды, считается наравне с настоящей — тот, кто учит её писать, попадает
|
|
60
60
|
в число объявивших.
|
|
61
|
+
- **Закон, которого не назвало ни одно правило, не судит никто, и виден он только счётом.**
|
|
62
|
+
Статья правила без адреса отбивает сверку спеков — привязка у неё требуется. У статьи закона
|
|
63
|
+
адреса нет по устройству: закон говорит, что должно быть верно, и на код не показывает. Ловить
|
|
64
|
+
это отказом нельзя — закон, которому в этом дереве нечего исполнять, законное состояние, — а
|
|
65
|
+
незамеченным он живёт сколько угодно: две статьи так и легли молча, пока две соседние статьи
|
|
66
|
+
правила отбивали сверку требованием адреса. Судят поэтому два числа рядом: сколько законов в
|
|
67
|
+
каталоге и какие из них ни одно правило не назвало.
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
ls <каталог законов>/*.md | wc -l
|
|
71
|
+
for law in <каталог законов>/*.md; do
|
|
72
|
+
grep -rqlF "constitution/$(basename "$law")" <каталог правил>/*/SKILL.md || echo "$law"
|
|
73
|
+
done
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Названный список читается глазами: у закона, который дереву нечего исполнять, это законное
|
|
77
|
+
состояние, а у остальных — забытая половина работы. Счёт грубый и здесь: закон, названный
|
|
78
|
+
правилом в одной строке и не разобранный ни одной его статьёй, в список не попадает —
|
|
79
|
+
связь статьи с правилом держится текстом, а не ключом.
|
|
80
|
+
|
|
61
81
|
- **Привязка пишется по тексту статьи, а не по смыслу имени гарда.** Гард, чьё имя звучит про то
|
|
62
82
|
же самое, статью не закрывает: статья перечисляла шесть действий по отдельному слову владельца
|
|
63
83
|
— коммит, пуш, открытие заявки, запись в вики, заведение задачи, правка закона, — а
|
|
@@ -7,6 +7,12 @@
|
|
|
7
7
|
|
|
8
8
|
## Ловушки
|
|
9
9
|
|
|
10
|
+
- **Задача, отобранная в эпик по своему телу, бывает закрыта до начала работы.** Между заведением
|
|
11
|
+
задачи и её взятием проходят недели, и всё это время дерево правится соседними работами: у двух
|
|
12
|
+
задач одного эпика по три части из четырёх оказались сделанными — тело описывало дерево
|
|
13
|
+
месячной давности. Отбор поэтому начинается с чтения кода, а разбор просьбы называет, что из
|
|
14
|
+
тела задачи в дереве ещё верно.
|
|
15
|
+
|
|
10
16
|
- **Разрешение владельца, оставленное в репозитории, теряется на каждой новой ветке.** Оно
|
|
11
17
|
записано номером в файл ветки, а следующая ветка отводится от главной и его не несёт: гард
|
|
12
18
|
отбивает работу, которую владелец разрешил, — и повторяется это ровно столько раз, сколько
|
|
@@ -31,13 +37,13 @@
|
|
|
31
37
|
договорённость обязана его пережить: её сценарии получают номера в общей нумерации домена,
|
|
32
38
|
и на них ссылаются заголовки тестов. Обратное тоже верно — ход работы не кладётся в
|
|
33
39
|
`proposed/`: спек, в котором завелись шаги, снова становится планом и умирает после мержа.
|
|
34
|
-
- **У меню нет строки «вопрос не тот».** Меню годится
|
|
40
|
+
- **У меню нет строки «вопрос не тот».** Меню годится там, где выбор действительно закрыт;
|
|
35
41
|
пока постановка вопроса не подтверждена, отвергнуть её владельцу нечем — он выбирает из
|
|
36
|
-
|
|
37
|
-
не снимают: тогда к каждому вопросу добавляется свободный вариант,
|
|
38
|
-
место, где вопрос отвергается целиком. Три вопроса ушли одним меню, у
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
вариантов неверной посылки, и выйти из набора может только руками. Настройки владельца,
|
|
43
|
+
требующие меню, требование не снимают: тогда к каждому вопросу добавляется свободный вариант,
|
|
44
|
+
и он же — единственное место, где вопрос отвергается целиком. Три вопроса ушли одним меню, у
|
|
45
|
+
одного постановка была ложной. Там, где под сомнением сама уместность вопроса, его сперва
|
|
46
|
+
проверяют по репликам владельца — и чаще всего не задают.
|
|
41
47
|
- **Субагент вопросов владельцу не задаёт.** Ни роли, ни конвейер до него не достучатся —
|
|
42
48
|
они возвращают текст главному агенту. Поэтому разбор ведёт главный агент, а роли стоят по
|
|
43
49
|
обе стороны от него.
|
|
@@ -48,20 +54,17 @@
|
|
|
48
54
|
Спрашивают до правки, а не показывают замер после.
|
|
49
55
|
- **Путь, предложенный человеку, судится числом его шагов и тем, чем ему для этого надо
|
|
50
56
|
владеть.** Со стороны кода вариант выглядит дешёвым — «меньше путей», «строку запуска не
|
|
51
|
-
трогаем», — а человеку он стоит захода на
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
них нужно. Пересказ действующего порядка без такой оценки владелец читает как одобрение.
|
|
57
|
+
трогаем», — а человеку он стоит захода на сервер: рекомендуемым так стояла выдача токена, за
|
|
58
|
+
которой владельцу надо было идти по ssh в работающий контейнер. Цена называется со стороны
|
|
59
|
+
того, кто пойдёт; пересказ порядка без неё владелец читает как одобрение.
|
|
55
60
|
- **Эпик по теме читается до того, как решается раскладка.** Замысел эпика держит решения,
|
|
56
61
|
которые пережили десяток задач, и разведка по коду их не находит: снятое решение следа в
|
|
57
62
|
дереве не оставляет. Домен, заведённый генератором и снесённый через полчаса, стоял в замысле
|
|
58
63
|
прямым запретом — но замысел открыли уже после того, как он был заведён во второй раз.
|
|
59
64
|
- **Работа, которая разбирает чужую папку задачи, разбирает и свою — одним коммитом.** Свою
|
|
60
|
-
папку она заводит наравне со
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
свою папку, и на неё пришлось заводить третью задачу — лечится это порядком, а не правом
|
|
64
|
-
работать без замысла на диске. Как разобрать две папки — паттерн `task-flow-archive`.
|
|
65
|
+
папку она заводит наравне со всеми, и круг, которым исключение оправдывали, закрывается
|
|
66
|
+
порядком разбора: последний коммит снимает обе. Однажды такой разбор оставил свою папку, и на
|
|
67
|
+
неё пришлось заводить третью задачу. Как разобрать две папки — паттерн `task-flow-archive`.
|
|
65
68
|
- **Слово для нового понятия берётся из `docs/GLOSSARY.md` или заводится там же.** Третий файл
|
|
66
69
|
папки задачи называется `progress.md`, а не `journal.md`, ровно поэтому: журнал в этом
|
|
67
70
|
дереве один, и он другой.
|
|
@@ -81,13 +84,42 @@
|
|
|
81
84
|
задание, он даёт заходу работу, которой владелец не просил. То же с любой репликой без
|
|
82
85
|
глагола: спросить, что с этим делать, дешевле, чем написать полсотни файлов мимо просьбы.
|
|
83
86
|
|
|
87
|
+
- **Признак готовности этапа пишется о своей половине вывода, а не обо всём выводе.** Проверка
|
|
88
|
+
считает всё дерево, а этап правит его часть: «вывод без единой строки долга» не сходится не
|
|
89
|
+
потому, что этап не сделан, а потому, что три строки принадлежат невлитой соседней ветке.
|
|
90
|
+
Признак называет свои строки и своё число, а сказанное обо всём выводе держится до первого
|
|
91
|
+
соседа.
|
|
92
|
+
|
|
93
|
+
- **Копия образца папки задачи несёт шапку раскладки, и первая же правка отбивается гардом.**
|
|
94
|
+
Образец разложен пакетом наравне с остальным разложенным, а гард места правки судит по шапке:
|
|
95
|
+
копия под задачу выглядит разложенным файлом, и отказ называет адрес источника пакета — то
|
|
96
|
+
есть уводит править образец вместо своей копии. Команда заведения задачи шапку снимает сама,
|
|
97
|
+
копирование руками — нет. Правится такая копия только записью заново: правку по месту гард
|
|
98
|
+
отбивает и её.
|
|
99
|
+
- **Имя проекта в признаке готовности этапа спрашивается у сборщика, а не пишется по памяти.**
|
|
100
|
+
На неизвестное имя сборщик отвечает «задач не запущено» и выходит нулём: команда признака не
|
|
101
|
+
прогнала ни одной пробы и промолчала так же, как зелёный прогон. Видно это только по числу
|
|
102
|
+
прогнанных задач, а его никто не читает.
|
|
103
|
+
|
|
104
|
+
- **Этап, закрытый без пуша, гоняет проверки гейта своим последним движением.** Признак этапа
|
|
105
|
+
зовёт свои команды и общих не знает, а гейт краснеет только на отправке: ветка без пушей копит
|
|
106
|
+
красное до первой из них, и промах уезжает на два этапа от места, где его сделали.
|
|
107
|
+
|
|
108
|
+
- **У признака закрытия спрашивают, может ли исполнитель подтвердить его сам.** Признак,
|
|
109
|
+
требующий человека — пароля, кнопки в чужой панели, взгляда владельца, — останавливает работу
|
|
110
|
+
на последнем шаге: сделано всё, а сказать «закрыто» нечем. Спрашивается это при разборе
|
|
111
|
+
просьбы.
|
|
112
|
+
|
|
113
|
+
- **Признак закрытия проверяет исход у той стороны, которая его хранит, а не ответ вызова.**
|
|
114
|
+
Вызов отвечает о себе: ушёл, принят, код нулевой — и всё это верно при том, что записанного
|
|
115
|
+
нет. Восемь задач подряд считали отметку работающей по ответу команды, а она не двигала
|
|
116
|
+
ничего.
|
|
117
|
+
|
|
84
118
|
- **Своё временное кладётся вне дерева кода — иначе его снятие судится как правка приложения.**
|
|
85
|
-
Признак
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
временного называет профиль дерева, и лежит он вне дерева кода; положенный внутрь, он платит
|
|
90
|
-
этим отказом при каждой уборке.
|
|
119
|
+
Признак записи считает записью и удаление, и это в нём нарочно: снятое без замысла не
|
|
120
|
+
оставляет следа. Отличить свой временный каталог от каталога домена признаку нечем — путь у
|
|
121
|
+
обоих под тем же корнем, — и гард требует замысла за уборку черновика. Каталог называет
|
|
122
|
+
профиль дерева, и лежит он вне дерева кода.
|
|
91
123
|
|
|
92
124
|
- **Тело задачи, написанное вперёд замысла, называет способ, и способ стареет раньше дефекта.**
|
|
93
125
|
Задача серии заводится за недели до того, как её берут, и к этому дню предложенный ход бывает
|
|
@@ -124,10 +156,15 @@
|
|
|
124
156
|
подряд не пересилили одну строку на диске. Снимается она тем же ходом, которым владелец
|
|
125
157
|
ответил, — а не тем, в котором о ней вспомнили.
|
|
126
158
|
|
|
127
|
-
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
159
|
+
- **Очередь работ эпиком не кончается.** Занятый другими исполнителями или законченный эпик
|
|
160
|
+
означает следующую задачу из очереди, а не остановку: «свободных задач эпика нет» ответом на
|
|
161
|
+
«чем заняться» не бывает, потому что отвечает на этот вопрос не эпик, а очередь. Спрашивается
|
|
162
|
+
она командой, а не вспоминается по передаче: утверждение переданного текста описывает то
|
|
163
|
+
дерево и тот день, в котором его писали.
|
|
164
|
+
- **Шаг закрытия работы за взятие следующей задачи не считается.** Перевод закрываемой задачи в
|
|
165
|
+
колонку разбора и снятие её папки — обязательные шаги закрытия, и оба случаются тем же ходом,
|
|
166
|
+
которым открывается заявка. Ход, в котором больше ничего нет, работу не двигает, сколько бы
|
|
167
|
+
команд в нём ни стояло.
|
|
131
168
|
|
|
132
169
|
## Поведение исполнителя — по разборам происшествий
|
|
133
170
|
|
|
@@ -183,34 +220,27 @@
|
|
|
183
220
|
Отказ при этом уводит править образец пакета вместо копии под задачу.
|
|
184
221
|
- **Правка по замечаниям идёт без замысла на диске.** Папка разобрана коммитом ветки раньше
|
|
185
222
|
открытия заявки, и состояния у работы с этой минуты нет: судит её история ветки.
|
|
186
|
-
-
|
|
187
|
-
|
|
188
|
-
- **Граница состояния выглядит законченным куском лучше всякой вехи.** Владельцу отчёт о взятой
|
|
189
|
-
задаче неотличим от остановки: названы номер, ветка и колонка, и всё названное правда.
|
|
223
|
+
- **Граница состояния выглядит законченным куском лучше всякой вехи.** Отчёт о взятой задаче
|
|
224
|
+
владельцу неотличим от остановки: номер, ветка и колонка названы, и всё названное правда.
|
|
190
225
|
- **Заявка на чужом языке.** В дереве, где заявки пишутся на другом языке, чужой заголовок
|
|
191
226
|
дважды уехал на хостинг, и оба раза до него добрались глазами.
|
|
192
|
-
- **Вопрос, утонувший в отчёте.** Владелец трижды переспрашивал, почему работа
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
эпика — по списку она выглядела ровно как своя.
|
|
227
|
+
- **Вопрос, утонувший в отчёте.** Владелец трижды переспрашивал, почему работа стоит.
|
|
228
|
+
- **Чужой эпик в списке очереди.** Дважды подряд следующей брали первую задачу чужого эпика:
|
|
229
|
+
по списку она выглядит своей.
|
|
196
230
|
|
|
197
231
|
- **Некоммиченная папка задачи отказывает там, где чинить уже нечего.** Гард спрашивает её с
|
|
198
|
-
диска, поэтому все правки проходят без
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
пустоту вместо «Где стоим».
|
|
232
|
+
диска, поэтому все правки проходят без отказа, а признак отданной работы берётся из истории
|
|
233
|
+
ветки. Отказ приходит на открытии заявки — когда папка разобрана своими руками: замысел снят,
|
|
234
|
+
и собирать его приходится по памяти. Владелец при этом всю работу видит ветку без следа того,
|
|
235
|
+
что в ней делается.
|
|
203
236
|
- **Прогон, поставленный первым шагом закрытия, съедает окно захода.** Он стоит дороже всех
|
|
204
|
-
остальных шагов
|
|
205
|
-
|
|
237
|
+
остальных шагов вместе: потративший его упирался в порог заполнения на четырёх строках
|
|
238
|
+
привязки — на работе, которая шла бы минуту, будь она первой.
|
|
206
239
|
- **Разрешение работать вне назначенного эпика принадлежит рабочему дереву, а не ветке.**
|
|
207
240
|
Записанное в файл репозитория, оно уезжает вместе с веткой: из соседней его не видно, и гард
|
|
208
|
-
эпика отбивает ровно ту работу, которую владелец
|
|
209
|
-
|
|
210
|
-
Место такому разрешению там же, где передача захода: оно не откатывается вместе с правкой и не
|
|
211
|
-
принадлежит ни одной задаче.
|
|
241
|
+
эпика отбивает ровно ту работу, которую владелец разрешил — за один заход дважды. Место ему
|
|
242
|
+
там же, где передача захода: оно не откатывается с правкой и не принадлежит ни одной задаче.
|
|
212
243
|
- **Задача, вынесенная в другой эпик, снимается из состава прежнего тем же ходом.** Вынос — два
|
|
213
|
-
движения, и сделанное наполовину оставляет задачу в двух составах сразу:
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
сколько задач было, а не о том, сколько осталось.
|
|
244
|
+
движения, и сделанное наполовину оставляет задачу в двух составах сразу: эпик выглядит
|
|
245
|
+
незакрытым при всех сделанных работах. Итог вписывается там же, где правится состав:
|
|
246
|
+
отложенный, он пишется по памяти о том, сколько задач было, а не сколько осталось.
|
|
@@ -157,6 +157,11 @@ flowchart TD
|
|
|
157
157
|
только то, что импортировано тестом: ошибка типов в непокрытом коде доживает до сборки
|
|
158
158
|
образа, то есть до слияния. Четыре слияния подряд так и уехали в главную ветку, ломая
|
|
159
159
|
выкатку.
|
|
160
|
+
- **На машине, где раннеров несколько, любой путь от домашнего каталога общий.** Умолчание
|
|
161
|
+
готового шага опасно именно тем, что оно общее: соседнее задание переписывает его под свою
|
|
162
|
+
версию, пока наше стоит между шагами. Каталог установки, имя контейнера и имя сборщика
|
|
163
|
+
называются поэтому по проекту и постоянно, а временный каталог решением не бывает — в нём
|
|
164
|
+
живёт хранилище пакетов.
|
|
160
165
|
- **Набор гейта пуша не бывает уже набора конвейера.** Гейт — обещание, что пуш не приедет
|
|
161
166
|
красным; набор, из которого выкинуты сборка и снимки, обещает то, чего не проверяет. Шаг
|
|
162
167
|
конвейера, которому в наборе гейта нет ни строки, ни объявленного исключения с причиной,
|
|
@@ -168,6 +168,11 @@ flowchart TD
|
|
|
168
168
|
- **Сборка входит в набор наравне с линтом и юнитами.** Линтер типов не читает, а юниты читают
|
|
169
169
|
только импортированное тестом: ошибка типов в непокрытом коде доживает до сборки образа, то
|
|
170
170
|
есть до мержа.
|
|
171
|
+
- **На машине, где раннеров несколько, любой путь от домашнего каталога общий.** Умолчание
|
|
172
|
+
готового шага опасно именно тем, что оно общее: соседнее задание переписывает его под свою
|
|
173
|
+
версию, пока наше стоит между шагами. Каталог установки, имя контейнера и имя сборщика
|
|
174
|
+
называются поэтому по проекту и постоянно, а временный каталог решением не бывает — в нём
|
|
175
|
+
живёт хранилище пакетов.
|
|
171
176
|
- **Набор гейта пуша не бывает уже набора конвейера.** Гейт — обещание, что пуш не приедет
|
|
172
177
|
красным. Шаг конвейера, которому в наборе гейта нет ни строки, ни объявленного исключения с
|
|
173
178
|
причиной, отбивает пуш, а не печатается рядом: предупреждение читается как разрешение.
|
|
@@ -217,35 +222,33 @@ flowchart TD
|
|
|
217
222
|
|
|
218
223
|
- **Автор PR не может быть его ревьювером.** Запрос разбора на себя GitHub принимает и молча не
|
|
219
224
|
создаёт: разбор выглядит запрошенным. Считаются только запрос и отзыв не от автора.
|
|
220
|
-
- **Вызов клиента хостинга идёт из дерева, а связка команд исхода не проверяет.**
|
|
221
|
-
клиент
|
|
222
|
-
|
|
223
|
-
- **Метки, исполнитель и ревьювер PR ставятся вызовами `gh api`, а не `gh pr edit
|
|
224
|
-
борде
|
|
225
|
+
- **Вызов клиента хостинга идёт из дерева, а связка команд исхода не проверяет.** Вне дерева
|
|
226
|
+
клиент отказывает, а следующее звено связки увозит на хостинг остаток отказавшего: тело
|
|
227
|
+
читается обратно тем же ходом.
|
|
228
|
+
- **Метки, исполнитель и ревьювер PR ставятся вызовами `gh api`, а не `gh pr edit`:** на старой
|
|
229
|
+
борде тот отвечает отказом про Projects.
|
|
225
230
|
- **Борда правится запросом GraphQL по идентификатору борды, а не по имени владельца.**
|
|
226
|
-
- **Почта машинного коммита копируется из компаньона, а не набирается по памяти.**
|
|
227
|
-
`<число>+<логин>@users.noreply.github.com`
|
|
231
|
+
- **Почта машинного коммита копируется из компаньона, а не набирается по памяти.** Адрес
|
|
232
|
+
`<число>+<логин>@users.noreply.github.com` сходится по числу: с чужим числом коммит уезжает
|
|
228
233
|
подписанным посторонним. Ту же строку держит профиль дерева, и гард отбивает пуш.
|
|
229
|
-
- **Личность машинной записи подтверждается ответом хостинга, а не узнаванием
|
|
230
|
-
|
|
231
|
-
- **Сценарии гардов задают настройки git сами, а не берут их с машины.**
|
|
232
|
-
|
|
233
|
-
|
|
234
|
+
- **Личность машинной записи подтверждается ответом хостинга, а не узнаванием строки:** её
|
|
235
|
+
спрашивают токеном, и логин с числом приходят вместе.
|
|
236
|
+
- **Сценарии гардов задают настройки git сами, а не берут их с машины.** Подпись с машины уводит
|
|
237
|
+
git в агент ключей, а заблокированный агент роняет весь набор: автор, почта и подпись идут
|
|
238
|
+
флагами `-c` прямо в команде.
|
|
234
239
|
|
|
235
240
|
- **Каждый коммит вклада ветки подписан машинной записью, и это проверяется набором пуша.** Гард
|
|
236
|
-
судит только коммит, назвавшийся
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
возврата.** Открытие и постановка ревьювера отвечают нулём и тогда, когда не сделали ничего.
|
|
241
|
+
судит только коммит, назвавшийся ею: подписанный человеком проходит мимо.
|
|
242
|
+
- **Состояние заявки перечитывается у хостинга сразу после публикации.** Открытие и постановка
|
|
243
|
+
ревьювера отвечают нулём и тогда, когда не сделали ничего.
|
|
240
244
|
- **Автор открытой заявки и наличие у неё ревьювера сверяются очередью работ.** До слияния оба
|
|
241
|
-
промаха не видны: заявка, открытая человеком, ревьювера не получит
|
|
242
|
-
заявка, которой его
|
|
243
|
-
- **Ревьюверы спрашиваются вызовом REST, а не выборкой клиента.** Её поля собирает GraphQL,
|
|
244
|
-
|
|
245
|
+
промаха не видны: заявка, открытая человеком, ревьювера не получит никогда — и выглядит как
|
|
246
|
+
заявка, которой его не поставили.
|
|
247
|
+
- **Ревьюверы спрашиваются вызовом REST, а не выборкой клиента.** Её поля собирает GraphQL, прав
|
|
248
|
+
на который у машинной записи нет: «сошлось» не отличить от «спросить было нечем».
|
|
245
249
|
|
|
246
|
-
- **Рабочее дерево не опустошается ради прогона инструмента.** Сравнение
|
|
247
|
-
|
|
248
|
-
дерева, ни сверка.
|
|
250
|
+
- **Рабочее дерево не опустошается ради прогона инструмента.** Сравнение идёт на второй копии:
|
|
251
|
+
прятанье уводит незакоммиченную работу туда, где её не видит ни состояние дерева, ни сверка.
|
|
249
252
|
|
|
250
253
|
## Чего из закона здесь нет
|
|
251
254
|
|
|
@@ -159,6 +159,11 @@ flowchart TD
|
|
|
159
159
|
только то, что импортировано тестом: ошибка типов в непокрытом коде доживает до сборки
|
|
160
160
|
образа, то есть до слияния. Четыре слияния подряд так и уехали в главную ветку, ломая
|
|
161
161
|
выкатку.
|
|
162
|
+
- **На машине, где раннеров несколько, любой путь от домашнего каталога общий.** Умолчание
|
|
163
|
+
готового шага опасно именно тем, что оно общее: соседнее задание переписывает его под свою
|
|
164
|
+
версию, пока наше стоит между шагами. Каталог установки, имя контейнера и имя сборщика
|
|
165
|
+
называются поэтому по проекту и постоянно, а временный каталог решением не бывает — в нём
|
|
166
|
+
живёт хранилище пакетов.
|
|
162
167
|
- **Набор гейта пуша не бывает уже набора конвейера.** Гейт — обещание, что пуш не приедет
|
|
163
168
|
красным; набор, из которого выкинуты сборка и снимки, обещает то, чего не проверяет. Шаг
|
|
164
169
|
конвейера, которому в наборе гейта нет ни строки, ни объявленного исключения с причиной,
|
|
@@ -93,24 +93,25 @@ flowchart TD
|
|
|
93
93
|
- **Каждое утверждение привязано к месту в коде, и связь сверяется в обе стороны.** Ключ
|
|
94
94
|
связи — сам текст утверждения, поэтому переформулировать его, забыв про привязку, нельзя.
|
|
95
95
|
- **Первая колонка компаньона — текст статьи, скопированный, а не пересказанный.** Ключ связи —
|
|
96
|
-
сам
|
|
97
|
-
|
|
98
|
-
знает ничего: совпадает род, а не перечень, и строка стоит до перечитывания диффа.
|
|
96
|
+
сам текст: строка, написанная по смыслу, разрывает связь, оставаясь на вид заполненной. Проверка
|
|
97
|
+
считает статьи без адреса и о статье с чужим адресом не знает ничего.
|
|
99
98
|
- **Привязка не ведёт в код, который никто не зовёт:** нигде не зовущийся символ — не место.
|
|
99
|
+
- **Привязка «не исполняется» переезжает вместе со своей статьёй.** Иначе строка компаньона
|
|
100
|
+
держит в горячей части статью, за которой не стоит ничего: снятая одна, она оставляет привязку
|
|
101
|
+
без пункта, и сверка краснеет. Переезжают обе стороны разом.
|
|
100
102
|
- **Таблица процедур сверяется с декораторами в обе стороны, право — вместе с именем.** Иначе
|
|
101
|
-
процедура, которую домен обслуживает, но забыл описать, видна только в
|
|
102
|
-
|
|
103
|
-
- **Код отказа принимается, только если он в домене бросается.** Коды выписывались по
|
|
104
|
-
|
|
105
|
-
- **Префикс сценариев в спеке один, и по всему дереву он занят им одним.** Второй префикс
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
- **Номер сценария выдаётся один раз и повторно не используется.** Новый
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
Пересчитать номера подряд особенно дёшево на вид: тесты зелёные и до, и после.
|
|
103
|
+
процедура, которую домен обслуживает, но забыл описать, видна только в декораторе, а право,
|
|
104
|
+
разошедшееся со спеком, — нигде.
|
|
105
|
+
- **Код отказа принимается, только если он в домене бросается.** Коды выписывались по замыслу, и
|
|
106
|
+
на одном пути обещанный отказ не бросал никто.
|
|
107
|
+
- **Префикс сценариев в спеке один, и по всему дереву он занят им одним.** Второй префикс внутри
|
|
108
|
+
спека означает, что предмет описан дважды; занятый чужим — что по номеру не видно, чей это
|
|
109
|
+
сценарий. Договорённость о продукте нумеруется вместе со спеком, в который вольётся, и занятым
|
|
110
|
+
префикс от неё не становится.
|
|
111
|
+
- **Номер сценария выдаётся один раз и повторно не используется.** Новый берёт следующий
|
|
112
|
+
свободный, а не вставляется в середину и не занимает номер удалённого — на месте удалённого
|
|
113
|
+
номер остаётся пустым. Номер связывает сценарий с тестом, и отданный второй раз он оставляет
|
|
114
|
+
старую ссылку верной на вид; пересчёт подряд дёшев обманчиво — тесты зелёные и до, и после.
|
|
114
115
|
- **Сценарий и заголовок его теста правятся одним изменением.** Изменилось обещание — номер тот
|
|
115
116
|
же, а заголовок теста правится тем же коммитом; удалён сценарий — удаляется и тест.
|
|
116
117
|
Разъехавшись, они оставляют прогон зелёным, хотя проверяет он уже не то.
|
|
@@ -126,7 +127,7 @@ flowchart TD
|
|
|
126
127
|
привязывать не к чему, а требование правила заставило бы завести его с якорями в
|
|
127
128
|
несуществующие места. Признак стоит строкой статуса в самом законе, а не в списке исключений
|
|
128
129
|
рядом с проверкой.
|
|
129
|
-
- **Закон, назвавший файл проекта, — отказ.** Путям и привязкам место в
|
|
130
|
+
- **Закон, назвавший файл проекта, — отказ.** Путям и привязкам место в правиле, иначе закон
|
|
130
131
|
нельзя ни прочитать без знания дерева, ни применить на другом приложении.
|
|
131
132
|
- **Описание правила не длиннее трёхсот знаков и отвечает на один вопрос — брать это правило
|
|
132
133
|
или нет.** Описание едет в системный промпт каждого захода целиком, и платит его заход, чем бы
|
|
@@ -271,18 +272,16 @@ flowchart TD
|
|
|
271
272
|
что текст судится не слабее своей копии, что невыбранная редакция судится наравне с выбранной и
|
|
272
273
|
что набор разделов объявлен отдельно от образца, исполняются там, где эти тексты пишут, — в
|
|
273
274
|
наборе того пакета, который их везёт. В дереве-потребителе лежат разложенные копии, и краснеть
|
|
274
|
-
у него на
|
|
275
|
-
собой не считается нигде и ни у кого: оно ищется чтением.
|
|
275
|
+
у него на чужом промахе проверка не должна. Согласие двух текстов ищется чтением.
|
|
276
276
|
|
|
277
277
|
Форму сжатой статьи не проверяет ничто, и проверки на неё не будет: машине видно число знаков,
|
|
278
278
|
но не то, принимается ли по сжатой статье прежнее решение. Довод, вырезанный вместе с границей
|
|
279
|
-
утверждения, короче правильного и проходит любой счёт знаков. Стережёт это
|
|
280
|
-
текста: он говорит, что правило переросло, и
|
|
281
|
-
|
|
279
|
+
утверждения, короче правильного и проходит любой счёт знаков. Стережёт это один предел длины
|
|
280
|
+
текста: он говорит, что правило переросло, и молчит, что именно резать. Судится сжатие
|
|
281
|
+
пересказом — тем, кто правит по сжатой статье следующим.
|
|
282
282
|
|
|
283
283
|
Долю довода в правиле не считает ничто. Замер, на котором стоит форма, сделан разовым проходом
|
|
284
|
-
и в дерево не поехал: он отвечает на
|
|
285
|
-
когда снова спрашивают о весе.
|
|
284
|
+
и в дерево не поехал: он отвечает на «где вес», а не на «сошлось ли».
|
|
286
285
|
|
|
287
286
|
## Паттерны
|
|
288
287
|
|
|
@@ -173,7 +173,7 @@ flowchart TD
|
|
|
173
173
|
Страж читает прежний номер этапа из истории ветки и не выпускает ход, в котором номер вырос, а
|
|
174
174
|
команда не запускалась: через заход отмеченное по памяти неотличимо от проверенного.
|
|
175
175
|
- **Слово об остановке страж читает у владельца, а не у исполнителя.** Иначе остановку объявляет
|
|
176
|
-
тот, кому она
|
|
176
|
+
тот, кому она удобна, и запрет держится до первого неудобства.
|
|
177
177
|
- **Утверждение о состоянии дерева стережёт гард утверждения, а не память исполнителя.** Всё, что
|
|
178
178
|
ответ владельцу говорит о дереве, несёт команду и её вывод: сказанное без команды утверждением
|
|
179
179
|
не считается — ни «проверено», ни «снято», ни «готово». Гард читает текст, сказанный владельцу
|
|
@@ -259,24 +259,22 @@ flowchart TD
|
|
|
259
259
|
проверяется деревом. Порядок входа — четыре шага в паттерне возвращения; стережёт его гард, а не
|
|
260
260
|
память.
|
|
261
261
|
- **Состояние незаконченной работы приходит в контекст на запуске сессии.** Замысел и ход работы
|
|
262
|
-
отдаются целиком, разбор просьбы — путём. Ветка вида `<КЛЮЧ>-*` без папки
|
|
263
|
-
|
|
262
|
+
отдаются целиком, разбор просьбы — путём. Ветка вида `<КЛЮЧ>-*` без папки предупреждает готовой
|
|
263
|
+
командой, но сессию не рвёт.
|
|
264
264
|
- **Заполненное окно кончает ход только там, где сжатия нет.** Где оно объявлено, окно —
|
|
265
265
|
продолжение хода: заход сжимается и работает дальше, а порог остановки срабатывает лишь тогда,
|
|
266
|
-
когда сжатие не пришло. Ход, закрытый ниже порога, теряет остаток окна, за
|
|
267
|
-
|
|
266
|
+
когда сжатие не пришло. Ход, закрытый ниже порога, теряет остаток окна, за который дерево
|
|
267
|
+
заплатило настройкой, и ловит это один владелец.
|
|
268
268
|
- **Заполнение окна захода стережёт гард, а не память исполнителя.** На первом пороге он
|
|
269
|
-
напоминает выбирать точку остановки, на втором отбивает всё, кроме
|
|
270
|
-
и
|
|
271
|
-
получает.
|
|
269
|
+
напоминает выбирать точку остановки, на втором отбивает всё, кроме передачи, команд поставки и
|
|
270
|
+
папки задачи — папки целиком: на закрытии правят и решение по ходу, и пересмотр этапа. Размер окна и оба порога дерево задаёт само; не задавшее размера стража не получает.
|
|
272
271
|
- **Порог сжатия контекста дерево задаёт само, и стоит он НИЖЕ порога остановки.** Совпавшие
|
|
273
|
-
пороги
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
работы заводится вторая запись об одном и том же.
|
|
272
|
+
пороги — гонка, и выигрывает её страж: он стоит на вызове, а сжатие приходит между ходами. Расстояние объявляется числом, а не выводится разницей; сведены
|
|
273
|
+
ли пороги, говорит разбор состояния раскладки.
|
|
274
|
+
- **Заход закрывается передачей, и лежит она разделом хода работы.** Он коммитится и едет в
|
|
275
|
+
ветку — значит передача переживает переход на другую машину, а второй записи об одном и том
|
|
276
|
+
же не заводится. В ней дерево, ветка, сделанное, следующий шаг и особенности захода; у работы
|
|
277
|
+
без папки задачи она уезжает файлом вне дерева.
|
|
280
278
|
|
|
281
279
|
- **Вариант, глушащий проверку, в меню не ставится вовсе.** Выключенное правило линтера, строка
|
|
282
280
|
в списке известного, выведенный из-под проверки файл — все они чинят показание, а не то, на что
|
|
@@ -17,7 +17,7 @@ description: Правило под «Закон о ведении работы»
|
|
|
17
17
|
| В законе | Здесь |
|
|
18
18
|
| -------------------------- | ----------------------------------------------------------------------------- |
|
|
19
19
|
| вход в заход | то, что хук старта кладёт в контекст до первой реплики |
|
|
20
|
-
| переданное прошлым заходом | файл по имени ветки в каталоге передач; пишет его хук перед сжатием контекста |
|
|
20
|
+
| переданное прошлым заходом | раздел «Передача захода» в ходе работы этой ветки, а у работы без папки задачи — файл по имени ветки в каталоге передач; пишет его хук перед сжатием контекста |
|
|
21
21
|
| порядок ведения работы | карта хода — состояния с обязательными действиями и четыре выхода хода |
|
|
22
22
|
| запуск | первый запуск, возобновление, сжатие контекста, очистка |
|
|
23
23
|
|
|
@@ -32,9 +32,11 @@ description: Правило под «Закон о ведении работы»
|
|
|
32
32
|
|
|
33
33
|
```mermaid
|
|
34
34
|
flowchart TD
|
|
35
|
-
A[Запуск захода] --> B{Есть
|
|
36
|
-
B -->|Да| C[
|
|
37
|
-
B -->|Нет|
|
|
35
|
+
A[Запуск захода] --> B{Есть раздел передачи в ходе работы этой ветки}
|
|
36
|
+
B -->|Да| C[Раздел кладётся в контекст целиком, файл вне дерева не читается]
|
|
37
|
+
B -->|Нет| B2{Есть файл передачи по имени ветки}
|
|
38
|
+
B2 -->|Да| C
|
|
39
|
+
B2 -->|Нет| D[О передаче не говорится ничего]
|
|
38
40
|
C --> E{Разложен ресурс карты хода}
|
|
39
41
|
D --> E
|
|
40
42
|
E -->|Да| F[Карта кладётся следом: состояния, действия, четыре выхода]
|
|
@@ -80,6 +80,13 @@ flowchart TD
|
|
|
80
80
|
молча, а компилируется из них только одна.
|
|
81
81
|
<!-- rt-when: *.ts -->
|
|
82
82
|
|
|
83
|
+
- **Значение, объявленное одной стороной обмена, второй стороной не пересчитывается, а берётся
|
|
84
|
+
у первой.** Два счёта одного значения расходятся молча: признак дерева считали и отправка, и
|
|
85
|
+
отметка — каждая своей копией, — копии разошлись, и отметка не нашла ни одной своей записи ни
|
|
86
|
+
разу. Обе стороны при этом отвечали как обычно, и промах нашёлся только с третьей стороны:
|
|
87
|
+
чтением того, что легло на самом деле.
|
|
88
|
+
<!-- rt-when: *.ts -->
|
|
89
|
+
|
|
83
90
|
- **Двухступенчатое приведение `as unknown as` запрещено правилом линтера.** Вместо него —
|
|
84
91
|
честный тип, сужение проверкой или чтение поля формой (`Reflect.get`); место, где иначе
|
|
85
92
|
нельзя, помечается точечным отключением с причиной в той же строке.
|
|
@@ -62,6 +62,17 @@ awk '/^```/ { fence = !fence } !fence && /^## / { print }' <файл ресур
|
|
|
62
62
|
От ресурса целиком отказываются не здесь, а списком `skip` в конфиге: надстройка правит текст,
|
|
63
63
|
`skip` отменяет файл.
|
|
64
64
|
|
|
65
|
+
## Надстройку карты гейта не проверяет ничто
|
|
66
|
+
|
|
67
|
+
Сценарии пакета гоняют его умолчание и веток дерева не касаются: своих проб у надстройки нет, и
|
|
68
|
+
места для них тоже. Карта решает, какое правило грузится под каждую правку, то есть чем заход
|
|
69
|
+
руководствуется в работе, а держится она прогоном руками и памятью того, кто её правил.
|
|
70
|
+
|
|
71
|
+
Промах в ней молчит: неверная ветка не отказывает, а тихо отдаёт не то правило — заметен он
|
|
72
|
+
только по объёму загруженного и по тому, что в загруженном не нашлось ответа. Поэтому правка
|
|
73
|
+
карты кончается вызовом гейта на трёх путях: на том, ради которого правили, на соседнем,
|
|
74
|
+
который правка задеть не должна была, и на файле, у которого правила нет вовсе.
|
|
75
|
+
|
|
65
76
|
## Гейт: своя ветка решает раньше умолчания
|
|
66
77
|
|
|
67
78
|
Гейт спрашивает `skill_for` — она печатает имя правила или молчит. Молчание значит «правила на
|
|
@@ -81,8 +81,13 @@ npx agent-kit sync --check # ничего не писать, отказать
|
|
|
81
81
|
npx agent-kit stats # чем пользовались, чем ни разу, обо что спотыкались
|
|
82
82
|
npx agent-kit enroll --code <код> # завести дерево в приёме и положить его токен
|
|
83
83
|
npx agent-kit propose # отправить груз в приём: сводку, предложения и разборы
|
|
84
|
+
npx agent-kit adopt [файлы] # отдать пакету свой файл, лежащий на его пути
|
|
84
85
|
```
|
|
85
86
|
|
|
87
|
+
Отдача откладывает прежнее содержимое рядом, с пометкой `.before-rt-kit`, и освобождает путь под
|
|
88
|
+
раскладку; без имён отдаются все чужие файлы разом. Названа она здесь потому, что иначе её
|
|
89
|
+
находят по тексту отказа раскладки — то есть в ту минуту, когда работа уже встала.
|
|
90
|
+
|
|
86
91
|
Часть команд слоя исполняет агент, а не программа: `/feedback` кладёт слово о правилах блоком в
|
|
87
92
|
файл предложений, `/skill-curator` разбирает закрытую задачу, `/next-session` закрывает заход.
|
|
88
93
|
|
|
@@ -227,8 +232,13 @@ npx agent-kit propose # отправить груз в приём: сво
|
|
|
227
232
|
2. Снимок того, что говорят проверки дерева, до единой правки. Он и есть мерило.
|
|
228
233
|
3. Ресурс за ресурсом: пакетную редакцию довести до здешней, предметность вынести в
|
|
229
234
|
надстройку, снять отказ, разложить, прогнать сценарии и сверить снимок.
|
|
230
|
-
4. Разложенное поверх своего пакет не пишет: файл без шапки для него чужой.
|
|
231
|
-
|
|
235
|
+
4. Разложенное поверх своего пакет не пишет: файл без шапки для него чужой. Отдаётся он
|
|
236
|
+
командой `adopt` — прежнее содержимое ложится рядом с пометкой `.before-rt-kit`, и снять его
|
|
237
|
+
потом решает владелец.
|
|
238
|
+
5. Свои сценарии отданного файла переписываются под пакетное поведение либо снимаются. Чинить
|
|
239
|
+
пакетную редакцию на месте нельзя: правка разложенной копии живёт до следующей раскладки, а
|
|
240
|
+
её адрес — источник пакета или надстройка дерева. Сценарий, ждущий поведения снятого файла,
|
|
241
|
+
краснеет и после верной отдачи: он проверяет то, чего в дереве больше нет.
|
|
232
242
|
|
|
233
243
|
## Свойства дерева
|
|
234
244
|
|
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;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;
|
|
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"}
|