@dzhechkov/harness-cli 0.8.15 → 0.8.17
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/.dz-manifest.json +16 -16
- package/README.md +134 -13
- package/dist/boolean-flags.d.ts.map +1 -1
- package/dist/boolean-flags.js +4 -0
- package/dist/boolean-flags.js.map +1 -1
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +516 -42
- package/dist/cli.js.map +1 -1
- package/dist/known-flags.d.ts.map +1 -1
- package/dist/known-flags.js +14 -0
- package/dist/known-flags.js.map +1 -1
- package/package.json +10 -10
- package/sbom.json +15 -15
- package/src/boolean-flags.ts +4 -0
- package/src/cli.ts +448 -42
- package/src/known-flags.ts +14 -0
package/.dz-manifest.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
11
|
"path": "README.md",
|
|
12
|
-
"sha256": "
|
|
12
|
+
"sha256": "0a9553b413db2cf2e1ac11fa7809974dbba743e457bc2898850e32536f70a000"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"path": "dist/bin.d.ts",
|
|
@@ -33,31 +33,31 @@
|
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"path": "dist/boolean-flags.d.ts.map",
|
|
36
|
-
"sha256": "
|
|
36
|
+
"sha256": "5d168189752313c0592f291f57187feab46445478bb3c6d1f6b9330de4205c83"
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"path": "dist/boolean-flags.js",
|
|
40
|
-
"sha256": "
|
|
40
|
+
"sha256": "88ddbf29e0b97f22ad8c8cb65fae8202098627decf4f4d0bdbb24374be7e273c"
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"path": "dist/boolean-flags.js.map",
|
|
44
|
-
"sha256": "
|
|
44
|
+
"sha256": "5a772e4d7d6c1515d31645b689e2bd92d1c1c42625ea0f439981c2d5b0f8dd0d"
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
"path": "dist/cli.d.ts",
|
|
48
|
-
"sha256": "
|
|
48
|
+
"sha256": "a4f6ad121c0e81336e517b10ba656af428cc07d9f41fdc00967d1cd0122be1ee"
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
"path": "dist/cli.d.ts.map",
|
|
52
|
-
"sha256": "
|
|
52
|
+
"sha256": "40ce13aec8fc6cb0beb1ed02f07bb22438f940d52ef59d02f6dc9352e67b8d79"
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
"path": "dist/cli.js",
|
|
56
|
-
"sha256": "
|
|
56
|
+
"sha256": "b5b87557988b5ec5e58913f53068e35dd5a8f8aac6c62f409d13ab9d9b8202b7"
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
"path": "dist/cli.js.map",
|
|
60
|
-
"sha256": "
|
|
60
|
+
"sha256": "4d0925b3047fc96233ddb1118b071a0a1eca35995a06f30cdfc8b2e613f1ec31"
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
"path": "dist/command-inventory.d.ts",
|
|
@@ -129,15 +129,15 @@
|
|
|
129
129
|
},
|
|
130
130
|
{
|
|
131
131
|
"path": "dist/known-flags.d.ts.map",
|
|
132
|
-
"sha256": "
|
|
132
|
+
"sha256": "703058c8bbf0307ab29f12f8355c8984508f38214c32ab85da790446f0cb9699"
|
|
133
133
|
},
|
|
134
134
|
{
|
|
135
135
|
"path": "dist/known-flags.js",
|
|
136
|
-
"sha256": "
|
|
136
|
+
"sha256": "6bae6e7f551b6024e3212655f4c5a8f9e426ae0858ff3e65f08d0539bb617028"
|
|
137
137
|
},
|
|
138
138
|
{
|
|
139
139
|
"path": "dist/known-flags.js.map",
|
|
140
|
-
"sha256": "
|
|
140
|
+
"sha256": "9edabc481a2545ac56ddfdfba82623cd3ac1cf8a37551b5ff43930bf5f2ef48f"
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
143
|
"path": "keys/README.md",
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
},
|
|
150
150
|
{
|
|
151
151
|
"path": "package.json",
|
|
152
|
-
"sha256": "
|
|
152
|
+
"sha256": "1db45f8ab165516a8592bf9bb9dba68993f66e0f4a8b8e42b93c1cfa140a85f7"
|
|
153
153
|
},
|
|
154
154
|
{
|
|
155
155
|
"path": "src/bin.ts",
|
|
@@ -157,11 +157,11 @@
|
|
|
157
157
|
},
|
|
158
158
|
{
|
|
159
159
|
"path": "src/boolean-flags.ts",
|
|
160
|
-
"sha256": "
|
|
160
|
+
"sha256": "f8f029ad790f43d28fcc1e520c4f74ee39b3a9591d71619546165149a914b054"
|
|
161
161
|
},
|
|
162
162
|
{
|
|
163
163
|
"path": "src/cli.ts",
|
|
164
|
-
"sha256": "
|
|
164
|
+
"sha256": "5ba834f5795e8d4208159aa6fbee738f38978ada811f49ba85f6798079970144"
|
|
165
165
|
},
|
|
166
166
|
{
|
|
167
167
|
"path": "src/command-inventory.ts",
|
|
@@ -181,9 +181,9 @@
|
|
|
181
181
|
},
|
|
182
182
|
{
|
|
183
183
|
"path": "src/known-flags.ts",
|
|
184
|
-
"sha256": "
|
|
184
|
+
"sha256": "f00496dde83db529d8dde54cf1a5a0048c4c08c49c085e035ad1c90d6a602b30"
|
|
185
185
|
}
|
|
186
186
|
]
|
|
187
187
|
},
|
|
188
|
-
"signature": "
|
|
188
|
+
"signature": "pMVdgsF1bhazSOV4x1vzs+67DwlCf+cXrQ3qLIjnxgjL+cdMNtny7gop0jF1qpwXw5fQx8JBixMly8tZl49qDw=="
|
|
189
189
|
}
|
package/README.md
CHANGED
|
@@ -279,7 +279,7 @@ you know exactly which file is at fault, and you know whose defect it is.
|
|
|
279
279
|
|
|
280
280
|
## User Journey — from install to mastery
|
|
281
281
|
|
|
282
|
-
All
|
|
282
|
+
All 91 commands (MEASURED — reproducer: `node --input-type=module -e "import('./dist/index.js').then(m=>console.log(m.DZ_COMMANDS.length))"` from this package; rendered help documents 92 unique top-level names — the 91 plus the built-in `help` — pinned NAME-FOR-NAME by `test/command-inventory-parity.test.ts`) mapped to a real workflow:
|
|
283
283
|
|
|
284
284
|
```
|
|
285
285
|
DISCOVER → INSTALL → USE → CREATE → MAINTAIN → SHARE
|
|
@@ -651,6 +651,7 @@ Three surfaces, three strictness levels — and promotion is EARNED, never autom
|
|
|
651
651
|
|
|
652
652
|
```bash
|
|
653
653
|
dz teach "..." # → "⚠ quarantined: excluded from auto-inject, damped in recall"
|
|
654
|
+
dz teach "..." # the same normalized text reinforces the existing lesson instead of adding a duplicate; quarantine is preserved
|
|
654
655
|
dz recall "topic" # ⚠q hits are VISIBLE but marked + rank-damped (never hidden)
|
|
655
656
|
# the UserPromptSubmit auto-inject hook EXCLUDES ⚠q lessons entirely (logged, never silent)
|
|
656
657
|
|
|
@@ -1938,10 +1939,10 @@ runs a command that MEASURES the declared artifacts itself. It refuses a null re
|
|
|
1938
1939
|
never recorded as done), an absent or partially-present artifact set, and a stage that declares nothing
|
|
1939
1940
|
to witness — so a stage that did not happen can no longer be recorded, which the old mechanism allowed.
|
|
1940
1941
|
|
|
1941
|
-
## All Commands (
|
|
1942
|
+
## All Commands (91)
|
|
1942
1943
|
|
|
1943
|
-
*(
|
|
1944
|
-
top-level names — the
|
|
1944
|
+
*(91 MEASURED from the bounded command inventory below; rendered `dz --help` exposes 92 unique
|
|
1945
|
+
top-level names — the 91 plus the built-in `help`, which prints USAGE before the dispatch switch and
|
|
1945
1946
|
is therefore documented without being a command. Both numbers are COMPUTED, never typed: the name
|
|
1946
1947
|
sets of this section, the root README, the docs site and `DZ_COMMANDS` are pinned to each other by
|
|
1947
1948
|
`test/command-inventory-parity.test.ts`.)*
|
|
@@ -2006,7 +2007,11 @@ dz bto-optimize --split|--plan|--select|--scope-check|--diff [--json] # determ
|
|
|
2006
2007
|
dz discrimination-check --test <f[,f]> [--base <ref>] [--name <filter>] [--runner <cmd>] [--timeout <ms>] [--json] # §42 test-discrimination gate for feature-adr Step-8: run the ADR's property test in an isolated git worktree at pre-feature base — it MUST go red without the fix. SEVEN verdicts, each gated on EXECUTION evidence: DISCRIMINATES · DISCRIMINATES_VIA_ERROR · NON_DISCRIMINATING (false green) · TEST_FILE_ABSENT · LOAD_ERROR_AT_BOTH_REVS · FAILS_AT_TIP · CANNOT_ISOLATE (+ typed reason). Advisory, never auto-aborts
|
|
2007
2008
|
dz amendment-check --slug <slug> | --feature-dir <dir> | --all [--json] (every AM-N / AM-CP-N amendment row must resolve to a test found INSIDE the file the row names; the PLAN is authoritative when it carries rows, and an ideation amendment the plan drops is a failure; --all is a census that always exits 0; exit 0 pass/skip, 1 fail, 3 NOT-ESTABLISHED — ZERO parsed rows may skip only when the whole first paragraph or heading suffix is exactly "None"/"N/A"/"нет", optionally with a full stop; an optional CommonMark closing # sequence is heading furniture, qualified text is refused, and AM-like content beside the declaration is NOT-ESTABLISHED)
|
|
2008
2009
|
dz contract-check --slug <s> [--json] (read-only retrospective feature contract gate: canonical AC-N + ADR Confirmation → CC-N; every item needs one artifact-anchored met|unmet|not-testable verdict; A/B with unmet is refused; exit 0 pass / 1 readable violation / 2 invalid invocation or unreadable/not-established artifacts)
|
|
2010
|
+
dz journal add --kind decision|verdict|run|error|block "<text>" [--ref <trace>] [--at <ISO>] [--quote <file>] [--commit-quote]; show [--day|--week] [--at <date>] [--kind <kind>] [--json] # UTC day files, witnessed append; quotes local by default
|
|
2009
2011
|
dz feature-adr-record --kind ledger|training-pair --stage <s> [--slug <s>] [--row|--pair <json>] [--mark <n>] [--once] [--json] (the witnessed writer: payload as an ARGUMENT never as shell, refused before any write, timestamp stamped before serialising, append verified by re-reading the tail; exit 0 written|duplicate|skipped, 2 refused, 3 not-verified, never blocking)
|
|
2012
|
+
dz runs [--settle] [--stall-minutes N] [--json] [--project <dir>] (read the run registry: live / stalled / orphaned / inconclusive / finished)
|
|
2013
|
+
dz runs-record --event started|heartbeat|finished [--run-id <id>] [--kind <kind>] [--slug <slug>] [--pid <pid|host>] [--parent-run-id <id>] [--outcome <text>] [--project <dir>] [--json] (append one run event)
|
|
2014
|
+
dz runs-clean [--apply] [--retention-days N] [--project <dir>] [--json] (plan cleanup of old clean merged worktrees and dead/finished registry histories; apply explicitly)
|
|
2010
2015
|
dz mutation-gate [--package <dir>] [--registry <file>] [--test-cmd "<cmd>"] [--only <id[,id]>] [--timeout <ms>] [--rebaseline per-entry|final] [--keep-scratch] [--json] # the mutation gate: for each NAMED protection in a declarative registry, copy the package to a scratch dir (shadow-repo layout, node_modules symlinked, git-initialized), verify the baseline is green, apply the entry's exact {find, replace} mutation, run the suite, REQUIRE red, restore — and require the red to be ATTRIBUTABLE to the protection: a mutated file that no longer parses is MUTATION_UNPARSEABLE, a failing count far above the entry's bound (maxFailing, default from observed) is OVER_FAILING, and a restored tree that does not reproduce green makes the entry INCONCLUSIVE (flaky suite). A mutation that does not apply, a green suite, or an inconclusive run is a FAILURE — never a skip. exit 0 all proven / 1 gate failed / 2 setup error
|
|
2011
2016
|
dz delivery-check --slug <slug> [--context-only] [--findings <f.json>] [--strict] [--author <model>] [--json] # portable Step-10 Delivery Gate: the `manual` form that travels to every shell target — prints the 4-plane review brief (regressions ‖ security ‖ code-quality ‖ product-honesty) + artifact probes; --findings classifies a fed-back review into a fail-closed ready|blocked hand-off (only cross-validated BLOCKER/HIGH count) and writes features/<slug>/10_delivery_review.md; --strict exits 1 on blocked
|
|
2012
2017
|
dz skills-verify [--dir <project>] [--expect a,b] [--static] [--strict] [--timeout <s>] [--json] # does .claude/skills/ actually REGISTER? --static = instant layout scan (CI-safe, no session): flags dirs that can never register; default also starts a real session and reads the authoritative system/init listing. exit 0 pass / 1 fail / 2 inconclusive — an unobservable registration is NEVER a pass
|
|
@@ -2063,7 +2068,7 @@ dz import-ecc [--local-path <dir>] [--select id,id,...] [--limit N] [--out
|
|
|
2063
2068
|
```
|
|
2064
2069
|
|
|
2065
2070
|
Built-in, not a command: `dz help` prints this same USAGE and is handled before the dispatch switch,
|
|
2066
|
-
so `dz --help` lists
|
|
2071
|
+
so `dz --help` lists 92 names while the canonical inventory above holds 91 (ADR-001 of feature
|
|
2067
2072
|
`command-count-triad`).
|
|
2068
2073
|
|
|
2069
2074
|
**Adding a command — the whole checklist, in order.** It replaces the seven-place folklore that used
|
|
@@ -2206,17 +2211,31 @@ echo "how do I handle replication lag?" | dz brain ground --budget 2000 # eage
|
|
|
2206
2211
|
|
|
2207
2212
|
### Live self-learning panel (`dz statusline`)
|
|
2208
2213
|
|
|
2214
|
+
The owner's combined panel keeps the mirror indicator silent on equal lesson counts. On divergence
|
|
2215
|
+
it shows `dz 🎓 N (mirror M ⚠)`. A mirror that EXISTS but cannot be read shows
|
|
2216
|
+
`dz 🎓 N (mirror unreadable ⚠)`; a project with NO mirror at all stays silent — there is nothing to
|
|
2217
|
+
compare, and lighting up there would make the indicator permanent noise.
|
|
2218
|
+
The mirror figure counts LESSONS only — backlog ideas and book units are excluded, so the indicator
|
|
2219
|
+
is comparable with the lexical count instead of lighting up permanently. It is read from
|
|
2220
|
+
`vectorLessonRows`, never from `vectorRows`: that field keeps counting the whole mirror because the
|
|
2221
|
+
store guard reads it as an integrity signal, and narrowing it would look like a store collapse.
|
|
2222
|
+
The JSON payload exposes these warnings as `patternMirror`; parity omits that field. Both surfaces
|
|
2223
|
+
carry the indicator — the combined panel helper and `dz statusline` itself.
|
|
2224
|
+
|
|
2209
2225
|
`dz statusline` renders a compact Claude Code statusline that surfaces dz's learning at a glance:
|
|
2210
2226
|
|
|
2211
2227
|
```
|
|
2212
|
-
🎓 dz: 12 (9
|
|
2228
|
+
🎓 dz: 12 (9 active · 3 quarantined) (mirror 11 ⚠) · 🧠 3 sources (223/315/60)
|
|
2213
2229
|
```
|
|
2214
2230
|
|
|
2215
2231
|
The parenthesized split is read only from the primary lexical store. A row is quarantined exactly
|
|
2216
2232
|
when parsed metadata has `qStatus: "quarantined"`; historical fields do not count. The quarantine
|
|
2217
|
-
fragment is omitted at zero, `⚠` appears at one third of the pool, and `⚠
|
|
2233
|
+
fragment is omitted at zero, `⚠` appears at one third of the pool, and `⚠ tiers ΔN` reports a
|
|
2218
2234
|
quarantine-label difference greater than five rows from the vector mirror. `M sources` is how many
|
|
2219
|
-
brain sources (book-KBs / grounding stores) are wired
|
|
2235
|
+
brain sources (book-KBs / grounding stores) are wired, and the parenthesised list after it gives the
|
|
2236
|
+
KU volume of EACH source in brain order — four sources of 300 units and four of three read
|
|
2237
|
+
identically without it. The list is omitted (bare source count) when the volumes cannot be
|
|
2238
|
+
enumerated, rather than printing invented zeros. Panel text is English by owner request. Enable it once:
|
|
2220
2239
|
|
|
2221
2240
|
```bash
|
|
2222
2241
|
dz statusline --install # wires it into .claude/settings.json → statusLine
|
|
@@ -2237,7 +2256,7 @@ every trace flush:
|
|
|
2237
2256
|
|
|
2238
2257
|
```bash
|
|
2239
2258
|
# the /feature-adr pipeline — reports the learning loop it is actually running
|
|
2240
|
-
dz statusline --fa-record --slug add-user-auth --step "Step 8 QE" --recalled 7 --stored 2 --mode full
|
|
2259
|
+
dz statusline --fa-record --slug add-user-auth --step "Step 8 QE" --run-id fa-20260907-1 --recalled 7 --stored 2 --mode full
|
|
2241
2260
|
|
|
2242
2261
|
# a generated loop — same file, different producer, so it says so
|
|
2243
2262
|
dz statusline --fa-record --slug my-loop --step build --kind loop
|
|
@@ -2292,6 +2311,13 @@ echo '{}' | dz statusline --project "$D"
|
|
|
2292
2311
|
# → 📐 add-user-auth [M] 5/8 ⛔ K2 → Step 6 · 0м/— # a LEGITIMATE regression, recorded verbatim
|
|
2293
2312
|
```
|
|
2294
2313
|
|
|
2314
|
+
The staged workflow producer creates `features/<slug>/.fa-state/run-id` from shell time on the first
|
|
2315
|
+
phase record, overwrites it on a new invocation, and passes `--run-id "$(cat … || true)"` on every
|
|
2316
|
+
phase command. `cmdStatuslineFaRecord` trims and forwards a non-empty value to the core state writer,
|
|
2317
|
+
so a restart of the same slug can record its real early step while a backwards record carrying the
|
|
2318
|
+
same id remains absorbed. The read is deliberately fail-open: no readable file, an empty flag, or an
|
|
2319
|
+
omitted flag keeps the legacy behavior and never stops the pipeline.
|
|
2320
|
+
|
|
2295
2321
|
##### A refused write is LOUD, and never breaks your pipeline
|
|
2296
2322
|
|
|
2297
2323
|
The slot transition runs inside the `fa-phase-slot` named lock (it is a read-modify-write: two
|
|
@@ -3054,6 +3080,14 @@ dz mcp-scan . --reconcile --fail-on-undergrant # CI: exit 1 if a skill declare
|
|
|
3054
3080
|
|
|
3055
3081
|
### dz publish — automated npm publish
|
|
3056
3082
|
|
|
3083
|
+
For a live publish, the CLI prints `published` only after npm answers with the exact new package
|
|
3084
|
+
version, followed by the receipt text `confirmed by registry after N probes`. A zero exit from
|
|
3085
|
+
`pnpm publish` alone is not success. The publisher tries up to 30 registry probes with 10-second
|
|
3086
|
+
pauses between misses; an unconfirmed version is an error and its local bump is restored.
|
|
3087
|
+
`--dry-run` and `--bump-only` do not probe for this receipt because neither performs a live publish.
|
|
3088
|
+
When the receipt never arrives, the CLI adds one line telling you what to check: `npm view <pkg>@<version>` —
|
|
3089
|
+
if the registry answers, the publish DID land and only the local bump was rolled back; re-apply it by hand.
|
|
3090
|
+
|
|
3057
3091
|
```bash
|
|
3058
3092
|
dz publish --dry-run # preview what would publish
|
|
3059
3093
|
dz publish --filter skills-devops # publish specific package
|
|
@@ -4340,7 +4374,7 @@ The learned store round-trips across machines in **two** formats, and de-duplica
|
|
|
4340
4374
|
|
|
4341
4375
|
**`dz vector harmonize` — semantic merge.** `dz teach --from-json` only dedups by *exact* text, so paraphrases survive: *"use DataLoader to batch queries"* and *"batch DB round-trips with a dataloader"* are separate rows. Harmonize finds near-duplicate **clusters** by cosine similarity (θ default `0.92`, `--threshold`), keeps the **highest-reward** member of each (tie-break: longer/more-specific text, then newer `ts`), folds reinforcement signal into the keeper (`uses = Σ member uses + drops`, `avgReward` = honest mean of observed member rewards, `mergedFrom` = dropped ids), then removes the rest only on `--apply`. Dry-run previews and writes nothing; apply writes a restorable backup first. It **never** drops a unique pattern. With no vector engine it degrades to **exact-text dedup + an honest note** — never throws.
|
|
4342
4376
|
|
|
4343
|
-
**Learning signal seam.** Ranking reinforcement is behind `memory.learning.backend`: default `native` (bounded uses/recency/reward signal), kill switch `off`, and reserved `ruvector-gnn` (accepted by config with an honest fallback to native; no RuVector dependency is installed). `memory.learning.onRecallHits:false` disables the default recall-hit auto-bump. `dz teach --reinforce "<id-or-text>"` records an explicit use; `dz teach --guard` is opt-in and only reinforces near-duplicates at θ ≥ `0.95`, while a different reward still writes a new record. `dz recall --all --stats` shows store size, domains, top uses, duplicate groups, and re-teach/reinforce trend counters.
|
|
4377
|
+
**Learning signal seam.** Ranking reinforcement is behind `memory.learning.backend`: default `native` (bounded uses/recency/reward signal), kill switch `off`, and reserved `ruvector-gnn` (accepted by config with an honest fallback to native; no RuVector dependency is installed). `memory.learning.onRecallHits:false` disables the default recall-hit auto-bump. On the ordinary path, teaching the same normalized exact text in the same domain reinforces the existing lesson instead of writing a duplicate; a quarantined lesson stays quarantined. `dz teach --reinforce "<id-or-text>"` records an explicit use; `dz teach --guard` is opt-in and only reinforces near-duplicates at θ ≥ `0.95`, while a different reward still writes a new record. `dz recall --all --stats` shows store size, domains, top uses, duplicate groups, and re-teach/reinforce trend counters.
|
|
4344
4378
|
|
|
4345
4379
|
**Before → after** (one near-dup cluster):
|
|
4346
4380
|
|
|
@@ -4607,6 +4641,14 @@ repository-relative evidence paths declared by that report. It writes no feature
|
|
|
4607
4641
|
usage ledger, or checkpoint. Slug traversal, absolute/traversing evidence, symlink escape, and QE
|
|
4608
4642
|
self-citation are refused.
|
|
4609
4643
|
|
|
4644
|
+
When `features/<slug>/03_adr` is absent, the command reads
|
|
4645
|
+
`features/<slug>/00_complexity_assessment.md`. An unambiguous S tier establishes a requirements-only
|
|
4646
|
+
contract and adds the informational diagnostic `adr-not-required-for-tier` without changing the
|
|
4647
|
+
outcome. For M, L, or XL, the same missing directory remains NOT-ESTABLISHED with the distinct code
|
|
4648
|
+
`adr-directory-missing`; an unreadable or ambiguous tier keeps the fail-closed
|
|
4649
|
+
`adr-directory-unreadable` result. An existing but unreadable ADR directory is unchanged and remains
|
|
4650
|
+
an `adr-directory-unreadable` refusal.
|
|
4651
|
+
|
|
4610
4652
|
The source vocabulary is exact: `## Acceptance criteria`, one-line `AC-N: ...`, `## Confirmation`,
|
|
4611
4653
|
one-line `- Load-bearing property: ...`, and one-line `- Required automated check: ...`. The QE report
|
|
4612
4654
|
keeps its holistic Grade and adds one `## Contract checklist` fenced JSON payload:
|
|
@@ -4650,14 +4692,30 @@ refusal as the honest answer.
|
|
|
4650
4692
|
|
|
4651
4693
|
## Status
|
|
4652
4694
|
|
|
4653
|
-
`harness-core v0.8.
|
|
4695
|
+
`harness-core v0.8.24` · `harness-cli v0.8.17` — **this release: the instruments stopped lying in
|
|
4696
|
+
four measured ways.** (1) A test run's exit code no longer conflates "a test failed" with "the runner
|
|
4697
|
+
choked": `classifyRunFailure` names `runner-infrastructure` with the closed reason
|
|
4698
|
+
`worker-rpc-timeout` when zero tests failed AND the runner's own worker-RPC pattern is present — an
|
|
4699
|
+
infrastructure outcome is NEVER green, it only stops being anonymous. (2) The Codex routing table is
|
|
4700
|
+
PER-STAGE, following the owner's 2026-09-08 note: router Terra, requirements Sol, research Terra,
|
|
4701
|
+
ADR and architecture Astra, plan Astra on L/XL and Sol otherwise, code Sol — and the plan cell reads
|
|
4702
|
+
the tier the ROUTER produced, not only an explicitly passed argument, which is what kept half the
|
|
4703
|
+
matrix dead. (3) The owner panel gains a mirror indicator (lexical lessons vs mirrored lessons,
|
|
4704
|
+
silent on parity, silent when there is no mirror at all, loud when a mirror EXISTS and cannot be
|
|
4705
|
+
read) and per-source KU volumes next to the brain count; panel text is English. (4) A mutation
|
|
4706
|
+
registry entry may DECLARE an uncoverable protection with a mandatory reason: gaps are counted on
|
|
4707
|
+
their own line with their own `⚠` marker and no longer fail the aggregate verdict — a lamp that is
|
|
4708
|
+
always on is read exactly like a lamp that is off. Six such gaps are declared for the orchestrator
|
|
4709
|
+
script, which lives outside every package and is guarded today only by source-text assertions.
|
|
4710
|
+
|
|
4711
|
+
**Previously (`v0.8.12`):** ONE definition of "a dz
|
|
4654
4712
|
command" (ADR-001, feature `command-count-triad`). `src/command-inventory.ts` is the single pure
|
|
4655
4713
|
parser every consumer derives from — the layer-1 parity test, `dz name-check`, and the new public
|
|
4656
4714
|
exports (`commandInventory`, `declaredCommands`, `dispatchedCommands`, `documentedCommands`,
|
|
4657
4715
|
`stripNonCode`, `validateExceptionList`, `INTERNAL_ENTRY_POINTS`, `PSEUDO_COMMANDS`) — instead of a
|
|
4658
4716
|
fourth private regex and a fourth number. Four hidden commands (`mr-rakes`, `retro`,
|
|
4659
4717
|
`feature-adr-setup`, `bto-optimize`) gained USAGE lines, so `--help` changed; `help` is a documented
|
|
4660
|
-
pseudo-command, not a `case` label. **
|
|
4718
|
+
pseudo-command, not a `case` label. **91 canonical commands, 92 names in rendered `--help`** (the 91
|
|
4661
4719
|
plus the built-in `help`) — both COMPUTED from `cli.ts`, neither typed into a test. Three cross-family QE rounds closed
|
|
4662
4720
|
six parser defects the naive version had: four that INVENTED a command (regex literals with a lone
|
|
4663
4721
|
`}`, `case` labels in comments or templates, sub-verb labels from nested switches, ` dz <name>` lines
|
|
@@ -4671,7 +4729,7 @@ the Russian-catalogue stemming, the fixed `discrimination-check` / `mutation-gat
|
|
|
4671
4729
|
`volume-shadow/v1` publish observations with structured human/JSON/audit parity. All four remain
|
|
4672
4730
|
SOFT-only; incomplete evidence is unknown, and source-comment justification is out of scope.
|
|
4673
4731
|
|
|
4674
|
-
`harness-core v0.8.10` · `skills-feature-adr v1.5.9` — **
|
|
4732
|
+
`harness-core v0.8.10` · `skills-feature-adr v1.5.9` — **published 2026-09-09:** the packaged
|
|
4675
4733
|
feature-adr workflow performs advisory top-3 micro-recall at the live Step 3 ADR choice and Step 6
|
|
4676
4734
|
plan-route choice. Every failure is fail-open; versioned `.fa-state/decision-recall.jsonl` rows make
|
|
4677
4735
|
receipt coverage and repeat-related outcomes derivable offline. The hypothesis is external `[SRC],
|
|
@@ -4864,3 +4922,66 @@ The `.claude-plugin/` directory contains `plugin.json` + `marketplace.json` comp
|
|
|
4864
4922
|
- [OpenCode](https://github.com/sst/opencode) — 3rd target platform (160K+ stars)
|
|
4865
4923
|
- [Hermes Agent](https://github.com/NousResearch/hermes-agent) — 4th target platform
|
|
4866
4924
|
- [OpenClaude](https://github.com/gitlawb/openclaude) — 5th target platform (28K+ stars)
|
|
4925
|
+
|
|
4926
|
+
### Shared Markdown masking in feature-adr gates
|
|
4927
|
+
|
|
4928
|
+
The standalone plan-completeness gate ships with `markdown-masker.mjs`, copied byte-for-byte from
|
|
4929
|
+
harness-core's `src/markdown-masker.ts`. It runs without a core build. Amendment checks, swarm briefs
|
|
4930
|
+
and K2 share the parser while retaining their existing unclosed-block and indentation policies.
|
|
4931
|
+
The four-space indented-code gap remains open for amendment checks and K2; swarm briefs retain their
|
|
4932
|
+
existing masking of indented code. Versions are unchanged in this staged change.
|
|
4933
|
+
|
|
4934
|
+
|
|
4935
|
+
### Run registry
|
|
4936
|
+
|
|
4937
|
+
`dz runs --project <repo> [--json]` reads `.dz/runs/registry.jsonl`. The feature-adr workflow
|
|
4938
|
+
appends `started`, a `heartbeat` at each phase boundary, and `finished` through `dz runs-record`.
|
|
4939
|
+
Each invocation allocates its own run ID. Pass Workflow `args.runPid` for an explicit host PID,
|
|
4940
|
+
and `args.parentRunId` when nesting runs; otherwise the writer resolves the Claude ancestor PID
|
|
4941
|
+
and refuses if it cannot establish one. The courier checks the write response. Registry failures
|
|
4942
|
+
log `run registry: <event> UNVERIFIED — <reason>` and mark the registry outcome `unverified`;
|
|
4943
|
+
the workflow continues. Finalization runs on normal returns and exceptions; host termination
|
|
4944
|
+
can leave a started run without finished.
|
|
4945
|
+
|
|
4946
|
+
`live` requires a responding PID. `orphaned` requires a recorded finish or confirmed absent PID;
|
|
4947
|
+
missing parents, inaccessible PID probes and unreadable registries remain `inconclusive`, with
|
|
4948
|
+
a reason. A confirmed live PID with a heartbeat older than `--stall-minutes` (default 120)
|
|
4949
|
+
is `stalled`; a missing heartbeat remains `live`. Stalled parents remain alive for their children. Completed runs display
|
|
4950
|
+
`finished`; a child of a finished parent is `orphaned`. An unreadable registry exits 1.
|
|
4951
|
+
Before the first run, an absent registry reports `нет реестра: .dz/runs/registry.jsonl ещё не создан (ни одного прогона)`
|
|
4952
|
+
and exits 0 (`status: "missing"` in JSON).
|
|
4953
|
+
|
|
4954
|
+
The core exports `appendRunEvent`, `readRunRegistry`, `probePid`, `liveness`, `liveParents`, and
|
|
4955
|
+
`runRecordCommand`. Appends preserve event identity and bound diagnostic `reason` text below
|
|
4956
|
+
PIPE_BUF with `truncated: true`; oversized identity fields are refused.
|
|
4957
|
+
|
|
4958
|
+
|
|
4959
|
+
### Run cleanup and settlement
|
|
4960
|
+
|
|
4961
|
+
`dz runs --settle` appends `finished` with outcome `died` only for confirmed absent PIDs.
|
|
4962
|
+
A second invocation reports `nothing to settle`. `inconclusive` is preserved. Use
|
|
4963
|
+
`dz runs --stall-minutes 150` to change the heartbeat threshold; `stalled` only changes the display.
|
|
4964
|
+
|
|
4965
|
+
```bash
|
|
4966
|
+
dz runs-clean --project /path/to/repo # inspect the plan first
|
|
4967
|
+
dz runs-clean --project /path/to/repo --retention-days 7 --json
|
|
4968
|
+
# After reviewing the plan, explicitly apply:
|
|
4969
|
+
dz runs-clean --project /path/to/repo --retention-days 7 --apply
|
|
4970
|
+
```
|
|
4971
|
+
|
|
4972
|
+
Only non-main worktrees merged into `main`, clean, and strictly older than the retention
|
|
4973
|
+
(default 2 days, measured from their latest commit) qualify. Detached worktrees use their HEAD's
|
|
4974
|
+
ancestry. Dirty worktrees stay, with the file count and first five paths printed. Unknown merge
|
|
4975
|
+
or commit-age facts stay; unreadable status refuses cleanup. Removal uses Git without force and
|
|
4976
|
+
is reported successful only after rereading the worktree list.
|
|
4977
|
+
|
|
4978
|
+
With `--apply`, whole finished or confirmed-dead run histories whose newest event exceeds retention
|
|
4979
|
+
move to `.dz/runs/registry.archive.jsonl`; live and inconclusive runs stay in `registry.jsonl`.
|
|
4980
|
+
CLI appends, settlement, and archive read/plan/rewrite share the named `run-registry-archive` lock
|
|
4981
|
+
under `.dz/runs`. Archive writes append before temp-file rename; a crash between those operations
|
|
4982
|
+
can duplicate archive events on retry. Direct API writers must coordinate with that same lock.
|
|
4983
|
+
|
|
4984
|
+
Core APIs: `settleDeadRuns` and `planRegistryArchive` are pure registry decisions;
|
|
4985
|
+
`planWorktreeCleanup` accepts injected `WorktreeFact` values and returns remove/keep decisions;
|
|
4986
|
+
`renderCleanupPlan` renders them. `worktreeRemovalsToApply` selects removals only when apply is true.
|
|
4987
|
+
No process is terminated and no branch is deleted.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boolean-flags.d.ts","sourceRoot":"","sources":["../src/boolean-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"boolean-flags.d.ts","sourceRoot":"","sources":["../src/boolean-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAiGhD,CAAC;AAEH,gGAAgG;AAChG,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAAc,CAAC;AAElE,iGAAiG;AACjG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGpE"}
|
package/dist/boolean-flags.js
CHANGED
|
@@ -35,7 +35,9 @@ export const BOOLEAN_CLI_FLAGS = new Set([
|
|
|
35
35
|
'by-stage',
|
|
36
36
|
'calibrate',
|
|
37
37
|
'check',
|
|
38
|
+
'commit-quote',
|
|
38
39
|
'confirm',
|
|
40
|
+
'day',
|
|
39
41
|
'context-only',
|
|
40
42
|
'deep',
|
|
41
43
|
'diff',
|
|
@@ -98,6 +100,7 @@ export const BOOLEAN_CLI_FLAGS = new Set([
|
|
|
98
100
|
'scope-check',
|
|
99
101
|
'semantic',
|
|
100
102
|
'send',
|
|
103
|
+
'settle',
|
|
101
104
|
'split',
|
|
102
105
|
'stages-json',
|
|
103
106
|
'static',
|
|
@@ -108,6 +111,7 @@ export const BOOLEAN_CLI_FLAGS = new Set([
|
|
|
108
111
|
'usage',
|
|
109
112
|
'validate',
|
|
110
113
|
'weak',
|
|
114
|
+
'week',
|
|
111
115
|
'with-pairs',
|
|
112
116
|
'with-references',
|
|
113
117
|
'yes',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boolean-flags.js","sourceRoot":"","sources":["../src/boolean-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,UAAU;IACV,UAAU;IACV,KAAK;IACL,kBAAkB;IAClB,mBAAmB;IACnB,sBAAsB;IACtB,KAAK;IACL,OAAO;IACP,WAAW;IACX,MAAM;IACN,OAAO;IACP,KAAK;IACL,WAAW;IACX,UAAU;IACV,WAAW;IACX,OAAO;IACP,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,MAAM;IACN,QAAQ;IACR,WAAW;IACX,oBAAoB;IACpB,UAAU;IACV,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,WAAW;IACX,MAAM;IACN,eAAe;IACf,MAAM;IACN,SAAS;IACT,gBAAgB;IAChB,cAAc;IACd,MAAM;IACN,cAAc;IACd,QAAQ;IACR,SAAS;IACT,MAAM;IACN,cAAc;IACd,MAAM;IACN,OAAO;IACP,YAAY;IACZ,UAAU;IACV,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,WAAW;IACX,WAAW;IACX,eAAe;IACf,WAAW;IACX,aAAa;IACb,UAAU;IACV,WAAW;IACX,MAAM;IACN,UAAU;IACV,SAAS;IACT,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,SAAS;IACT,WAAW;IACX,oBAAoB;IACpB,mBAAmB;IACnB,QAAQ;IACR,OAAO;IACP,cAAc;IACd,iBAAiB;IACjB,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,aAAa;IACb,UAAU;IACV,MAAM;IACN,OAAO;IACP,aAAa;IACb,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,KAAK;IACL,OAAO;IACP,OAAO;IACP,UAAU;IACV,MAAM;IACN,YAAY;IACZ,iBAAiB;IACjB,KAAK;CACN,CAAC,CAAC;AAEH,gGAAgG;AAChG,MAAM,CAAC,MAAM,qBAAqB,GAAsB,CAAC,OAAO,CAAC,CAAC;AAElE,iGAAiG;AACjG,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe;IACzD,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtE,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"boolean-flags.js","sourceRoot":"","sources":["../src/boolean-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,UAAU;IACV,UAAU;IACV,KAAK;IACL,kBAAkB;IAClB,mBAAmB;IACnB,sBAAsB;IACtB,KAAK;IACL,OAAO;IACP,WAAW;IACX,MAAM;IACN,OAAO;IACP,KAAK;IACL,WAAW;IACX,UAAU;IACV,WAAW;IACX,OAAO;IACP,cAAc;IACd,SAAS;IACT,KAAK;IACL,cAAc;IACd,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,MAAM;IACN,QAAQ;IACR,WAAW;IACX,oBAAoB;IACpB,UAAU;IACV,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,WAAW;IACX,MAAM;IACN,eAAe;IACf,MAAM;IACN,SAAS;IACT,gBAAgB;IAChB,cAAc;IACd,MAAM;IACN,cAAc;IACd,QAAQ;IACR,SAAS;IACT,MAAM;IACN,cAAc;IACd,MAAM;IACN,OAAO;IACP,YAAY;IACZ,UAAU;IACV,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,WAAW;IACX,WAAW;IACX,eAAe;IACf,WAAW;IACX,aAAa;IACb,UAAU;IACV,WAAW;IACX,MAAM;IACN,UAAU;IACV,SAAS;IACT,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,SAAS;IACT,WAAW;IACX,oBAAoB;IACpB,mBAAmB;IACnB,QAAQ;IACR,OAAO;IACP,cAAc;IACd,iBAAiB;IACjB,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,aAAa;IACb,UAAU;IACV,MAAM;IACN,QAAQ;IACR,OAAO;IACP,aAAa;IACb,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,KAAK;IACL,OAAO;IACP,OAAO;IACP,UAAU;IACV,MAAM;IACN,MAAM;IACN,YAAY;IACZ,iBAAiB;IACjB,KAAK;CACN,CAAC,CAAC;AAEH,gGAAgG;AAChG,MAAM,CAAC,MAAM,qBAAqB,GAAsB,CAAC,OAAO,CAAC,CAAC;AAElE,iGAAiG;AACjG,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe;IACzD,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtE,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* @packageDocumentation
|
|
5
5
|
*/
|
|
6
6
|
import { spawn, type ChildProcess } from 'node:child_process';
|
|
7
|
+
import { type JournalIo } from '@dzhechkov/harness-core';
|
|
7
8
|
import { runSyncCodexHooks, type CodexHooksSyncReport, type BridgeFamily } from '@dzhechkov/harness-core';
|
|
8
9
|
import type { RecallPatternsOptions, TeachGuardResult, IntegrationOutcome } from '@dzhechkov/harness-core';
|
|
9
10
|
/** Literal command inventory, pinned against the main dispatch switch by a layer-1 test. */
|
|
@@ -67,6 +68,8 @@ export interface CliIo {
|
|
|
67
68
|
readonly installRunner?: (command: string, cwd: string) => void;
|
|
68
69
|
/** Fault seam for proving mutation-gate catches and retries thrown runner internals. */
|
|
69
70
|
readonly mutationGateRunner?: MutationGateRunner;
|
|
71
|
+
/** Read-back fault seam; production uses the real filesystem. */
|
|
72
|
+
readonly journalIo?: JournalIo;
|
|
70
73
|
}
|
|
71
74
|
/** Injected subprocess runner used by `dz release` (see {@link CliIo.releaseRunner}). */
|
|
72
75
|
export type ReleaseExecRunner = (cmd: string, opts: {
|
|
@@ -78,6 +81,7 @@ export type ReleaseExecRunner = (cmd: string, opts: {
|
|
|
78
81
|
stderr: string;
|
|
79
82
|
timedOut?: boolean;
|
|
80
83
|
};
|
|
84
|
+
type Write = (line: string) => void;
|
|
81
85
|
/**
|
|
82
86
|
* Команда npm для установки пакета В ЦЕЛЕВОЙ КАТАЛОГ, а не куда решит npm.
|
|
83
87
|
*
|
|
@@ -166,6 +170,12 @@ export declare function __wfKillGroupTestSeam(): {
|
|
|
166
170
|
killAll: () => number[];
|
|
167
171
|
size: () => number;
|
|
168
172
|
};
|
|
173
|
+
/** Git effects are injected; the core owns eligibility and the explicit apply boundary. */
|
|
174
|
+
export declare function cmdRunsClean(options: Map<string, string>, flags: Set<string>, cwd: string, write: Write, exec?: (command: string, options: {
|
|
175
|
+
cwd: string;
|
|
176
|
+
encoding: 'utf8';
|
|
177
|
+
stdio: ['ignore', 'pipe', 'pipe'];
|
|
178
|
+
}) => string | Buffer): number;
|
|
169
179
|
export interface ClaudeBridgeRun {
|
|
170
180
|
stdout: string;
|
|
171
181
|
stderr: string;
|
|
@@ -221,4 +231,5 @@ export declare function runChildBridge(bin: string, argv: string[], opts: {
|
|
|
221
231
|
envExtra?: readonly string[];
|
|
222
232
|
}): Promise<ClaudeBridgeRun>;
|
|
223
233
|
export declare function runCli(argv: string[], io?: CliIo): Promise<number>;
|
|
234
|
+
export {};
|
|
224
235
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAoC,KAAK,EAAa,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAoC,KAAK,EAAa,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAK3G,OAAO,EAAyF,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGhJ,OAAO,EAgDL,iBAAiB,EAmBjB,KAAK,oBAAoB,EA6ZzB,KAAK,YAAY,EA6ElB,MAAM,yBAAyB,CAAC;AAcjC,OAAO,KAAK,EAAgE,qBAAqB,EAAE,gBAAgB,EAAc,kBAAkB,EAA0J,MAAM,yBAAyB,CAAC;AA6B7U,4FAA4F;AAC5F,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAexC,CAAC;AA2JF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,MAAM,kBAAkB,GAAG,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,KAC1D,6BAA6B,CAAC;AAEnC,2EAA2E;AAC3E,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,mGAAmG;IACnG,QAAQ,CAAC,YAAY,CAAC,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAC9D,sFAAsF;IACtF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjI,uGAAuG;IACvG,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7H;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,wFAAwF;IACxF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACjD,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED,yFAAyF;AACzF,MAAM,MAAM,iBAAiB,GAAG,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,KACvD;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAyD9E,KAAK,KAAK,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AA41CpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAExF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAMhF;AAusED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA0BnF;AAk9HD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAQzG;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,kGAAkG;AAClG,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,iBAAiB,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,EACvE,QAAQ,UAAQ,GACf,kBAAkB,CAkBpB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,SAAkB,GAAG,iBAAiB,CAoB1G;AAwGD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,mBAAmB,EAC1B,IAAI,GAAE,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,oBAA+C,EAC3G,KAAK,SAAa,GACjB,iBAAiB,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,CAK/D;AAomGD,wFAAwF;AACxF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAElG;AA4BD,gFAAgF;AAChF,wBAAgB,qBAAqB,IAAI;IAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,MAAM,CAAA;CAAE,CAM7I;AAiqDD,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EACtG,IAAI,GAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KAAK,MAAM,GAAG,MAAiB,GAAG,MAAM,CAkG9I;AA0xBD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAsB,EAC3B,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,eAAe,CAAC,CAI1B;AA8CD,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAEvG;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE;IACJ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAChC,kGAAkG;IAClG,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,GACA,OAAO,CAAC,eAAe,CAAC,CA8D1B;AA8/FD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAE,KAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAwT5E"}
|