@bluewombat/runtime 0.9.0 → 0.11.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/README.md +200 -99
- package/SPECS.md +121 -19
- package/dist/cli.js +35 -4
- package/dist/cli.js.map +1 -1
- package/dist/config/agent-shorthand.d.ts +25 -5
- package/dist/config/agent-shorthand.d.ts.map +1 -1
- package/dist/config/agent-shorthand.js +65 -21
- package/dist/config/agent-shorthand.js.map +1 -1
- package/dist/config/fixture-yaml.d.ts +8 -0
- package/dist/config/fixture-yaml.d.ts.map +1 -0
- package/dist/config/fixture-yaml.js +30 -0
- package/dist/config/fixture-yaml.js.map +1 -0
- package/dist/config/home.d.ts +2 -0
- package/dist/config/home.d.ts.map +1 -1
- package/dist/config/home.js +2 -0
- package/dist/config/home.js.map +1 -1
- package/dist/config/load-config.d.ts.map +1 -1
- package/dist/config/load-config.js +301 -62
- package/dist/config/load-config.js.map +1 -1
- package/dist/config/parse-args.d.ts +1 -1
- package/dist/config/parse-args.d.ts.map +1 -1
- package/dist/config/parse-args.js +84 -58
- package/dist/config/parse-args.js.map +1 -1
- package/dist/config/types.d.ts +96 -16
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +13 -1
- package/dist/config/types.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/loop/authority.d.ts +38 -1
- package/dist/loop/authority.d.ts.map +1 -1
- package/dist/loop/authority.js +41 -2
- package/dist/loop/authority.js.map +1 -1
- package/dist/loop/context.d.ts +16 -1
- package/dist/loop/context.d.ts.map +1 -1
- package/dist/loop/drive.d.ts +9 -3
- package/dist/loop/drive.d.ts.map +1 -1
- package/dist/loop/drive.js +17 -7
- package/dist/loop/drive.js.map +1 -1
- package/dist/loop/features.d.ts +16 -0
- package/dist/loop/features.d.ts.map +1 -1
- package/dist/loop/features.js +404 -62
- package/dist/loop/features.js.map +1 -1
- package/dist/loop/open-host.d.ts +10 -0
- package/dist/loop/open-host.d.ts.map +1 -1
- package/dist/loop/open-host.js +111 -9
- package/dist/loop/open-host.js.map +1 -1
- package/dist/loop/report.d.ts.map +1 -1
- package/dist/loop/report.js +21 -9
- package/dist/loop/report.js.map +1 -1
- package/dist/loop/streams.d.ts +3 -0
- package/dist/loop/streams.d.ts.map +1 -1
- package/dist/loop/streams.js +2 -1
- package/dist/loop/streams.js.map +1 -1
- package/dist/loop/tick.d.ts +3 -0
- package/dist/loop/tick.d.ts.map +1 -1
- package/dist/loop/tick.js.map +1 -1
- package/dist/loop/trace.d.ts +1 -0
- package/dist/loop/trace.d.ts.map +1 -1
- package/dist/loop/trace.js +2 -2
- package/dist/loop/trace.js.map +1 -1
- package/dist/loop/transformers.d.ts +16 -2
- package/dist/loop/transformers.d.ts.map +1 -1
- package/dist/loop/transformers.js +126 -22
- package/dist/loop/transformers.js.map +1 -1
- package/dist/loop/warm.js +1 -1
- package/dist/loop/warm.js.map +1 -1
- package/dist/operator/agent-plugins.d.ts.map +1 -1
- package/dist/operator/agent-plugins.js +14 -8
- package/dist/operator/agent-plugins.js.map +1 -1
- package/dist/operator/board.d.ts +43 -4
- package/dist/operator/board.d.ts.map +1 -1
- package/dist/operator/board.js +153 -10
- package/dist/operator/board.js.map +1 -1
- package/dist/operator/doctor.d.ts +1 -1
- package/dist/operator/doctor.d.ts.map +1 -1
- package/dist/operator/doctor.js +76 -29
- package/dist/operator/doctor.js.map +1 -1
- package/dist/operator/explain.d.ts.map +1 -1
- package/dist/operator/explain.js +36 -12
- package/dist/operator/explain.js.map +1 -1
- package/dist/operator/film.js +0 -3
- package/dist/operator/film.js.map +1 -1
- package/dist/operator/incident-dossier.d.ts +154 -0
- package/dist/operator/incident-dossier.d.ts.map +1 -0
- package/dist/operator/incident-dossier.js +696 -0
- package/dist/operator/incident-dossier.js.map +1 -0
- package/dist/operator/incident-system.d.ts +48 -0
- package/dist/operator/incident-system.d.ts.map +1 -0
- package/dist/operator/incident-system.js +152 -0
- package/dist/operator/incident-system.js.map +1 -0
- package/dist/operator/incident.d.ts +27 -0
- package/dist/operator/incident.d.ts.map +1 -0
- package/dist/operator/incident.js +220 -0
- package/dist/operator/incident.js.map +1 -0
- package/dist/operator/init.js +27 -22
- package/dist/operator/init.js.map +1 -1
- package/dist/operator/live.js +4 -4
- package/dist/operator/live.js.map +1 -1
- package/dist/operator/log.d.ts +2 -0
- package/dist/operator/log.d.ts.map +1 -1
- package/dist/operator/log.js +7 -3
- package/dist/operator/log.js.map +1 -1
- package/dist/operator/restart.d.ts +20 -0
- package/dist/operator/restart.d.ts.map +1 -0
- package/dist/operator/restart.js +63 -0
- package/dist/operator/restart.js.map +1 -0
- package/dist/operator/setup.d.ts.map +1 -1
- package/dist/operator/setup.js +2 -0
- package/dist/operator/setup.js.map +1 -1
- package/package.json +14 -14
package/SPECS.md
CHANGED
|
@@ -71,7 +71,7 @@ See § 8.
|
|
|
71
71
|
|
|
72
72
|
## 4. Loading a manager
|
|
73
73
|
|
|
74
|
-
`
|
|
74
|
+
`feature.tracker.package` and `ticket.tracker.package` are each a package name or a path. The two sides may name the same package or two different ones: a package asked for a side it does not answer is refused by name. One package with the same options on both sides is built once. `doctor` and `setup` run each distinct manager once; the reference work line is named by the ticket tracker, which holds the Authority. Resolution imports the bare specifier
|
|
75
75
|
first — mason and its managers installed side by side in one project — then
|
|
76
76
|
walks up from the config file's directory, which covers a global `mason`
|
|
77
77
|
driving a locally installed manager. A module without `createManager` is
|
|
@@ -103,6 +103,7 @@ The FeatureTracker's `listen` delivers Features whose specification is final.
|
|
|
103
103
|
| `invalid` (new, or the intention changed) | emit `invalid` on the Feature, keyed by fingerprint |
|
|
104
104
|
| `invalid` (same fingerprint as recorded) | leave it; the tracker was told, and telling it is what delivered it again |
|
|
105
105
|
| `upsert` (absent or `waiting`) | `admitFeature`, emit `accepted`. Nothing is driven here: the sweep does it |
|
|
106
|
+
| `upsert` (`open` or `escalated`) whose `skip_feature_test` differs from the ledger's | `setFeatureSkipFeatureTest`; journal `skip-feature-test`; no other change |
|
|
106
107
|
| `upsert` (any other state) | leave it; journal `skipped`. An echo of a Host report is this row |
|
|
107
108
|
| `upsert` + `signalsResume` while `escalated` | same as `resume` — a poll snapshot has no `labeled` edge |
|
|
108
109
|
| `resume` | resume the Feature, emit `resumed` |
|
|
@@ -139,6 +140,35 @@ advanced (`advanceProject`):
|
|
|
139
140
|
4. A Feature whose Tickets are all blocked escalates; one that cannot be
|
|
140
141
|
settled because the Authority lacks `settled` waits.
|
|
141
142
|
|
|
143
|
+
The Feature's own work (`.mason/feature-workspaces/<feature>`) is cut from its
|
|
144
|
+
line once, when it is closed, and a pass that sent it to the fix finds it where
|
|
145
|
+
it was left. A resume is the one time the line may have gained commits since
|
|
146
|
+
(a person's): `resumeFeature` marks the work stale (`workspace_stale`), and the
|
|
147
|
+
next pass, before judging, refreshes the line and runs the Integration with the
|
|
148
|
+
work as Parent and the line copy as Child (`<key>:resume`), so what the work
|
|
149
|
+
holds, a refused fix's commits included, stays. Once it is done the mark is
|
|
150
|
+
cleared (`markFeatureWorkspaceCurrent`); a refresh that fails or an interrupt
|
|
151
|
+
leaves it, and the next pass tries again. A conflict is not settled by Host: the
|
|
152
|
+
Feature escalates (`assembly`) with a reason naming the conflict, the work left
|
|
153
|
+
as it was, and the mark stays for the next resume. A work cut after the resume
|
|
154
|
+
is current by construction.
|
|
155
|
+
|
|
156
|
+
The feature-test acceptance check, when the Project declares it (`feature.test`):
|
|
157
|
+
|
|
158
|
+
- A Feature does not open (and is reported `invalid`, once per reason) unless it holds exactly
|
|
159
|
+
one feature-test Ticket (`TicketEntry.featureTest`), blocked by every other live Ticket, or carries `skip_feature_test`.
|
|
160
|
+
- A Ticket with `feature-test` is admitted with `feature-test`, and
|
|
161
|
+
Transformers makes it with `feature.test` (its command, its Gates, for the first pass, a refused
|
|
162
|
+
pass and the recheck) instead of the producer and the repair.
|
|
163
|
+
- A Feature with `skip_feature_test` has its feature-test Ticket cancelled by the sweep (journal
|
|
164
|
+
`feature-test-ticket-cancelled`, a trace line), and Transformers leaves out, for that Feature, every
|
|
165
|
+
Gate of `feature.validate`, `feature.gates` and `feature.fix` that has `skipWhen:
|
|
166
|
+
skip-feature-test`: the journal gets `gate-skipped` with the Gate id and the reason, and the trace
|
|
167
|
+
says "`<id>` not run: the Feature carries skip-feature-test". The mark is read from the ledger as
|
|
168
|
+
each pass starts (`TransformerSlots.marks`).
|
|
169
|
+
- A Feature that is not marked and no longer holds a live feature-test Ticket (it was cancelled while the
|
|
170
|
+
mark was on) escalates when it closes.
|
|
171
|
+
|
|
142
172
|
Host never drives an `escalated` unit: that state is frozen until a human `resume`.
|
|
143
173
|
|
|
144
174
|
Every Event Host emits is a write to the tracker, and a tracker that lists by
|
|
@@ -204,7 +234,7 @@ the Ticket that was driven. The work line copy is refreshed onto the Feature's
|
|
|
204
234
|
line before a Ticket starts: starting on a copy that was not fast-forwarded
|
|
205
235
|
would build on a version that no longer exists.
|
|
206
236
|
|
|
207
|
-
## 8. init, setup, doctor, watch, status, log, cancel and release
|
|
237
|
+
## 8. init, setup, doctor, watch, status, log, incident, cancel and release
|
|
208
238
|
|
|
209
239
|
`init` writes a config that already runs: the Builder is a stub that says what to replace
|
|
210
240
|
(example Cursor CLI and Claude Code Builders live in `@bluewombat/slots/builders/`),
|
|
@@ -212,22 +242,22 @@ and the Gate sequence starts empty. Example Gates live in
|
|
|
212
242
|
`@bluewombat/slots/gates/` (`parent-clean`, `sensitive-path`,
|
|
213
243
|
`workspace-changed`, `ci-green`).
|
|
214
244
|
|
|
215
|
-
Four
|
|
216
|
-
`
|
|
217
|
-
pass with no producer of its own.
|
|
218
|
-
dispatched between buckets: a check that is right for one pass can be wrong
|
|
245
|
+
Four Gate sequences: `ticket.build.gates`, shared by `ticket.build.producer` and
|
|
246
|
+
`ticket.build.repair`, then `ticket.fix.gates`, `ticket.validate.gates` and
|
|
247
|
+
`ticket.gates` for the one judgement-only pass with no producer of its own.
|
|
248
|
+
The assembly sequences are not shared and nothing is dispatched between buckets: a check that is right for one pass can be wrong
|
|
219
249
|
for another, even within the same stage — `workspace-changed` says an Attempt
|
|
220
|
-
that changed nothing did nothing, which is true of `
|
|
221
|
-
and false of `
|
|
222
|
-
was left to do.
|
|
223
|
-
|
|
250
|
+
that changed nothing did nothing, which is true of `ticket.build.producer`/`repair`
|
|
251
|
+
and false of `ticket.gates`'s pass, whose correct outcome is that nothing
|
|
252
|
+
was left to do. A repair Attempt is judged by `ticket.build.gates`, the same list as the
|
|
253
|
+
producer's (Host hands Implementer that list as both `gates` and `repairGates`). The assembly's
|
|
224
254
|
judgement-only pass produces nothing unless something refused it first: it is
|
|
225
|
-
a judgement, and a refusal is `
|
|
226
|
-
things may judge it: `
|
|
227
|
-
was published) and, optionally, `
|
|
228
|
-
that runs before either, judged by its own `
|
|
229
|
-
`
|
|
230
|
-
`maxRefusals` budget.
|
|
255
|
+
a judgement, and a refusal is `ticket.fix`, not a second first-pass. Two
|
|
256
|
+
things may judge it: `ticket.gates` (and an Authority's own checks on what
|
|
257
|
+
was published) and, optionally, `ticket.validate` — a local, read-only pass
|
|
258
|
+
that runs before either, judged by its own `ticket.validate.gates`, not
|
|
259
|
+
`ticket.gates`. Both send a refusal to the same `fix` and spend the same
|
|
260
|
+
`ticket.maxRefusals` budget.
|
|
231
261
|
|
|
232
262
|
Every child of a Task carries its own ceiling and no other. Every `cmd` names
|
|
233
263
|
its own `timeoutMs`, and none is inherited from a neighbour — nothing else
|
|
@@ -236,7 +266,7 @@ or its sequence's `defaultTimeoutMs`, and a Gate that would end up with neither
|
|
|
236
266
|
is refused when the config loads. Nothing is derived from what another child
|
|
237
267
|
left behind, so what bounds a whole Task is arithmetic the Project can do:
|
|
238
268
|
the builder's `maxAttempts` times its producer's ceiling plus the sum of its Gates'.
|
|
239
|
-
An assembly fix is bounded the same way from `
|
|
269
|
+
An assembly fix is bounded the same way from `ticket.maxAttempts` and `ticket.fix`.
|
|
240
270
|
Root `timeoutMs` bounds what is outside a Task — the manager, the
|
|
241
271
|
isolations. Host has no flag named after a tracker (`--repo` is not a Host
|
|
242
272
|
flag): tracker fields come from that package.
|
|
@@ -336,9 +366,16 @@ poll. A `listen` that did not complete is never held and never hidden.
|
|
|
336
366
|
`watch` and `status` are the operator live view. They open the ledger the same
|
|
337
367
|
way `run` does (`openFilesystemPersist` then `openWorkLedger`) and they do not
|
|
338
368
|
open a manager, Conductor, or Host. `status` prints a snapshot of every known
|
|
339
|
-
Ticket and exits
|
|
369
|
+
Feature and Ticket and exits: a header with the counts, then one line per Feature
|
|
370
|
+
(key, state, title, the Submission or why it stopped) with its Tickets indented
|
|
371
|
+
under it, then the Tickets that belong to no Feature under `No Feature`. A Ticket
|
|
372
|
+
holding the feature tests is marked `[feature-test]`. Features that need a person
|
|
373
|
+
(`escalated`) come first, then those in progress, then `done` and `cancelled`.
|
|
374
|
+
Keys are ordered by tracker, then by number (`#18` before `#107`), the order
|
|
375
|
+
`incident` lists what waits for a person in too. Plain text, no colour. `watch` prints that snapshot, then follows new journal lines
|
|
340
376
|
until SIGINT (exit 0). A missing journal is not an error: the snapshot still
|
|
341
|
-
stands. `--json` prints the
|
|
377
|
+
stands. `--json` prints the same tree: `{ features: [{ …, tickets: […] }], tickets: […] }`,
|
|
378
|
+
the latter holding the Tickets of no Feature. Ctrl-C on watch leaves the worker
|
|
342
379
|
running. The file can grow without rotation. A followed line that records a
|
|
343
380
|
stop includes the child's last words (`detail`, `reason`, a non-zero exit, a
|
|
344
381
|
Gate report that did not pass). `run` prints that same note under the phase
|
|
@@ -355,6 +392,57 @@ slot was given `--transcript-dir` it names the newest transcript files with
|
|
|
355
392
|
the agent exit and duration read from the start of each file. A missing
|
|
356
393
|
journal is not an error. Exit 2 when the config or `--tail` cannot be read.
|
|
357
394
|
|
|
395
|
+
`incident [<key>]` gathers what is known about one stop into a single page, for a
|
|
396
|
+
person (or anything else) who has to understand it. Read-only: it opens the
|
|
397
|
+
ledger, the journal, the streams and the transcripts, and writes only where
|
|
398
|
+
`--out DIR` says (`incident.md` and `incident.json`). It does not open Host, a
|
|
399
|
+
manager or Conductor, so it works on a stopped run and on one still going. The
|
|
400
|
+
key is a full key or the tracker's number (`106`, `#106`) when one key ends so;
|
|
401
|
+
two matches name both and exit 2, no match exits 2. With no key it lists what
|
|
402
|
+
waits for a person: every escalated Feature and Ticket, one line each. `--json`
|
|
403
|
+
prints the page as JSON.
|
|
404
|
+
|
|
405
|
+
The page is the schema `bluewombat.incident/1`. It states, without judging:
|
|
406
|
+
the subject (kind, state, the first lines of what was asked, `blocked_by`); the
|
|
407
|
+
stop (layer, what the ledger says verbatim, who refused it, the Gate or agent
|
|
408
|
+
that ended the last round with its verdict, the Task and Attempt, the moment);
|
|
409
|
+
the stops of this subject in the journal and its resumes; the budgets spent;
|
|
410
|
+
the Tickets of the Feature, each with state, Attempts, pull request and the
|
|
411
|
+
moment it landed; the configuration of the refusing Gate; the system (bluewombat,
|
|
412
|
+
Node, the `@bluewombat/*` packages the Project installed, and what the
|
|
413
|
+
configuration switched on: trackers, ledger, Authority, tickets in parallel,
|
|
414
|
+
limits, which passes run an agent or only Gates, each Gate sequence, streams;
|
|
415
|
+
a command shows its program only, never its arguments, which may hold a key); the journal's events
|
|
416
|
+
of the last round; the stream files and the transcripts under the subject, with
|
|
417
|
+
the end of the refusing Gate's stream, each agent's exit, duration, closing
|
|
418
|
+
words and `MASON_VERDICT` / `MASON_BLOCKED` line; and `gaps`, what could not be
|
|
419
|
+
found. A reader must never read an absence as a "no": a missing journal, a
|
|
420
|
+
stream that was never filmed or is gone, a Gate no longer in the configuration
|
|
421
|
+
and a subject that is not stopped are each said in `gaps`. The last round is
|
|
422
|
+
what the journal holds between the previous stop of the subject (or its
|
|
423
|
+
beginning) and the last `status` of phase `escalated`; without that line the
|
|
424
|
+
page says so and takes the moment from the ledger. `--with-config` adds the
|
|
425
|
+
configuration file itself, with the value of any `key: value` line whose key
|
|
426
|
+
looks like a secret (token, secret, password, api key, credential) blanked. The
|
|
427
|
+
page quotes the ledger's
|
|
428
|
+
words with a fence longer than any backtick run in them.
|
|
429
|
+
|
|
430
|
+
An escalation records, beside its words, who refused it (`refused_by`: a Gate's
|
|
431
|
+
id or a role, when the refusal came with a name) and when (`at`, the ledger's
|
|
432
|
+
clock); a Feature's also records where its line stopped (`kind`: `assembly` for
|
|
433
|
+
the assembled line refused by a check, `submitted` for its offer). All are
|
|
434
|
+
optional: a record written before them stays readable, and the page then takes
|
|
435
|
+
the refuser from the last non-passing Gate whose words the ledger repeats. The
|
|
436
|
+
tracker is told the stage of a Feature's stop from that `kind` (`integrating`
|
|
437
|
+
for an assembled line, `submitting` otherwise).
|
|
438
|
+
|
|
439
|
+
`restart <feature-key>` resumes an escalated Feature with a fresh workspace: the
|
|
440
|
+
Feature's work is removed (the same `rm` as a cancel) and the ledger's `resumeFeature` is taken,
|
|
441
|
+
so the next pass cuts the work again from the line and judges it. Nothing is said to the tracker and
|
|
442
|
+
nothing is fetched. It takes the ledger lock — stop `run` first. The key is the full key or the
|
|
443
|
+
tracker number, as `incident` takes it. Exit 0 once restarted, 1 when the Feature is not
|
|
444
|
+
`escalated`, 2 for a missing, unknown or Ticket key. The journal gets `restarted`.
|
|
445
|
+
|
|
358
446
|
`cancel <key>` abandons one Ticket the same way a `cancel` delivery does. The
|
|
359
447
|
team still abandons in the TicketTracker; this is the hatch when the tracker
|
|
360
448
|
cannot say the intention is gone (a manager with no `probe`, or an operator
|
|
@@ -406,6 +494,11 @@ positional: `release github:owner/name#19`.
|
|
|
406
494
|
open, escalated or submitted. A Feature blocked by another does not open
|
|
407
495
|
until it is `done`. A Feature whose Tickets are not all `task-ready` does
|
|
408
496
|
not open.
|
|
497
|
+
16b. With the feature-test check declared: a Feature without a feature-test Ticket nor `skip_feature_test` does not open and
|
|
498
|
+
is reported `invalid`; with `skip_feature_test` its feature-test Ticket is cancelled and the feature-tests Gate is not run,
|
|
499
|
+
the journal and the trace saying so; with a feature-test Ticket the line is judged once by the suite,
|
|
500
|
+
red goes to `feature.fix` and green lets the line be offered. A Project without `feature.test`
|
|
501
|
+
is unchanged.
|
|
409
502
|
17. After an escalation, a `probe` of `gone` cancels that Ticket (or Feature)
|
|
410
503
|
and the sweep goes on. `unavailable` leaves the
|
|
411
504
|
escalation. A listen that missed the source does not probe. GitHub: a 404
|
|
@@ -419,4 +512,13 @@ positional: `release github:owner/name#19`.
|
|
|
419
512
|
themselves the failure. `--json` returns every kept line. It does
|
|
420
513
|
not import `openHost`.
|
|
421
514
|
|
|
515
|
+
20. `incident` on a Feature escalated by a Gate names that Gate, quotes the ledger
|
|
516
|
+
verbatim, lists the Feature's Tickets with their pull requests and says in
|
|
517
|
+
`gaps` what it could not read. On a Ticket that stopped on a Gate it names
|
|
518
|
+
the Gate and the Feature above it. With no key it lists what waits. It
|
|
519
|
+
opens no Host and writes nothing but `--out`.
|
|
520
|
+
21. A Feature's line refused by a check that cannot be repaired escalates with
|
|
521
|
+
`refused_by` set to that check and `kind` `assembly`, and the tracker is told
|
|
522
|
+
`integrating`.
|
|
523
|
+
|
|
422
524
|
How to install, configure and run: [README.md](./README.md).
|
package/dist/cli.js
CHANGED
|
@@ -5,11 +5,13 @@ import { DEFAULT_HOME } from "./config/home.js";
|
|
|
5
5
|
import { runCancel } from "./operator/cancel.js";
|
|
6
6
|
import { runDoctor } from "./operator/doctor.js";
|
|
7
7
|
import { runExplain } from "./operator/explain.js";
|
|
8
|
+
import { runIncident } from "./operator/incident.js";
|
|
8
9
|
import { runInit } from "./operator/init.js";
|
|
9
10
|
import { runLive } from "./operator/live.js";
|
|
10
11
|
import { runLog } from "./operator/log.js";
|
|
11
12
|
import { isInteractive, terminalAsk } from "./operator/prompt.js";
|
|
12
13
|
import { runRelease } from "./operator/release.js";
|
|
14
|
+
import { runRestart } from "./operator/restart.js";
|
|
13
15
|
import { runRun } from "./operator/run.js";
|
|
14
16
|
import { runSetup } from "./operator/setup.js";
|
|
15
17
|
const USAGE = `Usage: ${CLI_NAME} <command>
|
|
@@ -18,7 +20,9 @@ const USAGE = `Usage: ${CLI_NAME} <command>
|
|
|
18
20
|
watch snapshot the ledger and follow the journal
|
|
19
21
|
status snapshot the ledger, then exit
|
|
20
22
|
log replay the journal, including why a phase stopped
|
|
23
|
+
incident gather what is known about one stop, for whoever has to understand it (read-only)
|
|
21
24
|
cancel abandon a Ticket by key (when the tracker cannot say it is gone)
|
|
25
|
+
restart resume an escalated Feature with a fresh workspace, made again from its line
|
|
22
26
|
release drop a held unit without waiting for the bail clock
|
|
23
27
|
init set this directory up — asks, writes, then runs setup
|
|
24
28
|
doctor check the config, the slots, and the manager
|
|
@@ -35,15 +39,19 @@ Shared flags: --config FILE --feature-tracker NAME --feature-tracker-option KEY=
|
|
|
35
39
|
--builder -- CMD --builder-timeout-ms N --builder-max-attempts N
|
|
36
40
|
--builder-repair -- CMD --builder-repair-timeout-ms N
|
|
37
41
|
--builder-gate ID -- CMD --builder-gate-timeout-ms N
|
|
38
|
-
--
|
|
39
|
-
--
|
|
40
|
-
--
|
|
42
|
+
--ticket-fix -- CMD --ticket-fix-timeout-ms N --ticket-max-attempts N
|
|
43
|
+
--ticket-validate -- CMD --ticket-validate-timeout-ms N
|
|
44
|
+
--ticket-gate ID -- CMD --ticket-gate-timeout-ms N
|
|
41
45
|
--timeout-ms N --poll-interval-ms N
|
|
42
46
|
|
|
43
47
|
A gate's --*-gate-timeout-ms comes before the --*-gate it bounds.
|
|
44
48
|
|
|
45
49
|
watch / status also take --json (snapshot as JSON). explain takes an optional role
|
|
46
|
-
(
|
|
50
|
+
(ticket.build.producer, ticket.build.repair, ticket.fix, ticket.validate, authority.describe) and --json.
|
|
51
|
+
|
|
52
|
+
incident takes a key (or its tracker number), --json, --out DIR (writes incident.md and incident.json),
|
|
53
|
+
and --with-config (adds the config file, values of secret-looking keys blanked).
|
|
54
|
+
Without a key it lists what is waiting for a person.
|
|
47
55
|
|
|
48
56
|
log also takes --problems, --all, and --json (every kept line).
|
|
49
57
|
--tail N limits the text film (0 = no limit). With --json it names kept and shown when it drops lines.
|
|
@@ -97,6 +105,13 @@ async function main(argv) {
|
|
|
97
105
|
write: (line) => process.stdout.write(line),
|
|
98
106
|
});
|
|
99
107
|
}
|
|
108
|
+
if (command === "incident") {
|
|
109
|
+
return await runIncident({
|
|
110
|
+
cwd: process.cwd(),
|
|
111
|
+
argv: rest,
|
|
112
|
+
write: (text) => process.stdout.write(text),
|
|
113
|
+
});
|
|
114
|
+
}
|
|
100
115
|
if (command === "watch" || command === "status") {
|
|
101
116
|
const interruptFlag = { interrupted: false };
|
|
102
117
|
const detachSignals = installSignalHandlers(interruptFlag);
|
|
@@ -184,6 +199,22 @@ async function main(argv) {
|
|
|
184
199
|
detachSignals();
|
|
185
200
|
}
|
|
186
201
|
}
|
|
202
|
+
if (command === "restart") {
|
|
203
|
+
const interruptFlag = { interrupted: false };
|
|
204
|
+
const detachSignals = installSignalHandlers(interruptFlag);
|
|
205
|
+
try {
|
|
206
|
+
return await runRestart({
|
|
207
|
+
cwd: process.cwd(),
|
|
208
|
+
argv: rest,
|
|
209
|
+
env: process.env,
|
|
210
|
+
write: (line) => process.stdout.write(line),
|
|
211
|
+
interruptFlag,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
finally {
|
|
215
|
+
detachSignals();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
187
218
|
if (command === "release") {
|
|
188
219
|
const interruptFlag = { interrupted: false };
|
|
189
220
|
const detachSignals = installSignalHandlers(interruptFlag);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,KAAK,GAAG,UAAU,QAAQ
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/** The shipped role slot behind each pass that drives an agent. */
|
|
2
2
|
export declare const ROLE_SCRIPTS: {
|
|
3
|
-
readonly "
|
|
4
|
-
readonly "
|
|
5
|
-
readonly "
|
|
6
|
-
readonly "
|
|
3
|
+
readonly "ticket.build.producer": "builders/producer.mjs";
|
|
4
|
+
readonly "ticket.build.repair": "builders/repair.mjs";
|
|
5
|
+
readonly "feature.test": "builders/feature-test.mjs";
|
|
6
|
+
readonly "ticket.fix": "ticket/fix.mjs";
|
|
7
|
+
readonly "ticket.validate": "ticket/validate.mjs";
|
|
8
|
+
readonly "feature.fix": "feature/fix.mjs";
|
|
9
|
+
readonly "feature.validate": "feature/validate.mjs";
|
|
7
10
|
readonly "authority.describe": "messages/git-producer.mjs";
|
|
8
11
|
};
|
|
9
12
|
export type AgentRole = keyof typeof ROLE_SCRIPTS;
|
|
@@ -36,9 +39,26 @@ export declare function readAgents(value: unknown, configDir: string): Read<Map<
|
|
|
36
39
|
* mapping; its keys were checked by the caller.
|
|
37
40
|
*/
|
|
38
41
|
export declare function expandAgentPass(object: Record<string, unknown>, role: AgentRole, agents: Agents, configDir: string, key: string): Read<string[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Where an app's deck profile is, from the path the config gives it: the app
|
|
44
|
+
* folder that holds `.ai/` (`.` for the checkout itself) and the profile's name.
|
|
45
|
+
* deck keeps its profiles in `<app>/.ai/profiles/<name>`, so that is the shape;
|
|
46
|
+
* the app folder is what a Project may place elsewhere in its checkout.
|
|
47
|
+
*
|
|
48
|
+
* The slot that builds the profile reads the path by the same rule
|
|
49
|
+
* (`parseAppDeckProfile` in `agent-plugins.mjs`); neither depends on the other.
|
|
50
|
+
*/
|
|
51
|
+
export declare function parseAppDeckProfile(given: string): {
|
|
52
|
+
ok: true;
|
|
53
|
+
root: string;
|
|
54
|
+
name: string;
|
|
55
|
+
} | {
|
|
56
|
+
ok: false;
|
|
57
|
+
reason: string;
|
|
58
|
+
};
|
|
39
59
|
/** The agent and profile a pass's argv names, written short or not; for `doctor`. */
|
|
40
60
|
export declare function agentPartOf(argv: readonly string[]): {
|
|
41
|
-
|
|
61
|
+
appDeckProfile?: string;
|
|
42
62
|
pluginsOut?: string;
|
|
43
63
|
pluginDirs: string[];
|
|
44
64
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-shorthand.d.ts","sourceRoot":"","sources":["../../src/config/agent-shorthand.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-shorthand.d.ts","sourceRoot":"","sources":["../../src/config/agent-shorthand.ts"],"names":[],"mappings":"AA4BA,mEAAmE;AACnE,eAAO,MAAM,YAAY;;;;;;;;;CASf,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,YAAY,CAAC;AAgBlD,uFAAuF;AACvF,eAAO,MAAM,eAAe,aAO1B,CAAC;AAEH,wEAAwE;AACxE,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEpD,KAAK,IAAI,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAwG1F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,IAAI,CAAC,MAAM,EAAE,CAAC,CAoFhB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAmB1E;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAoBA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { resolve } from "node:path";
|
|
1
|
+
import { isAbsolute, resolve } from "node:path";
|
|
2
2
|
/**
|
|
3
3
|
* The short way to write an agent pass: which agent, which prompt, which
|
|
4
4
|
* plugins — and Host writes the argv a pass has always been.
|
|
@@ -8,13 +8,14 @@ import { resolve } from "node:path";
|
|
|
8
8
|
* transcripts: ./.mason/transcripts, pluginsOut: ./.mason/plugins }
|
|
9
9
|
* builder:
|
|
10
10
|
* producer: { agent: cursor, prompt: ./prompts/builder.md,
|
|
11
|
-
*
|
|
11
|
+
* homePlugins: [./ai-plugins/core/builder],
|
|
12
|
+
* appDeckProfile: .ai/profiles/builder, timeoutMs: … }
|
|
12
13
|
*
|
|
13
14
|
* expands to
|
|
14
15
|
*
|
|
15
16
|
* node <slots>/builders/producer.mjs --prompt-file <prompt> --
|
|
16
17
|
* node <slots>/agents/cursor.mjs --transcript-dir … --agent-home … --api-key-env …
|
|
17
|
-
* --plugin-dir <core> --profile builder --plugins-out …
|
|
18
|
+
* --plugin-dir <core> --app-deck-profile .ai/profiles/builder --plugins-out …
|
|
18
19
|
*
|
|
19
20
|
* The expansion is the whole ticket: nothing downstream knows a pass was
|
|
20
21
|
* written short, so `cmd` stays the one shape the rest of Host reads, and a
|
|
@@ -24,10 +25,13 @@ import { resolve } from "node:path";
|
|
|
24
25
|
const SLOTS_PACKAGE = "node_modules/@bluewombat/slots";
|
|
25
26
|
/** The shipped role slot behind each pass that drives an agent. */
|
|
26
27
|
export const ROLE_SCRIPTS = {
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
28
|
+
"ticket.build.producer": "builders/producer.mjs",
|
|
29
|
+
"ticket.build.repair": "builders/repair.mjs",
|
|
30
|
+
"feature.test": "builders/feature-test.mjs",
|
|
31
|
+
"ticket.fix": "ticket/fix.mjs",
|
|
32
|
+
"ticket.validate": "ticket/validate.mjs",
|
|
33
|
+
"feature.fix": "feature/fix.mjs",
|
|
34
|
+
"feature.validate": "feature/validate.mjs",
|
|
31
35
|
"authority.describe": "messages/git-producer.mjs",
|
|
32
36
|
};
|
|
33
37
|
const ADAPTERS = new Set(["cursor", "claude"]);
|
|
@@ -44,7 +48,14 @@ const AGENT_KEYS = new Set([
|
|
|
44
48
|
"args",
|
|
45
49
|
]);
|
|
46
50
|
/** The keys a pass written short may carry, besides its own (`timeoutMs`, `gates`). */
|
|
47
|
-
export const SHORT_PASS_KEYS = new Set([
|
|
51
|
+
export const SHORT_PASS_KEYS = new Set([
|
|
52
|
+
"agent",
|
|
53
|
+
"prompt",
|
|
54
|
+
"rules",
|
|
55
|
+
"homePlugins",
|
|
56
|
+
"appDeckProfile",
|
|
57
|
+
"args",
|
|
58
|
+
]);
|
|
48
59
|
export function readAgents(value, configDir) {
|
|
49
60
|
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
50
61
|
return { ok: false, reason: 'Config "agents" must be a YAML mapping of agent names.' };
|
|
@@ -176,19 +187,25 @@ export function expandAgentPass(object, role, agents, configDir, key) {
|
|
|
176
187
|
if (rules.ok === false) {
|
|
177
188
|
return rules;
|
|
178
189
|
}
|
|
179
|
-
const plugins = stringList(object.
|
|
190
|
+
const plugins = stringList(object.homePlugins, `${key}.homePlugins`);
|
|
180
191
|
if (plugins.ok === false) {
|
|
181
192
|
return plugins;
|
|
182
193
|
}
|
|
183
|
-
const profile = object.
|
|
184
|
-
if (profile !== undefined
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
reason: `Config "${key}"
|
|
191
|
-
}
|
|
194
|
+
const profile = object.appDeckProfile;
|
|
195
|
+
if (profile !== undefined) {
|
|
196
|
+
if (typeof profile !== "string") {
|
|
197
|
+
return { ok: false, reason: `Config "${key}.appDeckProfile" must be a path.` };
|
|
198
|
+
}
|
|
199
|
+
const located = parseAppDeckProfile(profile);
|
|
200
|
+
if (!located.ok) {
|
|
201
|
+
return { ok: false, reason: `Config "${key}.appDeckProfile": ${located.reason}` };
|
|
202
|
+
}
|
|
203
|
+
if (agent.pluginsOut === undefined) {
|
|
204
|
+
return {
|
|
205
|
+
ok: false,
|
|
206
|
+
reason: `Config "${key}" names an app deck profile, so "agents.${name}.pluginsOut" must say where it is built.`,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
192
209
|
}
|
|
193
210
|
const args = stringList(object.args, `${key}.args`);
|
|
194
211
|
if (args.ok === false) {
|
|
@@ -224,13 +241,40 @@ export function expandAgentPass(object, role, agents, configDir, key) {
|
|
|
224
241
|
argv.push("--plugin-dir", resolve(configDir, dir));
|
|
225
242
|
}
|
|
226
243
|
if (profile !== undefined && agent.pluginsOut !== undefined) {
|
|
227
|
-
argv.push("--profile", profile, "--plugins-out", agent.pluginsOut);
|
|
244
|
+
argv.push("--app-deck-profile", profile, "--plugins-out", agent.pluginsOut);
|
|
228
245
|
}
|
|
229
246
|
for (const arg of [...agent.args, ...args.value]) {
|
|
230
247
|
argv.push("--agent-arg", arg);
|
|
231
248
|
}
|
|
232
249
|
return { ok: true, value: argv };
|
|
233
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* Where an app's deck profile is, from the path the config gives it: the app
|
|
253
|
+
* folder that holds `.ai/` (`.` for the checkout itself) and the profile's name.
|
|
254
|
+
* deck keeps its profiles in `<app>/.ai/profiles/<name>`, so that is the shape;
|
|
255
|
+
* the app folder is what a Project may place elsewhere in its checkout.
|
|
256
|
+
*
|
|
257
|
+
* The slot that builds the profile reads the path by the same rule
|
|
258
|
+
* (`parseAppDeckProfile` in `agent-plugins.mjs`); neither depends on the other.
|
|
259
|
+
*/
|
|
260
|
+
export function parseAppDeckProfile(given) {
|
|
261
|
+
const matched = /^(?:(.*?)\/)?\.ai\/profiles\/([^/]+)\/?$/.exec(given.trim());
|
|
262
|
+
const name = matched?.[2];
|
|
263
|
+
if (matched === null ||
|
|
264
|
+
name === undefined ||
|
|
265
|
+
!/^[A-Za-z0-9_-][A-Za-z0-9._-]*$/.test(name) ||
|
|
266
|
+
name === "current") {
|
|
267
|
+
return {
|
|
268
|
+
ok: false,
|
|
269
|
+
reason: `"${given}" is not a deck profile path: [<app dir>/].ai/profiles/<name>.`,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
const root = matched[1] ?? ".";
|
|
273
|
+
if (isAbsolute(root) || root.split("/").includes("..")) {
|
|
274
|
+
return { ok: false, reason: `"${given}" must stay inside the checkout.` };
|
|
275
|
+
}
|
|
276
|
+
return { ok: true, root, name };
|
|
277
|
+
}
|
|
234
278
|
/** The agent and profile a pass's argv names, written short or not; for `doctor`. */
|
|
235
279
|
export function agentPartOf(argv) {
|
|
236
280
|
const split = argv.indexOf("--");
|
|
@@ -243,8 +287,8 @@ export function agentPartOf(argv) {
|
|
|
243
287
|
if (value === undefined) {
|
|
244
288
|
return;
|
|
245
289
|
}
|
|
246
|
-
if (token === "--profile") {
|
|
247
|
-
found.
|
|
290
|
+
if (token === "--app-deck-profile") {
|
|
291
|
+
found.appDeckProfile = value;
|
|
248
292
|
}
|
|
249
293
|
else if (token === "--plugins-out") {
|
|
250
294
|
found.pluginsOut = value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-shorthand.js","sourceRoot":"","sources":["../../src/config/agent-shorthand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,kGAAkG;AAClG,MAAM,aAAa,GAAG,gCAAgC,CAAC;AAEvD,mEAAmE;AACnE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,kBAAkB,EAAE,uBAAuB;IAC3C,gBAAgB,EAAE,qBAAqB;IACvC,cAAc,EAAE,kBAAkB;IAClC,mBAAmB,EAAE,uBAAuB;IAC5C,oBAAoB,EAAE,2BAA2B;CACzC,CAAC;AAIX,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,SAAS;IACT,KAAK;IACL,OAAO;IACP,MAAM;IACN,WAAW;IACX,SAAS;IACT,WAAW;IACX,aAAa;IACb,YAAY;IACZ,MAAM;CACP,CAAC,CAAC;AAEH,uFAAuF;AACvF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAoBnG,MAAM,UAAU,UAAU,CAAC,KAAc,EAAE,SAAiB;IAC1D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wDAAwD,EAAE,CAAC;IACzF,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAC3E,MAAM,GAAG,GAAG,UAAU,IAAI,EAAE,CAAC;QAC7B,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAClE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,2BAA2B,EAAE,CAAC;QAC1E,CAAC;QACD,MAAM,MAAM,GAAG,GAA8B,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,sBAAsB,KAAK,IAAI,EAAE,CAAC;YAC9E,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAuC,EAAE,CAAC;QACtD,KAAK,MAAM,KAAK,IAAI;YAClB,SAAS;YACT,KAAK;YACL,OAAO;YACP,MAAM;YACN,WAAW;YACX,aAAa;YACb,YAAY;SACb,EAAE,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,KAAK,+BAA+B,EAAE,CAAC;YACvF,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,GAAG,IAA0B,CAAC;QAC7C,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,WAAW,GAAG,wEAAwE;aAC/F,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,CAAC;YACrE,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,WAAW,GAAG,uEAAuE;aAC9F,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,UAAU,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,GAAG,YAAY,CAAC,CAAC;QACnE,IAAI,SAAS,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI;YAC1B,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC;YAC1B,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC;SACtB,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACjD,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,WAAW,GAAG,IAAI,KAAK,kEAAkE;iBAClG,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,EAAE,GAAG,CAAC,IAAwB,EAAE,EAAE,CACtC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAc;YACtB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC5B,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,OAAO,MAAM,CAAC;gBAC/D,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;YAC/B,OAAO,EAAE,OAAO,CAAC,KAAK;YACtB,SAAS,EAAE,SAAS,CAAC,KAAK;YAC1B,IAAI,EAAE,IAAI,CAAC,KAAK;SACjB,CAAC;QACF,yFAAyF;QACzF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACvB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/D,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC5B,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACpC,CAAC;QACD,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QACjC,CAAC;QACD,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA+B,EAC/B,IAAe,EACf,MAAc,EACd,SAAiB,EACjB,GAAW;IAEX,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,kDAAkD,EAAE,CAAC;IACjG,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;IAC1B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,yCAAyC,EAAE,CAAC;IACxF,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,WAAW,GAAG,eAAe,IAAI,yCAAyC;SACnF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,UAAU,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,wCAAwC,EAAE,CAAC;IACvF,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,WAAW,GAAG,sCAAsC,IAAI,0CAA0C;SAC3G,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACxE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAiB,EAAE,eAAe,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/E,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,IAAuB;IAKjD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,KAAK,GAAoE;QAC7E,UAAU,EAAE,EAAE;KACf,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YAC1B,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QACxB,CAAC;aAAM,IAAI,KAAK,KAAK,eAAe,EAAE,CAAC;YACrC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;QAC3B,CAAC;aAAM,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;YACpC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAChB,MAA+B,EAC/B,KAAa,EACb,GAAW,EACX,SAAiB;IAEjB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACxC,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,KAAK,6BAA6B,EAAE,CAAC;IACrF,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,GAAW;IAC7C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC9E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,gCAAgC,EAAE,CAAC;IAC/E,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAiB,EAAE,CAAC;AAChD,CAAC"}
|
|
1
|
+
{"version":3,"file":"agent-shorthand.js","sourceRoot":"","sources":["../../src/config/agent-shorthand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test fixtures describe a config by its parts (`featureTracker`, `ticketTracker`, `builder`,
|
|
3
|
+
* `ticket`, `feature`), one object each. A config file groups them by level: `ticket` holds its
|
|
4
|
+
* tracker and its build, `feature` its tracker and its test. This writes a fixture as the file.
|
|
5
|
+
* A fixture already in the file's shape (a `tracker` inside `ticket` or `feature`) is left alone.
|
|
6
|
+
*/
|
|
7
|
+
export declare function fixtureYaml(fixture: Record<string, unknown>): string;
|
|
8
|
+
//# sourceMappingURL=fixture-yaml.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture-yaml.d.ts","sourceRoot":"","sources":["../../src/config/fixture-yaml.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAqBpE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { stringify as stringifyYaml } from "yaml";
|
|
2
|
+
/**
|
|
3
|
+
* Test fixtures describe a config by its parts (`featureTracker`, `ticketTracker`, `builder`,
|
|
4
|
+
* `ticket`, `feature`), one object each. A config file groups them by level: `ticket` holds its
|
|
5
|
+
* tracker and its build, `feature` its tracker and its test. This writes a fixture as the file.
|
|
6
|
+
* A fixture already in the file's shape (a `tracker` inside `ticket` or `feature`) is left alone.
|
|
7
|
+
*/
|
|
8
|
+
export function fixtureYaml(fixture) {
|
|
9
|
+
const { featureTracker, ticketTracker, builder, ticket, feature, ...rest } = fixture;
|
|
10
|
+
const { featureTest, ...build } = (builder ?? {});
|
|
11
|
+
const out = { ...rest };
|
|
12
|
+
const ticketBlock = {
|
|
13
|
+
...(ticketTracker === undefined ? {} : { tracker: ticketTracker }),
|
|
14
|
+
...(builder === undefined ? {} : { build }),
|
|
15
|
+
...(ticket ?? {}),
|
|
16
|
+
};
|
|
17
|
+
const featureBlock = {
|
|
18
|
+
...(featureTracker === undefined ? {} : { tracker: featureTracker }),
|
|
19
|
+
...(featureTest === undefined ? {} : { test: featureTest }),
|
|
20
|
+
...(feature ?? {}),
|
|
21
|
+
};
|
|
22
|
+
if (Object.keys(ticketBlock).length > 0 || ticket !== undefined) {
|
|
23
|
+
out.ticket = ticketBlock;
|
|
24
|
+
}
|
|
25
|
+
if (Object.keys(featureBlock).length > 0 || feature !== undefined) {
|
|
26
|
+
out.feature = featureBlock;
|
|
27
|
+
}
|
|
28
|
+
return stringifyYaml(out);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=fixture-yaml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture-yaml.js","sourceRoot":"","sources":["../../src/config/fixture-yaml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAElD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAgC;IAC1D,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACrF,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;IAC7E,MAAM,GAAG,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;IACjD,MAAM,WAAW,GAAG;QAClB,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAClE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QAC3C,GAAI,CAAC,MAAM,IAAI,EAAE,CAA6B;KAC/C,CAAC;IACF,MAAM,YAAY,GAAG;QACnB,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QACpE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAC3D,GAAI,CAAC,OAAO,IAAI,EAAE,CAA6B;KAChD,CAAC;IACF,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAChE,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC;IAC3B,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAClE,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC;IAC7B,CAAC;IACD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC"}
|