musubix3 0.1.2 → 0.1.4

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 (44) hide show
  1. package/.github/plugin/marketplace.json +2 -2
  2. package/.github/skills/sdd-change/SKILL.md +2 -2
  3. package/.github/skills/sdd-formal-codegraph/SKILL.md +6 -6
  4. package/.github/skills/sdd-implementation/SKILL.md +4 -2
  5. package/.github/skills/sdd-quality/SKILL.md +4 -4
  6. package/.github/skills/sdd-traceability/SKILL.md +6 -2
  7. package/CHANGELOG.md +39 -0
  8. package/README-ja.md +121 -40
  9. package/README.md +104 -41
  10. package/dist/packages/analysis/src/adapters.js +134 -7
  11. package/dist/packages/analysis/src/adapters.js.map +1 -1
  12. package/dist/packages/analysis/src/config.d.ts +1 -1
  13. package/dist/packages/analysis/src/config.js +4 -3
  14. package/dist/packages/analysis/src/config.js.map +1 -1
  15. package/dist/packages/analysis/src/files.js +13 -1
  16. package/dist/packages/analysis/src/files.js.map +1 -1
  17. package/dist/packages/analysis/src/graph.d.ts +1 -0
  18. package/dist/packages/analysis/src/graph.js +673 -10
  19. package/dist/packages/analysis/src/graph.js.map +1 -1
  20. package/dist/packages/analysis/src/model-correspondence.js +5 -5
  21. package/dist/packages/analysis/src/model-correspondence.js.map +1 -1
  22. package/dist/packages/analysis/src/mutation.d.ts +1 -1
  23. package/dist/packages/analysis/src/mutation.js +11 -2
  24. package/dist/packages/analysis/src/mutation.js.map +1 -1
  25. package/dist/packages/analysis/src/performance.js +3 -5
  26. package/dist/packages/analysis/src/performance.js.map +1 -1
  27. package/dist/packages/analysis/src/process.js +3 -2
  28. package/dist/packages/analysis/src/process.js.map +1 -1
  29. package/dist/packages/analysis/src/tdd.js +7 -1
  30. package/dist/packages/analysis/src/tdd.js.map +1 -1
  31. package/dist/packages/analysis/src/trace.js +60 -8
  32. package/dist/packages/analysis/src/trace.js.map +1 -1
  33. package/dist/packages/analysis/src/workflow.d.ts +9 -0
  34. package/dist/packages/analysis/src/workflow.js +106 -2
  35. package/dist/packages/analysis/src/workflow.js.map +1 -1
  36. package/dist/packages/cli/src/main.js +17 -2
  37. package/dist/packages/cli/src/main.js.map +1 -1
  38. package/dist/packages/domain/src/constitution.d.ts +1 -1
  39. package/dist/packages/domain/src/constitution.js +1 -0
  40. package/dist/packages/domain/src/constitution.js.map +1 -1
  41. package/dist/packages/domain/src/requirements.js +6 -6
  42. package/dist/packages/domain/src/requirements.js.map +1 -1
  43. package/package.json +1 -1
  44. package/plugin.json +1 -1
package/README.md CHANGED
@@ -1,41 +1,78 @@
1
1
  # musubix3
2
2
 
3
- **Latest published v0.1.2 · GitHub Copilot CLI only · Node.js ≥20 · TypeScript · MIT**
3
+ **Latest release v0.1.4 · GitHub Copilot CLI only · Node.js ≥20 · TypeScript · MIT**
4
4
 
5
5
  [日本語](README-ja.md)
6
6
 
7
- [What changed from musubix2 to musubix3 (Japanese)](MUSUBIX2-TO-MUSUBIX3.md)
7
+ [What changed from musubix2 to musubix3 (Japanese)](docs/MUSUBIX2-TO-MUSUBIX3.md)
8
8
 
9
- Specification-driven development (SDD) skills backed by deterministic checks:
9
+ GitHub Copilot can plan, generate, edit, test, and review software. musubix3
10
+ adds repository-local specifications plus deterministic, fail-closed checks
11
+ over the evidence required by the repository's configured quality profile:
10
12
  requirements → constitution → design/ADRs → implementation → traceability →
11
- quality evidence. Optional formal consistency, compiler dependency analysis and
12
- local knowledge retrieval support the workflow.
13
+ quality evidence.
13
14
 
14
15
  Learned from [musubix2](https://github.com/nahisaho/musubix2)'s concepts, rebuilt
15
16
  cleanly in three workspaces. No artifact compatibility or migration is promised.
16
17
  This repository does **not** guarantee correctness simply because IDs are linked
17
18
  or requirements are satisfiable.
18
19
 
19
- ## Quick start
20
+ ## Why GitHub Copilot alone is not enough
20
21
 
21
- Run the published package from the target project:
22
+ Copilot is the implementation engine. It understands a request, explores the
23
+ repository, proposes a plan, edits files, runs tools, and explains the result.
24
+ That is necessary, but a successful conversation is not durable proof that:
22
25
 
23
- ```sh
24
- npx musubix3@0.1.2 --version
25
- npx musubix3@0.1.2 init --dry-run
26
- npx musubix3@0.1.2 init
27
- copilot
28
- ```
26
+ - the implemented behavior matches an explicit, measurable requirement;
27
+ - every requirement is connected to design, code, and an authoritative test;
28
+ - Red really failed before Green passed without the test being rewritten;
29
+ - test, graph, formal, and quality results still match the current source;
30
+ - a requirement change propagated through all affected artifacts in order;
31
+ - a policy was not weakened merely to make the final gate pass.
32
+
33
+ Conversation text such as “tests passed” or “implementation complete” is not
34
+ enough because it can become stale, omit scope, or disappear outside the
35
+ repository. Copilot should remain responsible for reasoning and development;
36
+ musubix3 makes the completion criteria persistent and machine-checkable.
37
+
38
+ | GitHub Copilot provides | musubix3 complements it with |
39
+ |---|---|
40
+ | Planning, coding, refactoring, and tool execution | Repository-local SDD Skills that require explicit requirements, design decisions, implementation links, and completion conditions |
41
+ | Test generation and runner execution | Structured TEST identities, native-report normalization, and verified Red/Green/Refactor evidence |
42
+ | Explanations of what changed | Typed requirement → design → code → test traceability and bidirectional impact analysis |
43
+ | Repository exploration | Deterministic Code Graph indexing, unresolved-local dependency diagnostics, and architecture gates |
44
+ | Suggestions for constraints and invariants | Optional Z3/Lean consistency checks and model-to-passing-test correspondence |
45
+ | A session-level completion report | Freshness, fingerprints, input-stability checks, protected policy baselines, attestations, and a fail-closed readiness gate |
46
+
47
+ musubix3 does **not** replace Copilot, add another coding agent, or claim that
48
+ formal satisfiability proves implementation correctness. Copilot performs the
49
+ development; musubix3 records the specification, checks the evidence, rejects
50
+ stale or incomplete required evidence, and leaves a reviewable answer to “why
51
+ does this repository's configured policy consider the change ready?”
52
+
53
+ ## Quick start
29
54
 
30
55
  For a reproducible project-local installation:
31
56
 
32
57
  ```sh
33
- npm install --save-dev --save-exact musubix3@0.1.2
58
+ npm install --save-dev --save-exact musubix3@latest
34
59
  npx --no-install musubix3 --version
35
60
  npx --no-install musubix3 init --dry-run
36
61
  npx --no-install musubix3 init
62
+ copilot
37
63
  ```
38
64
 
65
+ For a one-time evaluation without pinning subsequent Skill-driven CLI runs:
66
+
67
+ ```sh
68
+ npx musubix3@latest --version
69
+ npx musubix3@latest init --dry-run
70
+ ```
71
+
72
+ Install the exact local dependency before relying on generated Skills in
73
+ continued development; their commands intentionally use the repository-local
74
+ `npx --no-install musubix3` executable.
75
+
39
76
  To build the repository itself:
40
77
 
41
78
  ```sh
@@ -78,7 +115,8 @@ install the npm package separately when running `npx musubix3` commands.
78
115
 
79
116
  From an installed npm package, `npx musubix3 plugin-install` delegates directly to
80
117
  `copilot plugin install <absolute-package-root>`. It does not edit Copilot
81
- internals. For a durable local plugin path, prefer `npm install --save-dev musubix3`
118
+ internals. For a durable local plugin path, prefer
119
+ `npm install --save-dev --save-exact musubix3@latest`
82
120
  and `npx --no-install musubix3 plugin-install` over an ephemeral npx cache.
83
121
 
84
122
  ### Native marketplace
@@ -95,8 +133,9 @@ These flows use the [native plugin interface](https://docs.github.com/en/copilot
95
133
 
96
134
  ### Repository-local skills / npm installer
97
135
 
98
- Run `npx musubix3 init` in the target repository, or copy `.github/skills/sdd-*`
99
- there yourself. Start Copilot in that trusted project. `init --root <dir>` targets
136
+ Run `npx --no-install musubix3 init` after installing the exact local dependency,
137
+ or copy `.github/skills/sdd-*` there yourself. Start Copilot in that trusted project.
138
+ `init --root <dir>` targets
100
139
  another project; `--feature <slug>` changes the starter directory and ID prefix.
101
140
  Installing another feature does not reset existing configuration.
102
141
 
@@ -189,8 +228,10 @@ validation/gate or requested solver failure, **2** usage, I/O or malformed confi
189
228
  | `model-correspondence validate` | Revalidate Formal JSON → generated trace → authoritative passing test evidence |
190
229
  | `evidence refresh [--changed]` | Regenerate derived evidence through the same fail-closed gate pipeline |
191
230
  | `mutation validate` | Revalidate requirement-scoped schema-v1 killed-mutant evidence |
231
+ | `tdd validate` | Validate persisted Red/Green/Refactor order, fingerprints, durations, and hash-chain evidence |
192
232
  | `tdd red\|green\|refactor <TEST-ID> --requirement <REQ-ID> --command <name>` | Execute and record a verified TDD phase |
193
233
  | `workflow-record <skill> <phase> --status <status>` | Record a compact self-reported workflow declaration |
234
+ | `workflow-sanitize <copilot.jsonl> <output-file> [--session-id <uuid>]` | Remove messages and non-Skill tool data before review or strict verification |
194
235
  | `workflow-verify <copilot.jsonl> [--strict] [--session-id <uuid>]` | Reconcile Skill events; optionally require a complete successful session transcript |
195
236
  | `attestation oidc-audience --key-id <id> [--public-key-file <pem>]` | Derive the GitHub custom audience that authorizes a signing key |
196
237
  | `attestation payload --provider <name> --run-id <id> --key-id <id> [--public-key-file <pem>] [--github-oidc-token-file <jwt>]` | Emit canonical unsigned CI payload for external signing |
@@ -227,7 +268,7 @@ requires `tdd`; a `.musubix/changes/CHANGE-*.md` document additionally requires
227
268
  changes.json # staged change checkpoints
228
269
  order.json # shared monotonic TDD/change chronology ledger
229
270
  performance.json # deterministic operation-budget observations
230
- model-correspondence.json # Formal model → trace → fresh passing test proof
271
+ model-correspondence.json # Formal model → trace → fresh passing-test correspondence evidence
231
272
  mutation.json # fresh requirement-scoped mutation executions
232
273
  attestation.json # optional externally signed CI provenance
233
274
  cache/ # ignored; generated indexes and solver inputs
@@ -279,9 +320,11 @@ Where/While/When clauses. Japanese controlled forms are documented in
279
320
  [README-ja.md](README-ja.md). These are syntax checks, not natural-language
280
321
  understanding; arbitrary prose is deliberately rejected.
281
322
 
282
- Source/test trace annotations are read from comments in JS/TS, Rust, Python, Go,
283
- Java/Kotlin, C/C++, C#, Ruby, PHP and Swift. JS/TS parsing excludes string
284
- literals; other languages require line or block comments:
323
+ Source/test trace annotations are read from language comments. JS/TS uses
324
+ parser-aware comment locations; Haskell supports `--` and `{- ... -}`, Lua
325
+ supports `--` and `--[[ ... ]]`, and Visual Basic supports apostrophe comments
326
+ including `'''` XML documentation. These scanners exclude string literals;
327
+ other languages require their supported line or block comments:
285
328
 
286
329
  ```ts
287
330
  /** @id CODE-AUTH-001
@@ -380,7 +423,10 @@ Use `tdd.redPreflightCommands` to reference plain configured formatter commands;
380
423
  they must pass before Red captures the authoritative test fingerprint.
381
424
  Conventional `.venv` and `venv` Python environments containing a regular
382
425
  `pyvenv.cfg` are excluded from source snapshots and Code Graph indexing.
383
- Arbitrary source directories containing that marker remain tracked.
426
+ Gradle `.gradle/`, Dart `.dart_tool/`, SwiftPM `.build/`, Zig
427
+ `.zig-cache/`/`zig-out/`, and .NET `.dotnet/` CLI homes are excluded only when
428
+ their parent contains the corresponding project manifest. Arbitrary same-named
429
+ source directories remain tracked.
384
430
  `codeGraph.mode` defaults to `compatible`, where unresolved computed
385
431
  `import()`/`require()` calls remain warnings. Set it to `strict` to make those
386
432
  diagnostics gate-blocking errors. A trusted strict policy baseline prevents
@@ -416,15 +462,18 @@ failure or skip blocks readiness regardless of `requiredChecks.commands`.
416
462
  Optional command failures are nonblocking unless a constitution rule rejects the
417
463
  measured count. No configured commands is skipped, not passed.
418
464
  TDD commands require either command-specific `tddArgs` plus a `tddReport`, or a
419
- built-in `vitest`, `jest`, `pytest`, `go-test`, `cargo`, or `junit` adapter.
465
+ built-in `vitest`, `jest`, `pytest`, `go-test`, `cargo`, `junit`, or `dotnet` adapter.
420
466
  Explicit custom configuration takes precedence. Adapters derive targeted
421
467
  arguments and normalize native JSON/JSONL/XML into `musubix-json`. Vitest/Jest
422
468
  reports may contain unrelated skipped tests; targeted TDD selects only the
423
469
  requested ID. pytest requires the JSON-report plugin and underscore-form test
424
470
  names such as `test_TEST_APP_001`. Go uses a `TEST-*` subtest name, Cargo uses a
425
- Rust identifier such as `test_app_001`. JUnit methods must carry an exact
426
- `@Tag("TEST-APP-001")`; keep the underscore-form ID in the method name so it is
427
- recoverable from the launcher's XML report. Before each phase, musubix3 deletes
471
+ Rust identifier such as `test_app_001`. JUnit methods should carry an exact
472
+ `@Tag("TEST-APP-001")` and an ID-bearing method name or `@DisplayName`; the
473
+ normalizer reads both testcase attributes and JUnit Platform display-name output.
474
+ xUnit tests use
475
+ `[Fact(DisplayName = "TEST-APP-001 ...")]` so TRX preserves the identity.
476
+ Before each phase, musubix3 deletes
428
477
  the previous report, creates any required report parent directory, and requires a fresh
429
478
  `musubix-json` document containing exactly the selected test. Its status must be
430
479
  `failed` during Red and `passed` during Green/Refactor; `skipped`, `error`,
@@ -437,9 +486,10 @@ informational. Legacy chronology without order evidence fails with an explicit
437
486
  migration diagnostic. Missing, reordered, altered or orphaned records invalidate
438
487
  the evidence.
439
488
 
440
- CI executes isolated native contracts for all six adapters: Vitest, Jest,
489
+ CI executes isolated native contracts for Vitest, Jest,
441
490
  pytest with `pytest-json-report`, Go test, Cargo test, and the pinned JUnit
442
- Platform Console. Each fixture contains an unrelated failing test, proving that
491
+ Platform Console. The .NET adapter consumes standard TRX and is additionally
492
+ validated by unit contracts and the C# application experiment. Each fixture contains an unrelated failing test, proving that
443
493
  the generated selector executes only the requested identity and that the real
444
494
  native report normalizes correctly. Jest is development-only; the Python,
445
495
  Go/Rust, and Java/JUnit tooling is provisioned only in CI and is not shipped as
@@ -495,6 +545,8 @@ later full gate. `workflow-record` stores a self-reported Skill/phase/status and
495
545
  optional command SHA-256 without storing command text. `workflow-verify` imports
496
546
  only Skill invocation metadata from a Copilot JSONL log and binds every completed
497
547
  declaration one-to-one, in order, to a distinct completed successful tool call.
548
+ Use `workflow-sanitize` first when the source transcript contains messages,
549
+ non-Skill tool arguments, or output that should not enter review evidence.
498
550
  Each Skill invocation must therefore record exactly one final workflow outcome;
499
551
  multi-phase chronology belongs in `change-record`, not duplicate workflow events.
500
552
  Incomplete, failed, reused, out-of-order and stale bindings fail.
@@ -510,8 +562,9 @@ Unrelated concurrent events may be emitted out of timestamp order, so strict mod
510
562
  checks causal tool/result ordering rather than imposing a global timestamp sort.
511
563
  If project inputs change while a gate is running, `input-stability` reports each
512
564
  added, modified, or deleted path with before/after SHA-256 values. Standard
513
- Cargo/Maven `target/` output is excluded, but source-like generated inputs remain
514
- fail-closed. Built-in adapters own their targeting and report arguments. A
565
+ Cargo/Maven `target/`, manifest-scoped .NET `bin/` and `obj/`, and project-local
566
+ `.nuget/packages/` output are excluded, but source-like generated inputs remain fail-closed.
567
+ Built-in adapters own their targeting and report arguments. A
515
568
  legacy leading Cargo/Go `test` subcommand is merged safely; conflicting report
516
569
  flags such as `--json-report` are rejected.
517
570
  Changes during a gate fail input stability; later source/config changes make
@@ -560,10 +613,13 @@ Example strict configuration:
560
613
  }
561
614
  ```
562
615
 
563
- Generate an Ed25519 key outside musubix3, pass only its public PEM to
616
+ For normal CLI use, generate an Ed25519 key outside musubix3 and pass only its public PEM to
564
617
  `attestation oidc-audience`, request the GitHub Actions OIDC token with that exact
565
618
  audience, then pass the public PEM and JWT files to `attestation payload` and sign
566
- the emitted payload externally. musubix3 never reads or stores a private key.
619
+ the emitted payload externally. The `musubix3` CLI never accepts, reads, or stores
620
+ a private key. This repository's release-only automation separately generates an
621
+ ephemeral private key under the ignored `.test-work` directory, uses it for signing,
622
+ and deletes it before invoking CLI verification.
567
623
  The short-lived JWT is included in the signed attestation and is intentionally
568
624
  checked for current expiration, so verification must occur within its validity
569
625
  window. This establishes that GitHub's OIDC identity authorized the signing key
@@ -608,14 +664,18 @@ transcript/session fields into the Ed25519 signature.
608
664
  best-effort; symbol impact conservatively expands at **file** level. Nonliteral
609
665
  loading is a compatibility warning unless `codeGraph.mode` is `strict`, when
610
666
  it blocks graph gates; unresolved external packages remain warnings and
611
- unresolved local imports are errors. Bundler-specific resolution, reflection and other
612
- Rust, Python, Go, Java, C/C++, C#, PHP, R and Julia have conservative native
613
- adapters for local imports/modules/includes, declarations and direct calls.
614
- Other languages are reported as unsupported. Ignored
615
- build/cache/dependency directories and
667
+ unresolved local imports are errors. Bundler-specific resolution and
668
+ reflection remain out of scope. Rust, Python, Go, Java, Kotlin, C/C++,
669
+ Objective-C/Objective-C++, C#, F#, Visual Basic .NET, Ruby, PHP, Swift, Dart,
670
+ Scala, Elixir, Haskell, Lua, Zig, Solidity, R and Julia have conservative
671
+ native adapters for local imports/modules/includes, declarations and direct
672
+ calls. Other extensions are omitted from graph inputs. Ignored build/cache/dependency directories and
616
673
  symlinks are not indexed; custom `.gitignore` rules are not a scan filter.
617
- - Trace annotations support all languages listed above. Do not create JS/TS
618
- proxy files for another language.
674
+ - Remaining architectural work includes evidence-backed strict call-resolution
675
+ ratio policy and broader native test-runner adapter coverage. Neither is
676
+ enabled speculatively by this release.
677
+ - Trace annotation comment syntax is documented above. Do not create JS/TS proxy
678
+ files for another language.
619
679
  - Knowledge ranking is **TF-IDF/cosine, not GraphRAG** or semantic reasoning.
620
680
  Japanese uses character bigrams. Git co-change and author-directory counts
621
681
  cover at most 100 commits/30 files per commit; they indicate correlation and
@@ -641,8 +701,11 @@ npm run pack:smoke
641
701
  Workspaces: `packages/domain` (pure validators), `packages/analysis` (evidence,
642
702
  compiler and filesystem services), `packages/cli` (thin command/installation layer).
643
703
  One build emits `dist/packages/**`. Published contents explicitly include hidden
644
- skills, native manifests, built CLI/modules and assets. CI checks Node 20/24;
645
- tests cover unit behavior, CLI exits, installer preservation and packaging.
704
+ skills, native manifests, built CLI/modules and assets. Core CI runs on Node 22
705
+ across Linux, Windows, and macOS, with additional Node 20 and Node 24 compatibility
706
+ checks on Linux. Native adapter and formal-solver integrations run on Linux with
707
+ pinned toolchains. Tests cover unit behavior, CLI exits, installer preservation,
708
+ and packaging.
646
709
  `pack:smoke` installs the real tarball into an isolated `.test-work/` consumer,
647
710
  checks its executable, ESM exports and installer, then removes the fixture.
648
711
  Attestation APIs are available from both `musubix3/analysis` and the focused
@@ -77,10 +77,21 @@ export function mergeAdapterArgs(adapter, configuredArgs, invocationArgs) {
77
77
  ...(configured.passthrough.length ? ['-args', ...configured.passthrough] : []),
78
78
  ];
79
79
  }
80
+ if (adapter === 'dotnet' && configuredArgs[0] === 'test' && invocationArgs[0] === 'test') {
81
+ const separator = configuredArgs.indexOf('--');
82
+ const commandArgs = separator < 0 ? configuredArgs.slice(1) : configuredArgs.slice(1, separator);
83
+ const runSettings = separator < 0 ? [] : configuredArgs.slice(separator + 1);
84
+ return [
85
+ 'test',
86
+ ...commandArgs,
87
+ ...invocationArgs.slice(1),
88
+ ...(separator < 0 ? [] : ['--', ...runSettings]),
89
+ ];
90
+ }
80
91
  return [...configuredArgs, ...invocationArgs];
81
92
  }
82
93
  function reportPath(commandName, testId, adapter) {
83
- const suffix = adapter === 'junit' ? '' : '.json';
94
+ const suffix = adapter === 'junit' || adapter === 'dotnet' ? '' : '.json';
84
95
  return testId
85
96
  ? `.musubix/evidence/native/${commandName}/${testId}${suffix}`
86
97
  : `.musubix/evidence/native/${commandName}/aggregate${suffix}`;
@@ -118,6 +129,18 @@ export function adapterInvocation(adapter, commandName, testId, testPath) {
118
129
  if (adapter === 'cargo') {
119
130
  return { args: ['test', ...testId ? [identifier(testId)] : [], '--', '--format', 'pretty'], reportPath: path, source: 'stdout' };
120
131
  }
132
+ if (adapter === 'dotnet') {
133
+ return {
134
+ args: [
135
+ 'test',
136
+ '--logger', 'trx;LogFilePrefix=results',
137
+ '--results-directory', path,
138
+ ...testId ? ['--filter', `DisplayName~${testId}|Name~${testId}`] : [],
139
+ ],
140
+ reportPath: path,
141
+ source: 'directory',
142
+ };
143
+ }
121
144
  return {
122
145
  args: [
123
146
  '--scan-class-path',
@@ -156,7 +179,7 @@ export async function readAdapterOutput(invocation, absolutePath, stdout) {
156
179
  const path = `${directory}/${entry.name}`;
157
180
  if (entry.isDirectory())
158
181
  found.push(...await xmlFiles(path));
159
- else if (entry.isFile() && entry.name.endsWith('.xml'))
182
+ else if (entry.isFile() && (entry.name.endsWith('.xml') || entry.name.endsWith('.trx')))
160
183
  found.push(path);
161
184
  }
162
185
  return found;
@@ -176,7 +199,7 @@ function status(value) {
176
199
  const normalized = String(value).toLowerCase();
177
200
  if (['pass', 'passed', 'success', 'ok'].includes(normalized))
178
201
  return 'passed';
179
- if (['skip', 'skipped', 'pending', 'todo', 'ignored'].includes(normalized))
202
+ if (['skip', 'skipped', 'pending', 'todo', 'ignored', 'notexecuted'].includes(normalized))
180
203
  return 'skipped';
181
204
  if (['error', 'errored'].includes(normalized))
182
205
  return 'error';
@@ -191,6 +214,100 @@ function unique(tests) {
191
214
  }
192
215
  return { schemaVersion: 1, tests: [...byId.values()].sort((a, b) => a.id.localeCompare(b.id)) };
193
216
  }
217
+ function xmlAttribute(attributes, name) {
218
+ const match = new RegExp(`(?:^|\\s)${name}\\s*=\\s*("[^"]*"|'[^']*')`, 'i').exec(attributes);
219
+ if (!match?.[1])
220
+ return undefined;
221
+ return match[1].slice(1, -1)
222
+ .replaceAll('&quot;', '"')
223
+ .replaceAll('&apos;', "'")
224
+ .replaceAll('&lt;', '<')
225
+ .replaceAll('&gt;', '>')
226
+ .replaceAll('&amp;', '&');
227
+ }
228
+ function dotnetResults(text) {
229
+ const tests = [];
230
+ const stack = [];
231
+ let cursor = 0;
232
+ while (cursor < text.length) {
233
+ const start = text.indexOf('<', cursor);
234
+ if (start < 0)
235
+ break;
236
+ if (text.startsWith('<!--', start)) {
237
+ const end = text.indexOf('-->', start + 4);
238
+ if (end < 0)
239
+ throw new Error('Malformed dotnet TRX: unterminated XML comment.');
240
+ cursor = end + 3;
241
+ continue;
242
+ }
243
+ if (text.startsWith('<![CDATA[', start)) {
244
+ const end = text.indexOf(']]>', start + 9);
245
+ if (end < 0)
246
+ throw new Error('Malformed dotnet TRX: unterminated CDATA section.');
247
+ cursor = end + 3;
248
+ continue;
249
+ }
250
+ if (text.startsWith('<?', start)) {
251
+ const end = text.indexOf('?>', start + 2);
252
+ if (end < 0)
253
+ throw new Error('Malformed dotnet TRX: unterminated processing instruction.');
254
+ cursor = end + 2;
255
+ continue;
256
+ }
257
+ if (text.startsWith('<!', start))
258
+ throw new Error('Malformed dotnet TRX: unsupported declaration.');
259
+ let end = start + 1;
260
+ let quote = '';
261
+ for (; end < text.length; end++) {
262
+ const character = text[end];
263
+ if (quote) {
264
+ if (character === quote)
265
+ quote = '';
266
+ }
267
+ else if (character === '"' || character === "'") {
268
+ quote = character;
269
+ }
270
+ else if (character === '>') {
271
+ break;
272
+ }
273
+ }
274
+ if (end >= text.length)
275
+ throw new Error('Malformed dotnet TRX: unterminated XML element.');
276
+ const token = text.slice(start + 1, end).trim();
277
+ cursor = end + 1;
278
+ if (!token)
279
+ throw new Error('Malformed dotnet TRX: empty XML element.');
280
+ if (token.startsWith('/')) {
281
+ const name = token.slice(1).trim().split(/\s/, 1)[0]?.split(':').at(-1);
282
+ if (!name || stack.pop()?.toLowerCase() !== name.toLowerCase()) {
283
+ throw new Error('Malformed dotnet TRX: mismatched XML element.');
284
+ }
285
+ continue;
286
+ }
287
+ const selfClosing = token.endsWith('/');
288
+ const element = selfClosing ? token.slice(0, -1).trim() : token;
289
+ const qualifiedName = element.split(/\s/, 1)[0];
290
+ if (!qualifiedName)
291
+ throw new Error('Malformed dotnet TRX: missing XML element name.');
292
+ const name = qualifiedName?.split(':').at(-1);
293
+ if (!name)
294
+ throw new Error('Malformed dotnet TRX: missing XML element name.');
295
+ const attributes = element.slice(qualifiedName.length);
296
+ const hierarchy = [...stack, name].map((part) => part.toLowerCase());
297
+ if (name.toLowerCase() === 'unittestresult'
298
+ && hierarchy.at(-2) === 'results'
299
+ && hierarchy.includes('testrun')) {
300
+ const id = idOf(xmlAttribute(attributes, 'testName'));
301
+ if (id)
302
+ tests.push({ id, status: status(xmlAttribute(attributes, 'outcome')) });
303
+ }
304
+ if (!selfClosing)
305
+ stack.push(name);
306
+ }
307
+ if (stack.length)
308
+ throw new Error('Malformed dotnet TRX: unclosed XML element.');
309
+ return tests;
310
+ }
194
311
  export function normalizeAdapterReport(adapter, text, targetTestId) {
195
312
  const tests = [];
196
313
  if (adapter === 'vitest' || adapter === 'jest') {
@@ -233,13 +350,19 @@ export function normalizeAdapterReport(adapter, text, targetTestId) {
233
350
  tests.push({ id, status: status(match?.[2]) });
234
351
  }
235
352
  }
353
+ else if (adapter === 'dotnet') {
354
+ tests.push(...dotnetResults(text));
355
+ }
236
356
  else {
237
357
  for (const match of text.matchAll(/<testcase\b([^>]*)>([\s\S]*?)<\/testcase>|<testcase\b([^>]*)\/>/g)) {
238
358
  const attributes = match[1] ?? match[3] ?? '';
239
- const id = idOf(/\b(?:name|classname)="([^"]*)"/.exec(attributes)?.[1]);
359
+ const body = match[2] ?? '';
360
+ const identityText = /\bname="([^"]*)"/.exec(attributes)?.[1]
361
+ ?? /\bclassname="([^"]*)"/.exec(attributes)?.[1];
362
+ const displayName = /<system-out\b[^>]*>[\s\S]*?(?:^|\r?\n)\s*display-name:\s*([^\r\n<]+)/m.exec(body)?.[1];
363
+ const id = idOf(identityText) ?? idOf(displayName);
240
364
  if (!id)
241
365
  continue;
242
- const body = match[2] ?? '';
243
366
  tests.push({ id, status: /<(?:error)\b/.test(body) ? 'error' : /<failure\b/.test(body) ? 'failed' : /<skipped\b/.test(body) ? 'skipped' : 'passed' });
244
367
  }
245
368
  }
@@ -247,8 +370,12 @@ export function normalizeAdapterReport(adapter, text, targetTestId) {
247
370
  const selected = targetTestId
248
371
  ? { ...normalized, tests: normalized.tests.filter((test) => test.id === targetTestId) }
249
372
  : normalized;
250
- if (!selected.tests.length)
251
- throw new Error(`No annotated TEST-* identities were found in the ${adapter} report.`);
373
+ if (!selected.tests.length) {
374
+ const guidance = adapter === 'pytest'
375
+ ? ' Pytest node IDs must include the normalized TEST ID (for example test_TEST_APP_001), or configure a project-local musubix-json runner.'
376
+ : '';
377
+ throw new Error(`No annotated TEST-* identities were found in the ${adapter} report.${guidance}`);
378
+ }
252
379
  return selected;
253
380
  }
254
381
  //# sourceMappingURL=adapters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../../../packages/analysis/src/adapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../../../packages/analysis/src/adapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAYpC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB;IAC/E,YAAY,EAAE,WAAW;IACzB,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO;IACpF,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU;IACpE,gBAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,iBAAiB;IACvE,MAAM,EAAE,UAAU,EAAE,eAAe;IACnC,uBAAuB,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW;IAC1E,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ;IAC1F,MAAM;CACP,CAAC,CAAC;AAEH,SAAS,eAAe,CAAC,IAAc;IAMrC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,SAA6B,CAAC;IAClC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACtG,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBAClF,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,KAAK,CAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,IAAI,IAAI,KAAK,IAAI;oBAAE,SAAS,GAAG,KAAK,CAAC;YACvC,CAAC;iBAAM,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9C,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAoB,EACpB,cAAwB,EACxB,cAAwB;IAExB,IAAI,OAAO,KAAK,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACxF,MAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC/H,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;QAC3G,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC/H,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;QAC3G,OAAO;YACL,MAAM;YACN,GAAG,qBAAqB;YACxB,GAAG,qBAAqB;YACxB,GAAG,CAAC,qBAAqB,CAAC,MAAM,IAAI,qBAAqB,CAAC,MAAM;gBAC9D,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,qBAAqB,EAAE,GAAG,qBAAqB,CAAC;gBAC5D,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC1F,MAAM,UAAU,GAAG,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,cAAc,CAAC,CAAC,CAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,iGAAiG,CAAC,CAAC;QACrH,CAAC;QACD,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;YAC/E,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;YACxE,CAAC,CAAC,gBAAgB,CAAC;QACrB,MAAM,QAAQ,GAAG,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACnG,OAAO;YACL,MAAM;YACN,GAAG,UAAU,CAAC,KAAK;YACnB,OAAO;YACP,GAAG,QAAQ;YACX,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/E,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACzF,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACjG,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAC7E,OAAO;YACL,MAAM;YACN,GAAG,WAAW;YACd,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC;SACjD,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,UAAU,CAAC,WAAmB,EAAE,MAAe,EAAE,OAAqB;IAC7E,MAAM,MAAM,GAAG,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1E,OAAO,MAAM;QACX,CAAC,CAAC,4BAA4B,WAAW,IAAI,MAAM,GAAG,MAAM,EAAE;QAC9D,CAAC,CAAC,4BAA4B,WAAW,aAAa,MAAM,EAAE,CAAC;AACnE,CAAC;AAED,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAAoB,EACpB,WAAmB,EACnB,MAAe,EACf,QAAiB;IAEjB,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO;YACL,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,IAAI,EAAE,CAAC;YACjH,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,MAAM;SACf,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,gBAAgB,IAAI,EAAE,CAAC;YAC5H,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,MAAM;SACf,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO;YACL,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,eAAe,EAAE,sBAAsB,IAAI,EAAE,CAAC;YACjI,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,MAAM;SACf,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvF,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC/H,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnI,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO;YACL,IAAI,EAAE;gBACJ,MAAM;gBACN,UAAU,EAAE,2BAA2B;gBACvC,qBAAqB,EAAE,IAAI;gBAC3B,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,eAAe,MAAM,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;aACtE;YACD,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,WAAW;SACpB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE;YACJ,mBAAmB;YACnB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE;YAClE,iBAAiB,IAAI,EAAE;SACxB;QACD,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,WAAW;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAA6B,EAAE,YAAoB;IAC1F,IAAI,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/B,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW;YAAE,MAAM,EAAE,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;;YAC9E,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAA6B,EAAE,YAAoB,EAAE,MAAc;IACzG,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,MAAM,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACtC,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACxE,KAAK,UAAU,QAAQ,CAAC,SAAiB;QACvC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACrH,MAAM,IAAI,GAAG,GAAG,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;iBACxD,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5G,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,KAAK,GAAG,8DAA8D,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzF,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC;AAChE,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9E,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5G,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,MAAM,CAAC,KAAiC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAA8C,CAAC;IACnE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACjI,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAClG,CAAC;AAED,SAAS,YAAY,CAAC,UAAkB,EAAE,IAAY;IACpD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,IAAI,4BAA4B,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7F,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACzB,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC;SACzB,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC;SACzB,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;SACvB,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;SACvB,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,KAAK,GAA+B,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,KAAK,GAAG,CAAC;YAAE,MAAM;QACrB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,GAAG,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YAChF,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,GAAG,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAClF,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1C,IAAI,GAAG,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAC3F,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpG,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;QACpB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAE,CAAC;YAC7B,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,SAAS,KAAK,KAAK;oBAAE,KAAK,GAAG,EAAE,CAAC;YACtC,CAAC;iBAAM,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;gBAClD,KAAK,GAAG,SAAS,CAAC;YACpB,CAAC;iBAAM,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;gBAC7B,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAC3F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACxE,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAChE,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACvF,MAAM,IAAI,GAAG,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,gBAAgB;eACtC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;eAC9B,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;YACtD,IAAI,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAoB,EAAE,IAAY,EAAE,YAAqB;IAC9F,MAAM,KAAK,GAA+B,EAAE,CAAC;IAC7C,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;QAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,KAAK,MAAM,KAAK,IAAI,MAAwC,EAAE,CAAC;YAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,KAAK,MAAM,SAAS,IAAI,UAA4C,EAAE,CAAC;gBACrE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC7D,IAAI,EAAE;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;QAC1D,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAmC,EAAE,CAAC;YACrG,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;YAC1D,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS;YACzG,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,qDAAqD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/E,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,kEAAkE,CAAC,EAAE,CAAC;YACtG,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;mBACxD,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,uEAAuE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5G,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;YACnD,IAAI,CAAC,EAAE;gBAAE,SAAS;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxJ,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,YAAY;QAC3B,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE;QACvF,CAAC,CAAC,UAAU,CAAC;IACf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,OAAO,KAAK,QAAQ;YACnC,CAAC,CAAC,yIAAyI;YAC3I,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,oDAAoD,OAAO,WAAW,QAAQ,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -16,7 +16,7 @@ export interface CommandConfig {
16
16
  format: 'musubix-mutation-json';
17
17
  path: string;
18
18
  };
19
- adapter?: 'vitest' | 'jest' | 'pytest' | 'go-test' | 'cargo' | 'junit';
19
+ adapter?: 'vitest' | 'jest' | 'pytest' | 'go-test' | 'cargo' | 'junit' | 'dotnet';
20
20
  required: boolean;
21
21
  timeoutMs: number;
22
22
  }
@@ -70,6 +70,7 @@ function validateAdapterArgs(adapter, args, name) {
70
70
  'go-test': ['-json', '-run'],
71
71
  cargo: ['--format'],
72
72
  junit: ['--scan-class-path', '--include-tag', '--reports-dir', '--fail-if-no-tests'],
73
+ dotnet: ['--filter', '--logger', '--results-directory'],
73
74
  }[adapter];
74
75
  const conflict = args.find((arg) => owned.some((value) => arg === value || arg.startsWith(`${value}=`)));
75
76
  if (conflict) {
@@ -147,8 +148,8 @@ export function parseConfig(input) {
147
148
  throw new Error('Command executable must be nonempty.');
148
149
  if (c.required !== undefined && typeof c.required !== 'boolean')
149
150
  throw new Error('command.required must be boolean.');
150
- if (c.adapter !== undefined && !['vitest', 'jest', 'pytest', 'go-test', 'cargo', 'junit'].includes(String(c.adapter))) {
151
- throw new Error('command.adapter must be vitest, jest, pytest, go-test, cargo, or junit.');
151
+ if (c.adapter !== undefined && !['vitest', 'jest', 'pytest', 'go-test', 'cargo', 'junit', 'dotnet'].includes(String(c.adapter))) {
152
+ throw new Error('command.adapter must be vitest, jest, pytest, go-test, cargo, junit, or dotnet.');
152
153
  }
153
154
  const timeoutMs = optional(c.timeoutMs, 120_000);
154
155
  if (typeof timeoutMs !== 'number' || !Number.isInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > 3_600_000)
@@ -560,7 +561,7 @@ export function policyDiagnostics(config, baseline, changed = null) {
560
561
  }
561
562
  }
562
563
  if (changed?.includes('.musubix/policy-baseline.json')) {
563
- diagnostics.push(error('POLICY_APPROVAL_REQUIRED', 'The trusted policy baseline changed; independent approval is required before readiness can pass.'));
564
+ diagnostics.push(error('POLICY_APPROVAL_REQUIRED', 'The trusted policy baseline changed; commit the baseline in reviewable history and obtain approval from a reviewer other than the author before readiness can pass.', '.musubix/policy-baseline.json'));
564
565
  }
565
566
  return diagnostics;
566
567
  }