@dzhechkov/harness-core 0.4.3 → 0.4.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.
@@ -415,6 +415,14 @@ function parseStream(streamText) {
415
415
  ? rawSkills
416
416
  : null
417
417
  : null;
418
+ // Same treatment as `skills`, for the same reason: an ABSENT key is unreadable schema, and a
419
+ // partially-unparseable array must not be narrowed to the strings it happens to contain.
420
+ const rawCommands = obj.slash_commands;
421
+ const slashCommands = Array.isArray(rawCommands)
422
+ ? rawCommands.every((s) => typeof s === 'string')
423
+ ? rawCommands
424
+ : null
425
+ : null;
418
426
  const rawPlugins = obj.plugins;
419
427
  // An ABSENT or non-array `plugins` key is unreadable schema, not proof that nothing loaded —
420
428
  // with containers present that difference decides FAIL vs INCONCLUSIVE (QE6 #7).
@@ -435,6 +443,7 @@ function parseStream(streamText) {
435
443
  : [];
436
444
  found.push({
437
445
  skills,
446
+ slashCommands,
438
447
  plugins,
439
448
  pluginsReadable,
440
449
  // An empty or relative cwd testifies to nothing — `resolve("")` silently becomes the caller's
@@ -458,11 +467,13 @@ export function verifyRegistration(evidence, options = {}) {
458
467
  reason,
459
468
  expected: [],
460
469
  missing: [],
470
+ expectedCommands: [],
471
+ missingCommands: [],
461
472
  registeredCount: null,
462
473
  clientVersion: null,
463
474
  plugins: [],
464
475
  advisories: [],
465
- controls: { cwdMatched: null, skillsListPresent: false },
476
+ controls: { cwdMatched: null, skillsListPresent: false, commandsListPresent: false },
466
477
  layout: [],
467
478
  });
468
479
  if (!evidence || typeof evidence !== 'object')
@@ -488,16 +499,22 @@ export function verifyRegistration(evidence, options = {}) {
488
499
  }
489
500
  });
490
501
  const expected = evidence.expected ?? scan.registrable;
502
+ // Unlike `expected`, this has NO fallback to a discovered set: there is nothing on disk that
503
+ // proves which command names a session should surface, and a guessed expectation is how a gate
504
+ // starts passing for the wrong reason. Not asked ⇒ not checked, and the report says so.
505
+ const expectedCommands = evidence.expectedCommands ?? [];
491
506
  const layout = scan.findings;
492
507
  const fail = (verdict, reason, extra = {}) => ({
493
508
  expected,
509
+ expectedCommands,
510
+ missingCommands: [],
494
511
  layout,
495
512
  advisories: scan.advisories,
496
513
  plugins: [],
497
514
  clientVersion: null,
498
515
  missing: [],
499
516
  registeredCount: null,
500
- controls: { cwdMatched: null, skillsListPresent: false },
517
+ controls: { cwdMatched: null, skillsListPresent: false, commandsListPresent: false },
501
518
  ...extra,
502
519
  verdict,
503
520
  reason,
@@ -553,20 +570,30 @@ export function verifyRegistration(evidence, options = {}) {
553
570
  return fail('inconclusive', `session read ${facts.cwd}, not ${projectDir} — its listing does not describe this project`, {
554
571
  ...withFacts,
555
572
  registeredCount: facts.skills?.length ?? null,
556
- controls: { cwdMatched: false, skillsListPresent: facts.skills !== null },
573
+ controls: { cwdMatched: false, skillsListPresent: facts.skills !== null, commandsListPresent: facts.slashCommands !== null },
557
574
  });
558
575
  }
559
576
  // 5. The listing must be readable in full.
560
577
  if (facts.skills === null) {
561
578
  return fail('inconclusive', 'the init listing has no readable `skills` array (absent or not all strings) — cannot read it', {
562
579
  ...withFacts,
563
- controls: { cwdMatched: true, skillsListPresent: false },
580
+ controls: { cwdMatched: true, skillsListPresent: false, commandsListPresent: facts.slashCommands !== null },
564
581
  });
565
582
  }
566
- const controls = { cwdMatched: true, skillsListPresent: true };
583
+ // 5b. …and so must the COMMAND listing, whenever commands were expected. An absent
584
+ // `slash_commands` key is schema drift, exactly like an absent `skills` key: treating it as
585
+ // `[]` would report "your five commands did not register" on a Claude Code build that simply
586
+ // stopped emitting the key, and treating it as "fine" would pass a plugin whose commands
587
+ // really are missing. Neither is observable ⇒ inconclusive.
588
+ if (expectedCommands.length > 0 && facts.slashCommands === null) {
589
+ return fail('inconclusive', 'the init listing has no readable `slash_commands` array (absent or not all strings) — command registration cannot be observed', { ...withFacts, controls: { cwdMatched: true, skillsListPresent: true, commandsListPresent: false } });
590
+ }
591
+ const controls = { cwdMatched: true, skillsListPresent: true, commandsListPresent: facts.slashCommands !== null };
567
592
  const registered = new Set(facts.skills);
568
593
  const missing = expected.filter((name) => !registered.has(name));
569
- const common = { ...withFacts, registeredCount: facts.skills.length, controls };
594
+ const registeredCommands = new Set(facts.slashCommands ?? []);
595
+ const missingCommands = expectedCommands.filter((name) => !registeredCommands.has(name));
596
+ const common = { ...withFacts, expectedCommands, missingCommands, registeredCount: facts.skills.length, controls };
570
597
  // 6. Load-blocking layout problems fail on their own — one healthy skill must not mask them.
571
598
  if (layout.length > 0) {
572
599
  return {
@@ -660,7 +687,13 @@ export function verifyRegistration(evidence, options = {}) {
660
687
  detail: `${v} — its individual skills are NOT verified: a plugin skill's command name depends on frontmatter this gate does not model`,
661
688
  }));
662
689
  const allAdvisories = [...scan.advisories, ...containerAdvisories];
663
- if (missing.length > 0) {
690
+ if (missing.length > 0 || missingCommands.length > 0) {
691
+ const parts = [];
692
+ if (missing.length > 0)
693
+ parts.push(`${missing.length} of ${expected.length} expected skill(s) did NOT register`);
694
+ if (missingCommands.length > 0) {
695
+ parts.push(`${missingCommands.length} of ${expectedCommands.length} expected command(s) did NOT register (${missingCommands.join(', ')})`);
696
+ }
664
697
  return {
665
698
  expected,
666
699
  layout,
@@ -668,7 +701,7 @@ export function verifyRegistration(evidence, options = {}) {
668
701
  ...common,
669
702
  missing,
670
703
  verdict: 'fail',
671
- reason: `${missing.length} of ${expected.length} expected skill(s) did NOT register`,
704
+ reason: parts.join('; '),
672
705
  };
673
706
  }
674
707
  return {
@@ -678,9 +711,11 @@ export function verifyRegistration(evidence, options = {}) {
678
711
  ...common,
679
712
  missing: [],
680
713
  verdict: 'pass',
681
- reason: expected.length === 0
714
+ reason: expected.length === 0 && expectedCommands.length === 0
682
715
  ? 'nothing was expected to register; the session listing was read successfully'
683
- : `all ${expected.length} expected skill(s) are registered`,
716
+ : `all ${expected.length} expected skill(s)` +
717
+ (expectedCommands.length > 0 ? ` and all ${expectedCommands.length} expected command(s)` : '') +
718
+ ' are registered',
684
719
  };
685
720
  }
686
721
  /** Exit code contract: pass=0, fail=1, inconclusive=2 (distinct so CI can treat it separately). */
@@ -713,6 +748,12 @@ export function renderRegistrationReport(result, scan) {
713
748
  for (const name of result.missing)
714
749
  out.push(` - ${name}`);
715
750
  }
751
+ if (result.expectedCommands.length) {
752
+ out.push(` commands: ${result.expectedCommands.length} expected` +
753
+ (result.controls.commandsListPresent ? '' : ' · slash_commands listing UNREADABLE'));
754
+ for (const name of result.missingCommands)
755
+ out.push(` - MISSING ${name}`);
756
+ }
716
757
  if (result.layout.length) {
717
758
  out.push(' layout problems (these can never register):');
718
759
  for (const f of result.layout)
@@ -728,6 +769,35 @@ export function renderRegistrationReport(result, scan) {
728
769
  }
729
770
  return out.join('\n');
730
771
  }
772
+ /**
773
+ * The names a plugin's OWN manifest says its commands and skills should register under, so a
774
+ * `--plugin-dir` gate run can default its expectation to the manifest instead of to a hand-typed
775
+ * list that drifts from it.
776
+ *
777
+ * The naming rules are MEASURED, not assumed (Claude Code 2.1.233, fixture probe 2026-08-17):
778
+ * · a command registers as `<plugin>:<file basename without .md>` — its frontmatter `name:` does
779
+ * NOT rename it (a fixture declaring `name: renamed-second` registered as `probeplug:second`);
780
+ * · a skill registers as `<plugin>:<directory basename>` — likewise not its frontmatter name.
781
+ *
782
+ * Returns `null` when the manifest is missing/unreadable/nameless: an unreadable manifest must not
783
+ * silently become an EMPTY expectation, which is the shape that passes without checking anything.
784
+ */
785
+ export function declaredPluginSurface(pluginDir) {
786
+ let obj;
787
+ try {
788
+ obj = JSON.parse(readFileSync(join(pluginDir, '.claude-plugin', 'plugin.json'), 'utf8'));
789
+ }
790
+ catch {
791
+ return null;
792
+ }
793
+ const name = typeof obj.name === 'string' && obj.name ? obj.name : null;
794
+ if (name === null)
795
+ return null;
796
+ const list = (value) => Array.isArray(value) ? value.filter((x) => typeof x === 'string') : [];
797
+ const skills = list(obj.skills).map((rel) => `${name}:${basename(rel.replace(/\/+$/, ''))}`);
798
+ const commands = list(obj.commands).map((rel) => `${name}:${basename(rel).replace(/\.md$/i, '')}`);
799
+ return { name, skills, commands };
800
+ }
731
801
  // ── The publish-time guard fact ─────────────────────────────────────
732
802
  /**
733
803
  * Scan a PACKAGE directory for skill dirs that could never register.
@@ -1 +1 @@
1
- {"version":3,"file":"skills-verify.js","sourceRoot":"","sources":["../src/skills-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnG,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2DhE,gGAAgG;AAChG,mGAAmG;AACnG,6CAA6C;AAC7C,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,SAAS,iBAAiB,CAAC,GAAW,EAAE,KAAa,EAAE,GAAa,EAAE,MAAgB;IACpF,IAAI,KAAK,GAAG,gBAAgB;QAAE,OAAO;IACrC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sFAAsF;QACtF,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7F,OAAO;IACT,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACxF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC;YACH,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9F,SAAS;QACX,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,IAAI,KAAK,UAAU,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACvD,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YACxC,CAAC,CAAC,GAAG,CAAC,MAAM;iBACP,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;iBACjD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;iBAC/C,MAAM,CAAC,OAAO,CAAC;YACpB,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,uDAAuD;IAC9F,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,KAAa,EAAW,EAAE;QACjD,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5B,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,cAAc;gBAAE,SAAS;YAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3B,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC;gBACH,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,2FAA2F;gBAC3F,IAAI,IAAI,KAAK,UAAU;oBAAE,OAAO,IAAI,CAAC;gBACrC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC;oBAAE,OAAO,IAAI,CAAC;YACzC,CAAC;iBAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,+DAA+D;IAC/E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClE,gGAAgG;IAChG,2EAA2E;IAC3E,IAAI,QAAQ,GAAwC,IAAI,CAAC;IACzD,IAAI,CAAC;QACH,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,+FAA+F;QAC/F,oFAAoF;QACpF,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;QACnD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO;gBACL,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;gBACxH,SAAS,EAAE,eAAe,UAAU,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAClG,CAAC;QACJ,CAAC;QACD,4FAA4F;QAC5F,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;YAChC,6FAA6F;YAC7F,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClD,OAAO;oBACL,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;oBACxH,SAAS,EAAE,GAAG,SAAS,wBAAwB;iBAChD,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC9C,OAAO;oBACL,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;oBACxH,SAAS,EAAE,GAAG,SAAS,qBAAqB;iBAC7C,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,WAAW,EAAE,CAAC;YACrB,MAAM,KAAK,GAAI,WAAqC,CAAC,IAAI,CAAC;YAC1D,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,OAAO;oBACL,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;oBACxH,SAAS,EAAE,eAAe,SAAS,KAAK,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;iBACnH,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,mBAAmB;IAC3J,CAAC;IACD,IAAI,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACzD,OAAO;YACL,UAAU;YACV,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC;YAC/B,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,GAAG,UAAU,wBAAwB;SACjD,CAAC;IACJ,CAAC;IAED,mGAAmG;IACnG,IAAI,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACxC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,UAAU,qBAAqB,EAAE,CAAC;QACrL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,UAAU;YACV,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC;YAC/B,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,eAAe,UAAU,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SAClG,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAyB,EAAE,CAAC;IAC5C,MAAM,UAAU,GAMV,EAAE,CAAC;IACT,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2FAA2F;QAC3F,OAAO;YACL,UAAU;YACV,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC;YAC/B,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,eAAe,UAAU,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SAClG,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,oCAAoC;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC;YACH,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0FAA0F;YAC1F,UAAU,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjG,SAAS;QACX,CAAC;QACD,gGAAgG;QAChG,yFAAyF;QACzF,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC;gBACZ,GAAG,EAAE,GAAG;gBACR,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,gGAAgG;aACzG,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG,EAAE,GAAG;oBACR,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,gGAAgG;iBACzG,CAAC,CAAC;YACL,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACpC,gGAAgG;QAChG,qGAAqG;QACrG,2FAA2F;QAC3F,mFAAmF;QACnF,iGAAiG;QACjG,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEzD,IAAI,SAAS,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,SAAS,IAAI,iBAAiB,EAAE,CAAC;YAC1C,+FAA+F;YAC/F,8FAA8F;YAC9F,uBAAuB;QACzB,CAAC;aAAM,CAAC;YACN,2FAA2F;YAC3F,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACxC,CAAC,iBAAiB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;gBAC5D,GAAG,EAAE,IAAI;gBACT,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,iBAAiB;oBACvB,CAAC,CAAC,GAAG,IAAI,gIAAgI;oBACzI,CAAC,CAAC,QAAQ;wBACR,CAAC,CAAC,kBAAkB,IAAI,4CAA4C;wBACpE,CAAC,CAAC,GAAG,IAAI,qGAAqG;aACnH,CAAC,CAAC;QACL,CAAC;QAED,uFAAuF;QACvF,wFAAwF;QACxF,8FAA8F;QAC9F,6EAA6E;QAC7E,IAAI,iBAAiB,EAAE,CAAC;YACtB,6FAA6F;YAC7F,wFAAwF;YACxF,mEAAmE;YACnE,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG;gBACjB,GAAG,IAAI,GAAG,CAAC;oBACT,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC5C,GAAG,QAAQ,CAAC,QAAQ;oBACpB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,+CAA+C;iBAC/F,CAAC;aACH,CAAC;YACF,UAAU,CAAC,IAAI,CAAC;gBACd,GAAG,EAAE,IAAI;gBACT,IAAI,EAAE,GAAG;gBACT,YAAY,EAAE,QAAQ,CAAC,IAAI;gBAC3B,UAAU;gBACV,QAAQ,EAAE,SAAS;aACpB,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC;gBACd,GAAG,EAAE,IAAI;gBACT,IAAI,EAAE,sBAAsB;gBAC5B,MAAM,EAAE,GAAG,IAAI,uNAAuN;aACvO,CAAC,CAAC;QACL,CAAC;QAED,kGAAkG;QAClG,EAAE;QACF,6FAA6F;QAC7F,+FAA+F;QAC/F,8FAA8F;QAC9F,uFAAuF;QACvF,IAAI,SAAS,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC9C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,UAAU,CAAC,IAAI,CAAC;oBACd,GAAG,EAAE,IAAI;oBACT,IAAI,EAAE,iBAAiB;oBACvB,MAAM,EACJ,GAAG,IAAI,aAAa,MAAM,CAAC,MAAM,+DAA+D;wBAChG,qFAAqF;iBACxF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC9C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,EAAE,IAAI;oBACT,IAAI,EAAE,iBAAiB;oBACvB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,8GAA8G;iBAC3J,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,UAAU;QACV,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC;QAC/B,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE;QAC/B,QAAQ;QACR,UAAU;QACV,UAAU;QACV,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnE,CAAC;AACJ,CAAC;AAwBD;;;GAGG;AACH;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,OAAO,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAClD,CAAC;AAID;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;AACxC,CAAC;AASD,SAAS,WAAW,CAAC,UAAkB;IACrC,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,SAAS;QACvC,IAAI,GAA4B,CAAC;QACjC,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,oFAAoF;YACpF,mFAAmF;YACnF,SAAS,IAAI,CAAC,CAAC;YACf,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM;YAAE,SAAS;QAE9D,2FAA2F;QAC3F,2FAA2F;QAC3F,mGAAmG;QACnG,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YACrC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;gBAC7C,CAAC,CAAE,SAAsB;gBACzB,CAAC,CAAC,IAAI;YACR,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC;QAC/B,6FAA6F;QAC7F,iFAAiF;QACjF,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,OAAO,GAAiB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YACrD,CAAC,CAAC,UAAU;iBACP,MAAM,CAAC,CAAC,CAAC,EAAgC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;iBACzE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;gBAC/D,4EAA4E;gBAC5E,OAAO;oBACL,IAAI;oBACJ,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChE,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvD,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9D,CAAC;YACJ,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC;QAEP,KAAK,CAAC,IAAI,CAAC;YACT,MAAM;YACN,OAAO;YACP,eAAe;YACf,8FAA8F;YAC9F,yFAAyF;YACzF,GAAG,EAAE,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;YAC1F,aAAa,EAAE,OAAO,GAAG,CAAC,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI;SAC5F,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,CAAC;AAC5D,CAAC;AAoDD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAA8B,EAAE,UAA+B,EAAE;IAClG,2FAA2F;IAC3F,MAAM,GAAG,GAAG,CAAC,MAAc,EAAsB,EAAE,CAAC,CAAC;QACnD,OAAO,EAAE,cAAc;QACvB,MAAM;QACN,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE;QACxD,MAAM,EAAE,EAAE;KACX,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAClF,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACzG,OAAO,GAAG,CAAC,+EAA+E,CAAC,CAAC;IAC9F,CAAC;IACD,kGAAkG;IAClG,MAAM,EAAE,GAAG,QAAQ,CAAC,IAA2B,CAAC;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QACpI,OAAO,GAAG,CAAC,sFAAsF,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;IACzD,iGAAiG;IACjG,+EAA+E;IAC/E,MAAM,WAAW,GACf,OAAO,CAAC,WAAW;QACnB,CAAC,CAAC,CAAS,EAAE,EAAE;YACb,IAAI,CAAC;gBACH,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE7B,MAAM,IAAI,GAAG,CACX,OAA4B,EAC5B,MAAc,EACd,QAAqC,EAAE,EACnB,EAAE,CAAC,CAAC;QACxB,QAAQ;QACR,MAAM;QACN,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,EAAE;QACX,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,IAAI;QACrB,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE;QACxD,GAAG,KAAK;QACR,OAAO;QACP,MAAM;KACP,CAAC,CAAC;IAEH,mEAAmE;IACnE,IAAI,UAAmB,CAAC;IACxB,IAAI,CAAC;QACH,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,WAAW,CAAC,UAAU,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,GAAG,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC,cAAc,EAAE,6BAA6B,IAAI,CAAC,UAAU,SAAS,UAAU,kCAAkC,CAAC,CAAC;IACjI,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,cAAc,EAAE,uBAAuB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAEvG,6FAA6F;IAC7F,6FAA6F;IAC7F,oDAAoD;IACpD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,sEAAsE,EAAE;YAC1G,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;IACL,CAAC;IAED,4CAA4C;IAC5C,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,cAAc,EAAE,iBAAiB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAE3E,+DAA+D;IAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CACT,cAAc,EACd,GAAG,MAAM,CAAC,oBAAoB,gGAAgG,CAC/H,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CACT,cAAc,EACd,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACxB,CAAC,CAAC,qEAAqE;YACvE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,+EAA+E,CAC3G,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;IAChC,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;IAEjF,+DAA+D;IAC/D,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,cAAc,EAAE,0FAA0F,EAAE,SAAS,CAAC,CAAC;IACrI,CAAC;IACD,IAAI,UAAmB,CAAC;IACxB,IAAI,CAAC;QACH,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CACT,cAAc,EACd,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EACjI,SAAS,CACV,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC,cAAc,EAAE,gBAAgB,KAAK,CAAC,GAAG,SAAS,UAAU,+CAA+C,EAAE;YACvH,GAAG,SAAS;YACZ,eAAe,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI;YAC7C,QAAQ,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,cAAc,EAAE,8FAA8F,EAAE;YAC1H,GAAG,SAAS;YACZ,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE;SACzD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAyB,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACrF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,EAAE,GAAG,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;IAEhF,6FAA6F;IAC7F,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,QAAQ;YACR,MAAM;YACN,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,MAAM;YACT,OAAO;YACP,OAAO,EAAE,MAAM;YACf,MAAM,EACJ,QAAQ,CAAC,MAAM,KAAK,CAAC;gBACnB,CAAC,CAAC,yBAAyB,MAAM,CAAC,MAAM,uDAAuD;gBAC/F,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,oDAAoD,QAAQ,CAAC,MAAM,qBAAqB;SAC/G,CAAC;IACJ,CAAC;IAED,6FAA6F;IAC7F,EAAE;IACF,iGAAiG;IACjG,6FAA6F;IAC7F,iGAAiG;IACjG,mGAAmG;IACnG,kFAAkF;IAClF,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC,cAAc,EAAE,sFAAsF,EAAE;YAClH,GAAG,MAAM;YACT,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACtC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzC,IAAI,CAAC;oBACH,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;wBAAE,OAAO,IAAI,CAAC,CAAC,4BAA4B;gBAC5F,CAAC;gBAAC,MAAM,CAAC;oBACP,gDAAgD;gBAClD,CAAC;YACH,CAAC;YACD,6FAA6F;YAC7F,sFAAsF;YACtF,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;gBACnB,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,YAAY,aAAa;oBAAE,OAAO,IAAI,CAAC;gBAC7D,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAAE,OAAO,IAAI,CAAC;YACzF,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,iBAAiB,CAAC,IAAI,CACpB,GAAG,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,uBAAuB;gBAC/F,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,yCAAyC,CAClE,CAAC;YACF,SAAS;QACX,CAAC;QACD,uEAAuE;QACvE,EAAE;QACF,wFAAwF;QACxF,kGAAkG;QAClG,kGAAkG;QAClG,4FAA4F;QAC5F,2FAA2F;QAC3F,+DAA+D;QAC/D,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,QAAQ;YACR,MAAM;YACN,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,MAAM;YACT,OAAO;YACP,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,kCAAkC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACpG,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,cAAc,EAAE,yFAAyF,EAAE;YACrH,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IACD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACjH,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CACT,cAAc,EACd,GAAG,iBAAiB,CAAC,MAAM,sDAAsD,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;YACjH,iGAAiG,EACnG,EAAE,GAAG,MAAM,EAAE,CACd,CAAC;IACJ,CAAC;IAED,MAAM,mBAAmB,GAAyB,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/E,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzB,IAAI,EAAE,sBAA+B;QACrC,MAAM,EAAE,GAAG,CAAC,0HAA0H;KACvI,CAAC,CAAC,CAAC;IACJ,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,mBAAmB,CAAC,CAAC;IAEnE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,QAAQ;YACR,MAAM;YACN,UAAU,EAAE,aAAa;YACzB,GAAG,MAAM;YACT,OAAO;YACP,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,OAAO,QAAQ,CAAC,MAAM,qCAAqC;SACrF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;QACR,MAAM;QACN,UAAU,EAAE,aAAa;QACzB,GAAG,MAAM;QACT,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,MAAM;QACf,MAAM,EACJ,QAAQ,CAAC,MAAM,KAAK,CAAC;YACnB,CAAC,CAAC,6EAA6E;YAC/E,CAAC,CAAC,OAAO,QAAQ,CAAC,MAAM,mCAAmC;KAChE,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,oBAAoB,CAAC,OAA4B,EAAE,MAAM,GAAG,KAAK;IAC/E,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC;IACjC,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,aAAa,GAAwC;IACzD,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,cAAc;CAC7B,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,MAA0B,EAAE,IAAiB;IACpF,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,GAAG,CAAC,IAAI,CAAC,qBAAqB,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAElF,IAAI,IAAI,EAAE,CAAC;QACT,GAAG,CAAC,IAAI,CACN,aAAa,IAAI,CAAC,WAAW,CAAC,MAAM,mCAAmC,IAAI,CAAC,UAAU,EAAE;YACtF,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CACpC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QACpC,GAAG,CAAC,IAAI,CACN,cAAc,MAAM,CAAC,eAAe,sBAAsB;YACxD,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAChF,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU;YAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,uEAAuE;AAEvE;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,cAAc;YAAE,SAAS;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;QACvD,CAAC;IACH,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IAC5B,OAAO,IAAI;SACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,YAAY,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,iBAAiB;QACvD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,iBAAiB,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,yDAAyD;IACrF,CAAC,CAAC;SACD,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,+EAA+E;AAC/E,EAAE;AACF,iGAAiG;AACjG,qGAAqG;AACrG,sGAAsG;AACtG,0FAA0F;AAC1F,EAAE;AACF,oGAAoG;AACpG,kGAAkG;AAClG,kEAAkE;AAElE,gGAAgG;AAChG,MAAM,UAAU,uBAAuB,CAAC,QAA2B,EAAE,MAAM,GAAG,CAAC;IAC7E,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO;QACL,qEAAqE;QACrE,yDAAyD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC5E,mFAAmF;QACnF,iEAAiE;KAClE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAYD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAe,EAAE,QAA2B;IAC/E,MAAM,IAAI,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC;IACzH,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IAErC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,6CAA6C,EAAE,CAAC;IAC5G,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,SAAS;YAClB,IAAI;YACJ,OAAO;YACP,KAAK;YACL,IAAI,EAAE,2FAA2F;SAClG,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACjE,IAAI;QACJ,OAAO;QACP,KAAK;QACL,IAAI,EACF,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YAC7B,CAAC,CAAC,sEAAsE;YACxE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,2CAA2C;KACnF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAqB;IACtD,MAAM,GAAG,GAAG,CAAC,8DAA8D,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpG,IAAI,CAAC,CAAC,KAAK;QAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAChE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"skills-verify.js","sourceRoot":"","sources":["../src/skills-verify.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dzhechkov/harness-core",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Shared harness logic - skill loading, additive apply, and the init/sync/verify/doctor operations.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -25,21 +25,28 @@
25
25
  ".dz-manifest.json",
26
26
  "sbom.json"
27
27
  ],
28
+ "scripts": {
29
+ "build": "tsc -p tsconfig.json",
30
+ "test": "vitest run",
31
+ "test:watch": "vitest",
32
+ "typecheck": "tsc -p tsconfig.json --noEmit",
33
+ "lint": "tsc -p tsconfig.json --noEmit"
34
+ },
28
35
  "dependencies": {
36
+ "@dzhechkov/adapter-agents-md": "workspace:*",
29
37
  "@dzhechkov/adapter-claude": "^0.2.0",
30
38
  "@dzhechkov/adapter-codex": "^0.2.0",
39
+ "@dzhechkov/adapter-copilot": "workspace:*",
40
+ "@dzhechkov/adapter-cursor": "workspace:*",
41
+ "@dzhechkov/adapter-gemini": "workspace:*",
31
42
  "@dzhechkov/adapter-hermes": "^0.2.0",
32
43
  "@dzhechkov/adapter-openclaude": "^0.1.0",
33
44
  "@dzhechkov/adapter-opencode": "^0.2.0",
45
+ "@dzhechkov/adapter-windsurf": "workspace:*",
46
+ "@dzhechkov/core": "workspace:*",
47
+ "@dzhechkov/memory": "workspace:*",
34
48
  "proper-lockfile": "^4.1.2",
35
- "yaml": "^2.0.0",
36
- "@dzhechkov/adapter-cursor": "0.1.1",
37
- "@dzhechkov/adapter-copilot": "0.1.1",
38
- "@dzhechkov/adapter-agents-md": "0.1.1",
39
- "@dzhechkov/adapter-gemini": "0.1.1",
40
- "@dzhechkov/adapter-windsurf": "0.1.1",
41
- "@dzhechkov/core": "0.2.14",
42
- "@dzhechkov/memory": "0.2.9"
49
+ "yaml": "^2.0.0"
43
50
  },
44
51
  "peerDependenciesMeta": {
45
52
  "@ruvector/rvf": {
@@ -64,12 +71,5 @@
64
71
  "url": "https://github.com/djd1m/dz-harness-hub.git",
65
72
  "directory": "packages/@dzhechkov/harness-core"
66
73
  },
67
- "homepage": "https://github.com/djd1m/dz-harness-hub/tree/main/packages/@dzhechkov/harness-core#readme",
68
- "scripts": {
69
- "build": "tsc -p tsconfig.json",
70
- "test": "vitest run",
71
- "test:watch": "vitest",
72
- "typecheck": "tsc -p tsconfig.json --noEmit",
73
- "lint": "tsc -p tsconfig.json --noEmit"
74
- }
75
- }
74
+ "homepage": "https://github.com/djd1m/dz-harness-hub/tree/main/packages/@dzhechkov/harness-core#readme"
75
+ }
package/sbom.json CHANGED
@@ -25,7 +25,7 @@
25
25
  "hashes": [
26
26
  {
27
27
  "alg": "SHA-256",
28
- "content": "d3b77852a0bc48aa5d7c34bbd2baa2bbcf1bc73ea86e23b57a955c5ddf61cd03"
28
+ "content": "50430bbe1435108f4b4d18c5badd24a3c33fd53c7bfbb8723abeba1ecb34fab4"
29
29
  }
30
30
  ]
31
31
  },
@@ -3405,7 +3405,7 @@
3405
3405
  "hashes": [
3406
3406
  {
3407
3407
  "alg": "SHA-256",
3408
- "content": "4e0045cf445e1f6a2e173912acc2ce6b76730dbc0502219d09324644eba71d91"
3408
+ "content": "bbde9c1b1f952ec9dd898df128aa96f8932e3fbe6324ae5023002cac8633a8eb"
3409
3409
  }
3410
3410
  ]
3411
3411
  },
@@ -32,6 +32,7 @@ export const LOOP_BLOB_NAMES = ["checkpoints","training-pairs","model-resolver",
32
32
  * tracked dz-backlog item, deliberately NOT claimed here. */
33
33
  export const BLOB_COVERAGE_MANIFEST: { coveredWorkflows: string[] } = {
34
34
  "coveredWorkflows": [
35
+ ".claude/workflows/cfr-pipeline.js",
35
36
  ".claude/workflows/feature-adr.js",
36
37
  ".claude/workflows/health-advisor.js",
37
38
  "packages/@dzhechkov/skills-feature-adr/templates/.claude/workflows/feature-adr.js"
package/src/loop-lint.ts CHANGED
@@ -41,7 +41,7 @@ export interface LintRun {
41
41
  verdict: LintVerdict;
42
42
  mode: LintMode;
43
43
  findings: LintFinding[];
44
- /** Per-rule verdict map (17 rules — every rule reports, none silently skipped). */
44
+ /** Per-rule verdict map (18 rules — every rule reports, none silently skipped). */
45
45
  rules: Record<string, LintSeverity>;
46
46
  }
47
47
 
@@ -62,6 +62,7 @@ export const LINT_RULES = [
62
62
  'pause-wired',
63
63
  'dispatch-by-deliverable',
64
64
  'no-agent-outside-runstep',
65
+ 'tool-perimeter-declared',
65
66
  'size-budget',
66
67
  ] as const;
67
68
  export type LintRuleId = (typeof LINT_RULES)[number];
@@ -563,6 +564,58 @@ function ruleNoAgentOutsideRunstep(ctx: Ctx): LintFinding[] {
563
564
  return out;
564
565
  }
565
566
 
567
+ /** The `<server>:<capability>` grammar a declared perimeter entry must match (ADR-002 §1). Two or
568
+ * more colon-separated lowercase segments — a bare `gitlab` names a server with no capability and
569
+ * is exactly the shape that reads as "everything on that server". */
570
+ export const TOOL_PERIMETER_ENTRY_RE = /^[a-z][a-z0-9-]*(:[a-z][a-z0-9-]*)+$/;
571
+
572
+ /**
573
+ * `tool-perimeter-declared` (cfr-pipeline ADR-002) — every DISPATCHING step (`agent`|`gate`)
574
+ * declares its MCP tool perimeter, well-formed and without duplicates, and the rendered contract
575
+ * line agrees with the declared array.
576
+ *
577
+ * GENERIC by construction: it knows nothing about GitLab, Jira, Wiki or JSM — only that a
578
+ * dispatching step must SAY what it may touch. **Absence FLAGS: silence is never permission.**
579
+ * `tools: []` is the correct, meaningful declaration for a step that touches no external tool.
580
+ *
581
+ * SEVERITY IS STAGED (checkpoint amendment 2, overriding ADR-002 §Rationale-5's FAIL-everywhere
582
+ * stance): WARN by default, FAIL only under `--require-plan`. That keeps the published 0.4.x lint
583
+ * contract of harness-core/harness-cli non-breaking while still making the rule a hard gate
584
+ * exactly where cfr-pipeline runs it. Plan-less scripts report `inconclusive` (`no-plan-binding`)
585
+ * like every other plan-anchored rule — never a silent pass.
586
+ */
587
+ function ruleToolPerimeterDeclared(ctx: Ctx): LintFinding[] {
588
+ if (ctx.projection === null) return noPlan('tool-perimeter-declared');
589
+ const sev: LintSeverity = ctx.mode === 'require-plan' ? 'fail' : 'warn';
590
+ const out: LintFinding[] = [];
591
+ for (const f of ctx.projection.facts) {
592
+ if (f.kind !== 'agent' && f.kind !== 'gate') continue;
593
+ if (f.tools === null) {
594
+ out.push({ rule: 'tool-perimeter-declared', severity: sev, message: `dispatching step ${f.id} declares no \`tools\` perimeter — absence FLAGS: silence is never permission (declare \`tools: []\` if the step touches no external tool)`, anchor: f.id });
595
+ continue;
596
+ }
597
+ const seen = new Set<string>();
598
+ for (const entry of f.tools) {
599
+ if (!TOOL_PERIMETER_ENTRY_RE.test(entry)) {
600
+ out.push({ rule: 'tool-perimeter-declared', severity: sev, message: `step ${f.id}: tool perimeter entry "${entry}" does not match <server>:<capability> (${String(TOOL_PERIMETER_ENTRY_RE)}) — a malformed entry cannot be matched against a real server inventory`, anchor: f.id });
601
+ }
602
+ if (seen.has(entry)) {
603
+ out.push({ rule: 'tool-perimeter-declared', severity: sev, message: `step ${f.id}: tool perimeter entry "${entry}" is declared twice — a duplicate hides a copy/paste of the wrong stage's perimeter`, anchor: f.id });
604
+ }
605
+ seen.add(entry);
606
+ }
607
+ // script cross-check: the rendered contract line must agree with the DECLARED array — a plan
608
+ // edit that never re-rendered would otherwise pass on the plan half alone.
609
+ if (f.tools.length > 0) {
610
+ const expected = 'declared MCP tool allowlist (plan tools): ' + f.tools.join(', ') + ' — use NOTHING outside it.';
611
+ if (!ctx.script.includes(expected)) {
612
+ out.push({ rule: 'tool-perimeter-declared', severity: sev, message: `step ${f.id}: the rendered script carries no contract line matching the declared perimeter [${f.tools.join(', ')}] — the script is stale against the plan, or the perimeter is decorative`, anchor: f.id });
613
+ }
614
+ }
615
+ }
616
+ return out;
617
+ }
618
+
566
619
  function ruleSizeBudget(ctx: Ctx): LintFinding[] {
567
620
  const n = ctx.lines.length;
568
621
  if (n > SIZE_BUDGET_WARN_LINES) {
@@ -623,6 +676,7 @@ export function lint(scriptText: string, opts: LintOptions = {}): LintRun {
623
676
  run('pause-wired', () => rulePauseWired(ctx));
624
677
  run('dispatch-by-deliverable', () => ruleDispatchByDeliverable(ctx));
625
678
  run('no-agent-outside-runstep', () => ruleNoAgentOutsideRunstep(ctx));
679
+ run('tool-perimeter-declared', () => ruleToolPerimeterDeclared(ctx));
626
680
  run('size-budget', () => ruleSizeBudget(ctx));
627
681
 
628
682
  const severities = Object.values(rules);
package/src/loop-plan.ts CHANGED
@@ -115,6 +115,20 @@ export interface LoopStep {
115
115
  * exec fingerprint in two review rounds; see roadmap. */
116
116
  checkpoint?: boolean;
117
117
  budget?: { maxAgents: number };
118
+ /**
119
+ * DECLARED MCP tool perimeter for this dispatching step (cfr-pipeline ADR-002).
120
+ *
121
+ * A `<server>:<capability>` allowlist (`^[a-z][a-z0-9-]*(:[a-z][a-z0-9-]*)+$`, checked by the
122
+ * `tool-perimeter-declared` lint rule, not by the schema — the schema owns only the TYPE).
123
+ * ENACTED by `stepPromptAssembly`: a non-empty array renders a fixed contract line into the
124
+ * step's prompt, so the perimeter is COMMUNICATED to the agent rather than decorative. An empty
125
+ * array is meaningful and is the correct value for a step that touches no external tool.
126
+ *
127
+ * HONESTY, said once and never softened elsewhere: this is a DECLARATION, not enforcement.
128
+ * `agent()` exposes no tool restriction; real enforcement lives at the MCP server. No document
129
+ * may call this a sandbox.
130
+ */
131
+ tools?: string[];
118
132
  /** Dispatch route. v1 NARROWING (QE round 6): only 'inline' is enacted — 'codex-wrapper' and
119
133
  * 'codex-exec' are VALIDATED-AWAY (ENACT-DISPATCH). The fire-and-forget wrapper returns a stub
120
134
  * that reads as a clean result, and codex-exec had no live-proven enactment here; see roadmap. */
@@ -328,6 +342,7 @@ export const FIELD_DOMAINS: Record<string, FieldDomain> = {
328
342
  'LoopStep.cache': { t: 'record' },
329
343
  'LoopStep.checkpoint': { t: 'boolean' },
330
344
  'LoopStep.budget': { t: 'record' },
345
+ 'LoopStep.tools': { t: 'string[]' },
331
346
  'LoopStep.dispatch': { t: 'enum', values: ['inline', 'codex-wrapper', 'codex-exec'] },
332
347
  'LoopStep.pauseState': { t: 'string' },
333
348
  'artifacts.reads': { t: 'string[]' },
@@ -535,6 +550,9 @@ export const STEP_FIELD_KINDS: Record<string, readonly StepKind[]> = {
535
550
  budget: ALL_KINDS, // budget is an ACCOUNTING weight — summed into the rendered budget guard for every kind
536
551
  prompt: DISPATCHING_KINDS,
537
552
  artifacts: DISPATCHING_KINDS,
553
+ // the perimeter rides the PROMPT, so it enacts exactly where a prompt is dispatched — `tools`
554
+ // on a fanout/join/pause step would be an unperformed promise (KIND-1 rejects it).
555
+ tools: DISPATCHING_KINDS,
538
556
  model: DISPATCHING_KINDS,
539
557
  deliverable: DISPATCHING_KINDS,
540
558
  idempotent: DISPATCHING_KINDS,
@@ -1275,6 +1293,9 @@ export interface LintProjection {
1275
1293
  dispatch: DispatchRoute;
1276
1294
  cacheable: boolean;
1277
1295
  writes: string[];
1296
+ /** DECLARED tool perimeter, or `null` when the step declares none (ADR-002: absence FLAGS —
1297
+ * silence is never permission, so `null` and `[]` must stay distinguishable here). */
1298
+ tools: string[] | null;
1278
1299
  }[];
1279
1300
  pauses: { state: string; resumeArg: string }[];
1280
1301
  checkpointingEnabled: boolean;
@@ -1345,6 +1366,7 @@ export function toLintProjection(plan: LoopPlan): LintProjection {
1345
1366
  dispatch: s.dispatch ?? 'inline',
1346
1367
  cacheable: s.cacheable === true,
1347
1368
  writes: s.artifacts?.writes ?? [],
1369
+ tools: Array.isArray(s.tools) ? [...s.tools] : null,
1348
1370
  };
1349
1371
  });
1350
1372
 
@@ -199,6 +199,14 @@ function stepPromptAssembly(s: LoopStep, plan: LoopPlan): string[] {
199
199
  const fileNote = (s.deliverable ?? 'return-value') === 'file' ? '; your deliverable is the written file(s), not your reply' : '';
200
200
  lines.push(` ${jsString('declared outputs (plan artifacts.writes): ' + writes.join(', ') + ' — write them' + fileNote + '. The loop verifies they land.')},`);
201
201
  }
202
+ // ENACTS LoopStep.tools (cfr-pipeline ADR-002): the declared perimeter is COMMUNICATED to the
203
+ // agent in FIXED wording, so its presence is greppable by a layer-1 test. The second sentence is
204
+ // not decoration — it is the honesty clause the whole feature rests on: a declaration is not
205
+ // enforcement, and every environment this ships into today serves the tools as labeled stubs.
206
+ const tools = s.tools ?? [];
207
+ if (tools.length > 0) {
208
+ lines.push(` ${jsString('declared MCP tool allowlist (plan tools): ' + tools.join(', ') + ' — use NOTHING outside it. In this environment every one of these is a labeled STUB, not a live integration; enforcement lives at the MCP server, not here.')},`);
209
+ }
202
210
  if (s.kind === 'gate') {
203
211
  lines.push(` ${jsString('GATE PROTOCOL (kind: ' + (gateCfg?.kind ?? 'gate') + '): end your reply with exactly one line "GATE: PASS" or "GATE: FAIL" — the loop PARSES this verdict and never synthesizes one.')},`);
204
212
  }