@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.
Files changed (113) hide show
  1. package/README.md +200 -99
  2. package/SPECS.md +121 -19
  3. package/dist/cli.js +35 -4
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config/agent-shorthand.d.ts +25 -5
  6. package/dist/config/agent-shorthand.d.ts.map +1 -1
  7. package/dist/config/agent-shorthand.js +65 -21
  8. package/dist/config/agent-shorthand.js.map +1 -1
  9. package/dist/config/fixture-yaml.d.ts +8 -0
  10. package/dist/config/fixture-yaml.d.ts.map +1 -0
  11. package/dist/config/fixture-yaml.js +30 -0
  12. package/dist/config/fixture-yaml.js.map +1 -0
  13. package/dist/config/home.d.ts +2 -0
  14. package/dist/config/home.d.ts.map +1 -1
  15. package/dist/config/home.js +2 -0
  16. package/dist/config/home.js.map +1 -1
  17. package/dist/config/load-config.d.ts.map +1 -1
  18. package/dist/config/load-config.js +301 -62
  19. package/dist/config/load-config.js.map +1 -1
  20. package/dist/config/parse-args.d.ts +1 -1
  21. package/dist/config/parse-args.d.ts.map +1 -1
  22. package/dist/config/parse-args.js +84 -58
  23. package/dist/config/parse-args.js.map +1 -1
  24. package/dist/config/types.d.ts +96 -16
  25. package/dist/config/types.d.ts.map +1 -1
  26. package/dist/config/types.js +13 -1
  27. package/dist/config/types.js.map +1 -1
  28. package/dist/index.d.ts +3 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/loop/authority.d.ts +38 -1
  33. package/dist/loop/authority.d.ts.map +1 -1
  34. package/dist/loop/authority.js +41 -2
  35. package/dist/loop/authority.js.map +1 -1
  36. package/dist/loop/context.d.ts +16 -1
  37. package/dist/loop/context.d.ts.map +1 -1
  38. package/dist/loop/drive.d.ts +9 -3
  39. package/dist/loop/drive.d.ts.map +1 -1
  40. package/dist/loop/drive.js +17 -7
  41. package/dist/loop/drive.js.map +1 -1
  42. package/dist/loop/features.d.ts +16 -0
  43. package/dist/loop/features.d.ts.map +1 -1
  44. package/dist/loop/features.js +404 -62
  45. package/dist/loop/features.js.map +1 -1
  46. package/dist/loop/open-host.d.ts +10 -0
  47. package/dist/loop/open-host.d.ts.map +1 -1
  48. package/dist/loop/open-host.js +111 -9
  49. package/dist/loop/open-host.js.map +1 -1
  50. package/dist/loop/report.d.ts.map +1 -1
  51. package/dist/loop/report.js +21 -9
  52. package/dist/loop/report.js.map +1 -1
  53. package/dist/loop/streams.d.ts +3 -0
  54. package/dist/loop/streams.d.ts.map +1 -1
  55. package/dist/loop/streams.js +2 -1
  56. package/dist/loop/streams.js.map +1 -1
  57. package/dist/loop/tick.d.ts +3 -0
  58. package/dist/loop/tick.d.ts.map +1 -1
  59. package/dist/loop/tick.js.map +1 -1
  60. package/dist/loop/trace.d.ts +1 -0
  61. package/dist/loop/trace.d.ts.map +1 -1
  62. package/dist/loop/trace.js +2 -2
  63. package/dist/loop/trace.js.map +1 -1
  64. package/dist/loop/transformers.d.ts +16 -2
  65. package/dist/loop/transformers.d.ts.map +1 -1
  66. package/dist/loop/transformers.js +126 -22
  67. package/dist/loop/transformers.js.map +1 -1
  68. package/dist/loop/warm.js +1 -1
  69. package/dist/loop/warm.js.map +1 -1
  70. package/dist/operator/agent-plugins.d.ts.map +1 -1
  71. package/dist/operator/agent-plugins.js +14 -8
  72. package/dist/operator/agent-plugins.js.map +1 -1
  73. package/dist/operator/board.d.ts +43 -4
  74. package/dist/operator/board.d.ts.map +1 -1
  75. package/dist/operator/board.js +153 -10
  76. package/dist/operator/board.js.map +1 -1
  77. package/dist/operator/doctor.d.ts +1 -1
  78. package/dist/operator/doctor.d.ts.map +1 -1
  79. package/dist/operator/doctor.js +76 -29
  80. package/dist/operator/doctor.js.map +1 -1
  81. package/dist/operator/explain.d.ts.map +1 -1
  82. package/dist/operator/explain.js +36 -12
  83. package/dist/operator/explain.js.map +1 -1
  84. package/dist/operator/film.js +0 -3
  85. package/dist/operator/film.js.map +1 -1
  86. package/dist/operator/incident-dossier.d.ts +154 -0
  87. package/dist/operator/incident-dossier.d.ts.map +1 -0
  88. package/dist/operator/incident-dossier.js +696 -0
  89. package/dist/operator/incident-dossier.js.map +1 -0
  90. package/dist/operator/incident-system.d.ts +48 -0
  91. package/dist/operator/incident-system.d.ts.map +1 -0
  92. package/dist/operator/incident-system.js +152 -0
  93. package/dist/operator/incident-system.js.map +1 -0
  94. package/dist/operator/incident.d.ts +27 -0
  95. package/dist/operator/incident.d.ts.map +1 -0
  96. package/dist/operator/incident.js +220 -0
  97. package/dist/operator/incident.js.map +1 -0
  98. package/dist/operator/init.js +27 -22
  99. package/dist/operator/init.js.map +1 -1
  100. package/dist/operator/live.js +4 -4
  101. package/dist/operator/live.js.map +1 -1
  102. package/dist/operator/log.d.ts +2 -0
  103. package/dist/operator/log.d.ts.map +1 -1
  104. package/dist/operator/log.js +7 -3
  105. package/dist/operator/log.js.map +1 -1
  106. package/dist/operator/restart.d.ts +20 -0
  107. package/dist/operator/restart.d.ts.map +1 -0
  108. package/dist/operator/restart.js +63 -0
  109. package/dist/operator/restart.js.map +1 -0
  110. package/dist/operator/setup.d.ts.map +1 -1
  111. package/dist/operator/setup.js +2 -0
  112. package/dist/operator/setup.js.map +1 -1
  113. 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
- `featureTracker.package` and `ticketTracker.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
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 independent Gate sequences, one per role — `builder.producer.gates`, `builder.repair.gates`, `assembly.fix.gates`,
216
- `assembly.validate.gates` — plus `assembly.gates` for the one judgement-only
217
- pass with no producer of its own. No sequence is shared and nothing is
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 `builder.producer`/`repair`
221
- and false of `assembly.gates`'s pass, whose correct outcome is that nothing
222
- was left to do. `builder.repair` does not inherit `builder.producer.gates`: a
223
- repair Attempt with no Gate of its own runs ungated. The assembly's
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 `assembly.fix`, not a second first-pass. Two
226
- things may judge it: `assembly.gates` (and an Authority's own checks on what
227
- was published) and, optionally, `assembly.validate` — a local, read-only pass
228
- that runs before either, judged by its own `assembly.validate.gates`, not
229
- `assembly.gates`. Both send a refusal to the same `fix` and spend the same
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 `assembly.maxAttempts` and `assembly.fix`.
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. `watch` prints that snapshot, then follows new journal lines
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 snapshot as JSON. Ctrl-C on watch leaves the worker
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
- --assembly-fix -- CMD --assembly-fix-timeout-ms N --assembly-max-attempts N
39
- --assembly-validate -- CMD --assembly-validate-timeout-ms N
40
- --assembly-gate ID -- CMD --assembly-gate-timeout-ms N
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
- (builder.producer, builder.repair, assembly.fix, assembly.validate, authority.describe) and --json.
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":"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"}
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 "builder.producer": "builders/producer.mjs";
4
- readonly "builder.repair": "builders/repair.mjs";
5
- readonly "assembly.fix": "assembly/fix.mjs";
6
- readonly "assembly.validate": "assembly/validate.mjs";
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
- profile?: string;
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":"AA2BA,mEAAmE;AACnE,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,YAAY,CAAC;AAgBlD,uFAAuF;AACvF,eAAO,MAAM,eAAe,aAAsE,CAAC;AAEnG,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,CA8EhB;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAoBA"}
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
- * plugins: [./ai-plugins/core/builder], profile: builder, timeoutMs: … }
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
- "builder.producer": "builders/producer.mjs",
28
- "builder.repair": "builders/repair.mjs",
29
- "assembly.fix": "assembly/fix.mjs",
30
- "assembly.validate": "assembly/validate.mjs",
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(["agent", "prompt", "rules", "plugins", "profile", "args"]);
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.plugins, `${key}.plugins`);
190
+ const plugins = stringList(object.homePlugins, `${key}.homePlugins`);
180
191
  if (plugins.ok === false) {
181
192
  return plugins;
182
193
  }
183
- const profile = object.profile;
184
- if (profile !== undefined && (typeof profile !== "string" || profile.trim().length === 0)) {
185
- return { ok: false, reason: `Config "${key}.profile" must be a deck profile name.` };
186
- }
187
- if (profile !== undefined && agent.pluginsOut === undefined) {
188
- return {
189
- ok: false,
190
- reason: `Config "${key}" names a deck profile, so "agents.${name}.pluginsOut" must say where it is built.`,
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.profile = value;
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"}