opencode-swarm 7.179.0 → 7.180.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/.opencode/skills/execute/SKILL.md +9 -8
  2. package/.opencode/skills/running-tests/SKILL.md +41 -36
  3. package/.opencode/skills/writing-tests/SKILL.md +11 -4
  4. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  5. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  6. package/dist/agents/explorer.d.ts +1 -1
  7. package/dist/background/pr-event-subscribers.d.ts +2 -0
  8. package/dist/background/pr-feedback-event-queue.d.ts +7 -0
  9. package/dist/background/pr-feedback-loop.d.ts +162 -0
  10. package/dist/cli/{coder-settlement-7pt3a0y0.js → coder-settlement-34z9xgnx.js} +13 -13
  11. package/dist/cli/{config-doctor-82w4bp4b.js → config-doctor-tkfrwztz.js} +2 -2
  12. package/dist/cli/{core-9rqzs794.js → core-z9ybzpvr.js} +4 -5
  13. package/dist/cli/{curation-policy-c7mdsf7m.js → curation-policy-gwzmjmt7.js} +6 -5
  14. package/dist/cli/{curator-drift-d93pwt8h.js → curator-drift-3bbn011w.js} +22 -12
  15. package/dist/cli/curator-llm-factory-e162g7xp.js +74 -0
  16. package/dist/cli/{curator-m8act07j.js → curator-zv4qs07j.js} +46 -44
  17. package/dist/cli/{dispatch-3rwdxpp2.js → dispatch-p5zjg5e6.js} +1 -1
  18. package/dist/cli/{evidence-summary-service-a99bgje1.js → evidence-summary-service-wrfth5tr.js} +22 -20
  19. package/dist/cli/{explorer-z0cf5cz0.js → explorer-m50sfrp7.js} +1 -1
  20. package/dist/cli/{gate-evidence-yssmxba5.js → gate-evidence-adqbxnm7.js} +8 -8
  21. package/dist/cli/guardrail-explain-dn96802k.js +75 -0
  22. package/dist/cli/{guardrail-log-j2wtq7p2.js → guardrail-log-rcza6v3y.js} +6 -6
  23. package/dist/cli/{guardrail-reset-07byr7nr.js → guardrail-reset-fjn42e0n.js} +46 -44
  24. package/dist/cli/hive-promoter-hgqqn7qw.js +89 -0
  25. package/dist/cli/{index-7zmbtxw1.js → index-06crt1ej.js} +2 -2
  26. package/dist/cli/{index-wrt875kh.js → index-0725jpp7.js} +1 -1
  27. package/dist/cli/{index-f2v90gfc.js → index-0v1rtanv.js} +24 -165
  28. package/dist/cli/{index-0bc8jdnv.js → index-1hzqyx13.js} +9 -1
  29. package/dist/cli/{index-80q47hpw.js → index-1p8fk9jb.js} +2 -2
  30. package/dist/cli/{index-1rwyfvq2.js → index-2h0qng38.js} +3 -3
  31. package/dist/cli/{index-amf88k1e.js → index-3jap3516.js} +1 -1
  32. package/dist/cli/{index-8815e95e.js → index-5gmn0a3j.js} +8 -8
  33. package/dist/cli/{index-yagqxt2p.js → index-5m378633.js} +4 -4
  34. package/dist/cli/{index-0h3cr7pn.js → index-5yc5n4ae.js} +1 -1
  35. package/dist/cli/{index-pxtye2ng.js → index-7pj0x345.js} +50 -48
  36. package/dist/cli/{index-etmwjgre.js → index-7w6dnpvc.js} +46 -44
  37. package/dist/cli/{index-6tnkvqr9.js → index-8b1f2t5q.js} +8 -10
  38. package/dist/cli/{index-cvg402ha.js → index-91dhg3wr.js} +2 -2
  39. package/dist/cli/{index-3pzwsesm.js → index-92m05mew.js} +2 -2
  40. package/dist/cli/{index-6r92fw88.js → index-93vk5s7v.js} +8 -8
  41. package/dist/cli/{index-ne9zamcs.js → index-989v83pb.js} +1 -1
  42. package/dist/cli/{index-g6nyk713.js → index-aspxz5r5.js} +1 -1
  43. package/dist/cli/index-b9z9gvx0.js +339 -0
  44. package/dist/cli/{index-2b0ktpbf.js → index-bdpgfep1.js} +5 -5
  45. package/dist/cli/{index-nzekzzs2.js → index-bv4b8tpa.js} +5 -5
  46. package/dist/cli/{index-n1tcj1q7.js → index-bx70zs8d.js} +187 -47
  47. package/dist/cli/{index-kmhnkn6t.js → index-caj76d0f.js} +6 -8
  48. package/dist/cli/{index-549wxbe1.js → index-cjapb4hy.js} +1 -1
  49. package/dist/cli/{index-3hne91yd.js → index-cxgr6ad5.js} +13 -15
  50. package/dist/cli/{index-kanxpgf8.js → index-dcttq1mn.js} +2 -2
  51. package/dist/cli/{index-twtez316.js → index-defq2crz.js} +13 -3
  52. package/dist/cli/{index-d66zb40k.js → index-dnbqmay5.js} +3054 -1454
  53. package/dist/cli/index-ejhxgyvm.js +147 -0
  54. package/dist/cli/{index-hwcra3y9.js → index-ekgc71m1.js} +10 -10
  55. package/dist/cli/{index-s4bkey0q.js → index-gc6h1fmf.js} +4 -4
  56. package/dist/cli/index-gx2vp8gx.js +100 -0
  57. package/dist/cli/{index-zgvzbz48.js → index-hamqvzqn.js} +69 -13
  58. package/dist/cli/{index-h59vsbch.js → index-htrb9ec3.js} +1 -1
  59. package/dist/cli/{index-yfpswnjt.js → index-jmrsfhwq.js} +3 -3
  60. package/dist/cli/{index-9p1pqykb.js → index-jrfv2am8.js} +7 -7
  61. package/dist/cli/{index-pskba939.js → index-jscqefqm.js} +1 -1
  62. package/dist/cli/{index-wvpsm8ja.js → index-kp654qcw.js} +32 -17
  63. package/dist/cli/{index-tmy46dtd.js → index-mhrn7hbb.js} +8 -7
  64. package/dist/cli/{index-h4nh6s8b.js → index-nhxykfyy.js} +1 -1
  65. package/dist/cli/{index-ndwbb3xm.js → index-pnt98k7z.js} +7 -7
  66. package/dist/cli/{index-1c1dbwze.js → index-rdec0y3z.js} +1 -1
  67. package/dist/cli/{index-qxk5qkfh.js → index-ret97f1t.js} +5 -5
  68. package/dist/cli/{index-sv4y1cma.js → index-v1sc1gxv.js} +6 -6
  69. package/dist/cli/{index-a11ztzs5.js → index-vmthakz0.js} +1 -1
  70. package/dist/cli/{index-09wm3963.js → index-x6kjbjya.js} +9 -7
  71. package/dist/cli/{index-1sz02k85.js → index-zptq8mp1.js} +4 -103
  72. package/dist/cli/{index-34bwqcea.js → index-zvxy0mev.js} +1 -1
  73. package/dist/cli/{index-zz7gzw57.js → index-zxdawwc7.js} +88 -4
  74. package/dist/cli/index.js +47 -45
  75. package/dist/cli/{knowledge-escalator-yx97q9c1.js → knowledge-escalator-x8vcmb6k.js} +16 -15
  76. package/dist/cli/{knowledge-events-p269fyvv.js → knowledge-events-naf9kyyc.js} +14 -13
  77. package/dist/cli/{knowledge-link-gfz47ves.js → knowledge-link-g0q25hqv.js} +5 -4
  78. package/dist/cli/{knowledge-store-36zemyqa.js → knowledge-store-dnv0ph42.js} +6 -5
  79. package/dist/cli/{knowledge-validator-rd20yq41.js → knowledge-validator-a1rfzkmv.js} +8 -7
  80. package/dist/cli/{mcp-sg9zrkz2.js → mcp-hnb0m05a.js} +1 -1
  81. package/dist/cli/{pending-delegations-8p2gf4kt.js → pending-delegations-05p6cmbh.js} +13 -12
  82. package/dist/cli/{pr-subscriptions-4dj9r71h.js → pr-subscriptions-a2djfzyx.js} +13 -12
  83. package/dist/cli/{pr-workflow-gate-8dgz5z1h.js → pr-workflow-gate-wkmx8nr6.js} +48 -44
  84. package/dist/cli/{runner-16b691ba.js → runner-hkbds12j.js} +6 -5
  85. package/dist/cli/{scan-cursor-nx0jv9ya.js → scan-cursor-4khfn5pm.js} +8 -8
  86. package/dist/cli/{schema-q6gsrxwz.js → schema-a5zb02h8.js} +3 -1
  87. package/dist/cli/{scope-persistence-1k4xsyh7.js → scope-persistence-nsw324ce.js} +18 -17
  88. package/dist/cli/{server-shhxq34t.js → server-exj4wt8j.js} +54 -52
  89. package/dist/cli/{skill-generator-6j7tq2tb.js → skill-generator-r2cdtx7b.js} +18 -17
  90. package/dist/cli/{snapshot-coordination-init-h8n8w1cm.js → snapshot-coordination-init-sad6q0a2.js} +46 -44
  91. package/dist/cli/speckit-checkoff-46g9sqak.js +31 -0
  92. package/dist/cli/{workspace-snapshot-rfnn80dg.js → workspace-snapshot-4m2ex1ey.js} +4 -5
  93. package/dist/cli/{worktree-collision-ownership-97jzh4ra.js → worktree-collision-ownership-4znkfq1t.js} +16 -16
  94. package/dist/cli/{worktree-isolation-g4w74ccb.js → worktree-isolation-mv9ee00v.js} +46 -44
  95. package/dist/commands/pr-feedback-loop.d.ts +1 -0
  96. package/dist/commands/registry.d.ts +10 -2
  97. package/dist/config/schema.d.ts +27 -0
  98. package/dist/hooks/delegation-tracker.d.ts +6 -1
  99. package/dist/hooks/pr-workflow-gate.d.ts +1 -1
  100. package/dist/index.js +639 -606
  101. package/dist/lang/backends/go.d.ts +2 -0
  102. package/dist/mutation/engine.d.ts +1 -0
  103. package/dist/sdd/effective-spec.d.ts +35 -22
  104. package/dist/sdd/speckit-checkoff.d.ts +113 -0
  105. package/dist/session/hydration-ownership.d.ts +83 -0
  106. package/dist/session/snapshot-coordination-init.d.ts +2 -1
  107. package/dist/session/snapshot-reader.d.ts +25 -7
  108. package/dist/state.d.ts +32 -2
  109. package/dist/test-impact/analyzer.d.ts +46 -4
  110. package/dist/test-impact/constants.d.ts +4 -0
  111. package/dist/tools/mutation-test.d.ts +11 -5
  112. package/dist/tools/test-runner.d.ts +34 -6
  113. package/opencode-swarm.schema.json +40 -0
  114. package/package.json +1 -1
  115. package/dist/cli/curator-llm-factory-cbm1ny30.js +0 -72
  116. package/dist/cli/guardrail-explain-ffwmhf7s.js +0 -73
  117. package/dist/cli/hive-promoter-ewrz7vh1.js +0 -87
  118. package/dist/cli/index-4ddpvd5c.js +0 -94
@@ -1,17 +1,25 @@
1
1
  // @bun
2
+ import {
3
+ writeSpeckitCheckoffLedger
4
+ } from "./index-b9z9gvx0.js";
2
5
  import {
3
6
  validateSpecContent
4
- } from "./index-wrt875kh.js";
7
+ } from "./index-0725jpp7.js";
5
8
  import {
6
9
  advisoryWarn,
7
10
  init_warning_buffer
8
- } from "./index-4ddpvd5c.js";
11
+ } from "./index-zxdawwc7.js";
12
+ import {
13
+ init_logger,
14
+ log
15
+ } from "./index-zgwm4ryv.js";
9
16
 
10
17
  // src/sdd/effective-spec.ts
11
18
  import { createHash } from "crypto";
12
19
  import * as fs from "fs";
13
20
  import * as path from "path";
14
21
  init_warning_buffer();
22
+ init_logger();
15
23
  var SWARM_SPEC_REL = path.join(".swarm", "spec.md");
16
24
  var OPENSPEC_ROOT = "openspec";
17
25
  var SPECKIT_MARKER = ".specify";
@@ -297,12 +305,14 @@ function parseSpeckitRequirements(content, sourceRel) {
297
305
  if (!/\b(MUST|SHALL|SHOULD|MAY)\b/i.test(line))
298
306
  continue;
299
307
  const text = line.trim().replace(/^\s*[-*]\s+/, "");
300
- const explicit = line.match(/\b(FR-(?!000)\d{3})\b/);
308
+ const explicit = line.match(/\b((?:[A-Za-z0-9][A-Za-z0-9._-]*\/)?FR-(?!000)\d{3})\b/);
301
309
  if (explicit) {
310
+ const raw = explicit[1];
311
+ const id = raw.includes("/") ? raw : raw.toUpperCase();
302
312
  requirements.push({
303
- id: explicit[1].toUpperCase(),
313
+ id,
304
314
  kind: "CURRENT",
305
- title: explicit[1].toUpperCase(),
315
+ title: id,
306
316
  text,
307
317
  sourceRel
308
318
  });
@@ -327,7 +337,7 @@ function resolveSpeckitProjection(directory, options = {}) {
327
337
  if (detection.features.length === 0) {
328
338
  return { kind: "empty" };
329
339
  }
330
- let selectedFeature;
340
+ let selectedFeatures;
331
341
  if (options.feature) {
332
342
  const found = detection.features.find((f) => f.featureId === options.feature);
333
343
  if (!found) {
@@ -337,15 +347,14 @@ function resolveSpeckitProjection(directory, options = {}) {
337
347
  available: detection.features.map((f) => f.featureId)
338
348
  };
339
349
  }
340
- selectedFeature = found;
341
- } else if (detection.features.length === 1) {
342
- selectedFeature = detection.features[0];
350
+ selectedFeatures = [found];
343
351
  } else {
344
- return {
345
- kind: "ambiguous",
346
- features: detection.features.map((f) => f.featureId)
347
- };
352
+ selectedFeatures = detection.features;
353
+ }
354
+ if (selectedFeatures.length > 1) {
355
+ return buildMultiFeatureProjection(root, selectedFeatures);
348
356
  }
357
+ const selectedFeature = selectedFeatures[0];
349
358
  const specAbs = path.join(root, selectedFeature.specRelPath);
350
359
  const content = readTextBounded(specAbs);
351
360
  if (content === null) {
@@ -379,6 +388,7 @@ function resolveSpeckitProjection(directory, options = {}) {
379
388
  for (const req of requirements) {
380
389
  lines.push(renderRequirement(req, usedIds, warnings, reservedIds));
381
390
  }
391
+ const featureRequirementIds = [...usedIds];
382
392
  lines.push(...renderSuccessCriteriaScaffold(selectedFeature.featureId, usedIds));
383
393
  const projected = `${lines.join(`
384
394
  `)}
@@ -402,7 +412,111 @@ function resolveSpeckitProjection(directory, options = {}) {
402
412
  sourcePaths: [selectedFeature.specRelPath],
403
413
  warnings
404
414
  };
405
- return { kind: "ok", spec, feature: selectedFeature.featureId };
415
+ return {
416
+ kind: "ok",
417
+ spec,
418
+ features: [selectedFeature.featureId],
419
+ namespaced: false,
420
+ featureRequirementIds: [featureRequirementIds]
421
+ };
422
+ }
423
+ function bareFrPart(id) {
424
+ const idx = id.lastIndexOf("/");
425
+ return idx === -1 ? id : id.slice(idx + 1);
426
+ }
427
+ function renderNamespacedRequirement(featureId, req, usedNs, usedBare, reservedBare, warnings) {
428
+ const explicitBare = req.id ? bareFrPart(req.id) : null;
429
+ const explicitNs = explicitBare ? `${featureId}/${explicitBare}` : null;
430
+ let id;
431
+ if (explicitNs && !usedNs.has(explicitNs)) {
432
+ id = explicitNs;
433
+ usedBare.add(explicitBare);
434
+ } else {
435
+ id = `${featureId}/${nextFrId(usedBare, warnings, reservedBare)}`;
436
+ }
437
+ if (explicitNs && explicitNs !== id) {
438
+ warnings.push(`Duplicate requirement id ${explicitNs} in ${req.sourceRel}; generated ${id}.`);
439
+ }
440
+ usedNs.add(id);
441
+ let text = req.text;
442
+ if (req.id && text.includes(req.id)) {
443
+ text = text.replace(req.id, id);
444
+ } else if (!text.includes(id)) {
445
+ text = `${id}: ${text}`;
446
+ }
447
+ return `- ${text} _(source: ${req.sourceRel})_`;
448
+ }
449
+ function buildMultiFeatureProjection(root, features) {
450
+ const warnings = [];
451
+ const lines = [
452
+ "# Specification: Effective SDD Projection",
453
+ "",
454
+ "Generated from Spec-Kit feature artifacts. Update the source artifacts, then run `/swarm sdd project` to refresh this projection.",
455
+ "",
456
+ "## Source Artifacts",
457
+ ...features.map((f) => `- ${f.specRelPath}`),
458
+ "",
459
+ "## Functional Requirements"
460
+ ];
461
+ const scUsedIds = new Set;
462
+ const featureRequirementIds = [];
463
+ let mtimeMs = 0;
464
+ for (const feature of features) {
465
+ const specAbs = path.join(root, feature.specRelPath);
466
+ const content = readTextBounded(specAbs);
467
+ if (content === null) {
468
+ return { kind: "zero_requirements", feature: feature.featureId };
469
+ }
470
+ const requirements = parseSpeckitRequirements(content, feature.specRelPath);
471
+ if (requirements.length === 0) {
472
+ return { kind: "zero_requirements", feature: feature.featureId };
473
+ }
474
+ const usedNs = new Set;
475
+ const usedBare = new Set;
476
+ const reservedBare = new Set;
477
+ for (const req of requirements) {
478
+ if (req.id)
479
+ reservedBare.add(bareFrPart(req.id));
480
+ }
481
+ try {
482
+ mtimeMs = Math.max(mtimeMs, fs.lstatSync(specAbs).mtimeMs);
483
+ } catch {}
484
+ lines.push("", `### ${feature.featureId}`);
485
+ for (const req of requirements) {
486
+ lines.push(renderNamespacedRequirement(feature.featureId, req, usedNs, usedBare, reservedBare, warnings));
487
+ }
488
+ featureRequirementIds.push([...usedNs]);
489
+ lines.push(...renderSuccessCriteriaScaffold(feature.featureId, scUsedIds));
490
+ }
491
+ const projected = `${lines.join(`
492
+ `)}
493
+ `;
494
+ if (projected.length > MAX_SPEC_BYTES) {
495
+ return {
496
+ kind: "too_large",
497
+ feature: features[features.length - 1].featureId,
498
+ bytes: projected.length
499
+ };
500
+ }
501
+ const validation = validateSpecContent(projected);
502
+ if (!validation.valid) {
503
+ warnings.push(...validation.issues.map((issue) => `Projection line ${issue.line}: ${issue.message}`));
504
+ }
505
+ const spec = {
506
+ source: "speckit_projection",
507
+ content: projected,
508
+ hash: hash(projected),
509
+ mtime: mtimeMs > 0 ? new Date(mtimeMs).toISOString() : null,
510
+ sourcePaths: features.map((f) => f.specRelPath),
511
+ warnings
512
+ };
513
+ return {
514
+ kind: "ok",
515
+ spec,
516
+ features: features.map((f) => f.featureId),
517
+ namespaced: true,
518
+ featureRequirementIds
519
+ };
406
520
  }
407
521
  function buildSpeckitProjectionSync(directory, options = {}) {
408
522
  const resolution = resolveSpeckitProjection(directory, options);
@@ -599,12 +713,32 @@ function readEffectiveSpecSync(directory, opts) {
599
713
  }
600
714
  function writeProjectedSpecSync(directory, options = {}) {
601
715
  const root = path.resolve(directory);
602
- const projection = options.source === "speckit" ? buildSpeckitProjectionSync(root, { feature: options.feature }) : buildOpenSpecProjectionSync(root, { changeId: options.changeId });
716
+ let speckitResolution = null;
717
+ let projection;
718
+ if (options.source === "speckit") {
719
+ speckitResolution = resolveSpeckitProjection(root, {
720
+ feature: options.feature
721
+ });
722
+ projection = speckitResolution.kind === "ok" ? speckitResolution.spec : null;
723
+ } else {
724
+ projection = buildOpenSpecProjectionSync(root, {
725
+ changeId: options.changeId
726
+ });
727
+ }
603
728
  const target = path.join(root, SWARM_SPEC_REL);
604
729
  if (!projection || options.dryRun) {
605
730
  return { written: false, projection, path: target };
606
731
  }
607
732
  fs.mkdirSync(path.dirname(target), { recursive: true });
733
+ const buildLedgerAfterWrite = () => {
734
+ if (!speckitResolution || speckitResolution.kind !== "ok")
735
+ return;
736
+ try {
737
+ writeSpeckitCheckoffLedger(root, speckitResolution);
738
+ } catch (err) {
739
+ log(`[sdd] check-off ledger build failed after projection write: ${err instanceof Error ? err.message : String(err)}`);
740
+ }
741
+ };
608
742
  if (!options.overwrite) {
609
743
  try {
610
744
  fs.writeFileSync(target, projection.content, { flag: "wx" });
@@ -619,6 +753,7 @@ function writeProjectedSpecSync(directory, options = {}) {
619
753
  }
620
754
  throw err;
621
755
  }
756
+ buildLedgerAfterWrite();
622
757
  return { written: true, projection, path: target };
623
758
  }
624
759
  let archivePath;
@@ -635,6 +770,7 @@ function writeProjectedSpecSync(directory, options = {}) {
635
770
  const tmp = `${target}.tmp-${process.pid}-${Date.now()}`;
636
771
  fs.writeFileSync(tmp, projection.content, "utf-8");
637
772
  fs.renameSync(tmp, target);
773
+ buildLedgerAfterWrite();
638
774
  return { written: true, projection, archivePath, path: target };
639
775
  }
640
776
  function validateSpeckit(directory, options = {}) {
@@ -647,44 +783,48 @@ function validateSpeckit(directory, options = {}) {
647
783
  if (resolution.kind === "zero_requirements") {
648
784
  problems.push(`Feature '${resolution.feature}' contains no parsable functional requirements.`);
649
785
  }
650
- const detection = detectSpeckit(root);
651
- const featureEntry = detection.features.find((f) => f.featureId === resolution.feature);
652
- if (!featureEntry) {
653
- return { resolution, problems };
654
- }
655
- const specAbs = path.join(root, featureEntry.specRelPath);
656
- let specContent = null;
657
- try {
658
- specContent = readTextBounded(specAbs);
659
- } catch {}
660
- if (specContent !== null) {
661
- const specLines = specContent.replace(/\r\n/g, `
786
+ const featureIds = resolution.kind === "ok" ? resolution.features : [resolution.feature];
787
+ const prefix = featureIds.length > 1 ? (id, p) => `[${id}] ${p}` : (_id, p) => p;
788
+ for (const featureId of featureIds) {
789
+ const detection = detectSpeckit(root);
790
+ const featureEntry = detection.features.find((f) => f.featureId === featureId);
791
+ if (!featureEntry) {
792
+ continue;
793
+ }
794
+ const specAbs = path.join(root, featureEntry.specRelPath);
795
+ let specContent = null;
796
+ try {
797
+ specContent = readTextBounded(specAbs);
798
+ } catch {}
799
+ if (specContent !== null) {
800
+ const specLines = specContent.replace(/\r\n/g, `
662
801
  `).split(`
663
802
  `);
664
- for (const requiredHeader of SPECKIT_REQUIRED_SECTIONS) {
665
- if (!specLines.some((line) => line.trimEnd() === requiredHeader)) {
666
- problems.push(`Missing required spec.md section: ${requiredHeader}`);
803
+ for (const requiredHeader of SPECKIT_REQUIRED_SECTIONS) {
804
+ if (!specLines.some((line) => line.trimEnd() === requiredHeader)) {
805
+ problems.push(prefix(featureId, `Missing required spec.md section: ${requiredHeader}`));
806
+ }
667
807
  }
668
808
  }
669
- }
670
- const tasksAbs = path.join(path.dirname(specAbs), "tasks.md");
671
- let tasksContent = null;
672
- try {
673
- tasksContent = readTextBounded(tasksAbs);
674
- } catch {}
675
- if (tasksContent !== null) {
676
- const tasksLines = tasksContent.replace(/\r\n/g, `
809
+ const tasksAbs = path.join(path.dirname(specAbs), "tasks.md");
810
+ let tasksContent = null;
811
+ try {
812
+ tasksContent = readTextBounded(tasksAbs);
813
+ } catch {}
814
+ if (tasksContent !== null) {
815
+ const tasksLines = tasksContent.replace(/\r\n/g, `
677
816
  `).split(`
678
817
  `);
679
- for (const line of tasksLines) {
680
- const taskMatch = line.match(/^\s*-\s+\[[ xX]\]\s+(T\d+)/);
681
- if (!taskMatch)
682
- continue;
683
- const taskId = taskMatch[1];
684
- const hasStoryRef = /\[US\d+\]/i.test(line);
685
- const hasReqRef = /\bFR-(?!000)\d{3}\b/i.test(line);
686
- if (!hasStoryRef && !hasReqRef) {
687
- problems.push(`Task ${taskId} has no spec/requirement reference.`);
818
+ for (const line of tasksLines) {
819
+ const taskMatch = line.match(/^\s*-\s+\[[ xX]\]\s+(T\d+)/);
820
+ if (!taskMatch)
821
+ continue;
822
+ const taskId = taskMatch[1];
823
+ const hasStoryRef = /\[US\d+\]/i.test(line);
824
+ const hasReqRef = /\bFR-(?!000)\d{3}\b/i.test(line);
825
+ if (!hasStoryRef && !hasReqRef) {
826
+ problems.push(prefix(featureId, `Task ${taskId} has no spec/requirement reference.`));
827
+ }
688
828
  }
689
829
  }
690
830
  }
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  autoCommitDirty,
4
4
  cleanUntrackedFiles
5
- } from "./index-6tnkvqr9.js";
5
+ } from "./index-8b1f2t5q.js";
6
6
  import {
7
7
  validateSwarmPath
8
- } from "./index-s4bkey0q.js";
8
+ } from "./index-gc6h1fmf.js";
9
9
  import {
10
10
  bunSpawn,
11
11
  classifySpawnFailure
@@ -15,18 +15,16 @@ import {
15
15
  atomicWriteFile,
16
16
  taskEvidencePath,
17
17
  withTaskEvidenceLock
18
- } from "./index-f2v90gfc.js";
18
+ } from "./index-0v1rtanv.js";
19
19
  import {
20
20
  telemetry
21
21
  } from "./index-qt0793qm.js";
22
22
  import {
23
+ advisoryWarn,
23
24
  init_git_executable,
25
+ init_warning_buffer,
24
26
  resolveGitExecutable
25
- } from "./index-zz7gzw57.js";
26
- import {
27
- advisoryWarn,
28
- init_warning_buffer
29
- } from "./index-4ddpvd5c.js";
27
+ } from "./index-zxdawwc7.js";
30
28
  import {
31
29
  exports_external,
32
30
  init_zod
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  init_git_executable,
7
7
  resolveGitExecutable
8
- } from "./index-zz7gzw57.js";
8
+ } from "./index-zxdawwc7.js";
9
9
 
10
10
  // src/hooks/delegation-gate/worktree-ownership-tag.ts
11
11
  import * as fs from "fs";
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  captureWorkspaceSnapshotAsync,
4
4
  changedFilesSinceSnapshotAsync
5
- } from "./index-2b0ktpbf.js";
5
+ } from "./index-bdpgfep1.js";
6
6
  import {
7
7
  removeWorktreeProvisioningOwner
8
- } from "./index-3pzwsesm.js";
8
+ } from "./index-92m05mew.js";
9
9
  import {
10
10
  SOURCE_WORKTREE_GONE_STAGE,
11
11
  ensureTaskGateRequirementsReceiptForSettledTransition,
@@ -14,27 +14,25 @@ import {
14
14
  reconcileLandedMerge,
15
15
  withTaskEvidenceTransaction,
16
16
  writeWorkflowWalFile
17
- } from "./index-kmhnkn6t.js";
17
+ } from "./index-caj76d0f.js";
18
18
  import {
19
19
  validateSwarmPath
20
- } from "./index-s4bkey0q.js";
20
+ } from "./index-gc6h1fmf.js";
21
21
  import {
22
22
  appendCoreEventSync
23
- } from "./index-h59vsbch.js";
24
- import {
25
- tryAcquireLock
26
- } from "./index-f2v90gfc.js";
23
+ } from "./index-htrb9ec3.js";
27
24
  import {
28
25
  canonicalRootKeyFresh
29
26
  } from "./index-1xnse449.js";
30
27
  import {
31
- init_git_executable,
32
- resolveGitExecutable
33
- } from "./index-zz7gzw57.js";
28
+ tryAcquireLock
29
+ } from "./index-ejhxgyvm.js";
34
30
  import {
35
31
  advisoryWarn,
36
- init_warning_buffer
37
- } from "./index-4ddpvd5c.js";
32
+ init_git_executable,
33
+ init_warning_buffer,
34
+ resolveGitExecutable
35
+ } from "./index-zxdawwc7.js";
38
36
  import {
39
37
  init_path_identity,
40
38
  isPathWithinDeclaredScope
@@ -501,7 +499,7 @@ async function cleanupRecoveredWorktree(directory, descriptor, options) {
501
499
  awaitingMergeByCallID,
502
500
  cleanupStandardWorktreeForCallId,
503
501
  standardWorktreeByCallID
504
- } = await import("./worktree-isolation-g4w74ccb.js");
502
+ } = await import("./worktree-isolation-mv9ee00v.js");
505
503
  standardWorktreeByCallID.delete(descriptor.callID);
506
504
  if (hasResidue)
507
505
  awaitingMergeByCallID.set(descriptor.callID, {
@@ -633,7 +631,7 @@ async function recoverCoderSettlement(directory, taskId) {
633
631
  awaitingMergeByCallID,
634
632
  finishStandardWorktreeDispatch,
635
633
  standardWorktreeByCallID
636
- } = await import("./worktree-isolation-g4w74ccb.js");
634
+ } = await import("./worktree-isolation-mv9ee00v.js");
637
635
  const descriptor = wal.worktree;
638
636
  const reconstructedDispatch = {
639
637
  callID: descriptor.callID,
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  init_loader,
4
4
  loadPluginConfigWithMeta
5
- } from "./index-1sz02k85.js";
5
+ } from "./index-zptq8mp1.js";
6
6
  import {
7
7
  init_schema
8
- } from "./index-twtez316.js";
8
+ } from "./index-defq2crz.js";
9
9
  import {
10
10
  DEFAULT_WORKTREE_ISOLATION_CONFIG,
11
11
  init_constants
@@ -21,7 +21,7 @@ var package_default;
21
21
  var init_package = __esm(() => {
22
22
  package_default = {
23
23
  name: "opencode-swarm",
24
- version: "7.179.0",
24
+ version: "7.180.0",
25
25
  description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
26
26
  main: "dist/index.js",
27
27
  types: "dist/index.d.ts",
@@ -327,7 +327,7 @@ function resolveExternalSkillsConfig(input) {
327
327
  };
328
328
  return merged;
329
329
  }
330
- var _internals, SEPARATORS, CANONICAL_ROLES_LONGEST_FIRST, CANONICAL_ROLES_SET, AgentReasoningConfigSchema, AgentThinkingConfigSchema, FALLBACK_MODELS_MAX = 3, AgentOverrideConfigSchema, SwarmConfigSchema, ModelPricingConfigSchema, PricingConfigSchema, HooksConfigSchema, ScoringWeightsSchema, DecisionDecaySchema, TokenRatiosSchema, ScoringConfigSchema, ContextBudgetConfigSchema, EvidenceConfigSchema, GateFeatureSchema, PlaceholderScanConfigSchema, QualityBudgetConfigSchema, GATE_SECTION_SCHEMAS, GateConfigSchema, GATE_CONFIG_KNOWN_SECTION_KEYS, GATE_CONFIG_READERS, PipelineConfigSchema, PhaseCompleteConfigSchema, SummaryConfigSchema, RetentionConfigSchema, ReviewPassesConfigSchema, AUTO_REVIEW_V8_BURN_IN_DECISION, AutoReviewFinalConfigSchema, AutoReviewConfigObjectSchema, AutoReviewConfigSchema, AdversarialDetectionConfigSchema, AdversarialTestingConfigSchemaBase, AdversarialTestingConfigSchema, IntegrationAnalysisConfigSchema, DocsConfigSchema, DesignDocsConfigSchema, GitConfigSchema, UIReviewConfigSchema, CompactionAdvisoryConfigSchema, LintConfigSchema, SecretscanConfigSchema, GuardrailsProfileSchema, DEFAULT_AGENT_PROFILES, DEFAULT_ARCHITECT_PROFILE, GuardrailsConfigSchema, WatchdogConfigSchema, SelfReviewConfigSchema, ToolFilterConfigSchema, PlanCursorConfigSchema, ContextMapConfigSchema, RepoGraphConfigSchema, INVALID_CHECKPOINT_PROTO_FIELD = "__swarm_invalid_checkpoint_proto__", FORBIDDEN_CHECKPOINT_CONFIG_KEYS, CheckpointConfigSchema, ApplyPatchConfigSchema, AutomationModeSchema, AutomationCapabilitiesSchema, AutomationConfigSchemaBase, AutomationConfigSchema, KnowledgeConfigSchema, LearningConfigSchema, ConsensusConfigSchema, OtlpExportConfigSchema, ObservabilityConfigSchema, MemoryConfigSchema, CuratorConfigSchema, ArchitecturalSupervisionConfigSchema, KnowledgeApplicationConfigSchema, SkillPropagationAudienceSchema, SkillPropagationConfigSchema, HarnessRelativePathSchema, HarnessEvolutionConfigSchema, DEFAULT_HARNESS_EVOLUTION_CONFIG, SkillImproverConfigSchema, SkillsConfigSchema, SkillOptConfigSchema, DEFAULT_SKILL_OPT_CONFIG, SpecWriterConfigSchema, SlopDetectorConfigSchema, IncrementalVerifyConfigSchema, CompactionConfigSchema, PrmConfigSchema, AgentAuthorityRuleSchema, AuthorityConfigSchema, GeneralCouncilMemberConfigSchema, GeneralCouncilConfigSchema, CouncilConfigSchema, PrMonitorConfigSchema, ParallelizationConfigSchema, WorktreeIsolationConfigSchema, LeanTurboConfigSchema, EpicConfigSchema, StandardTurboConfigSchema, LeanTurboStrategyConfigSchema, TurboConfigSchema, ExternalSkillCandidateSourceTypeSchema, ExternalSkillCandidateEvaluationVerdictSchema, DiscoverySourceSchema, ExternalSkillCandidateSchema, ExternalSkillsConfigSchema, DEFAULT_EXTERNAL_SKILLS_CONFIG, DEFAULT_SKILLS_CONFIG, DEFAULT_PR_REVIEW_RESILIENCE_CONFIG, PrReviewResilienceConfigSchema, ReviewRoutingConfigSchema, DEFAULT_REVIEW_ROUTING_CONFIG, LaneLivenessWatchdogConfigSchema, DispatchProtectionConfigSchema, DashboardConfigSchema, DEFAULT_PR_REVIEW_LEGACY_TRANSCRIPT_COMPATIBILITY = false, PluginConfigSchema;
330
+ var _internals, SEPARATORS, CANONICAL_ROLES_LONGEST_FIRST, CANONICAL_ROLES_SET, AgentReasoningConfigSchema, AgentThinkingConfigSchema, FALLBACK_MODELS_MAX = 3, AgentOverrideConfigSchema, SwarmConfigSchema, ModelPricingConfigSchema, PricingConfigSchema, HooksConfigSchema, ScoringWeightsSchema, DecisionDecaySchema, TokenRatiosSchema, ScoringConfigSchema, ContextBudgetConfigSchema, EvidenceConfigSchema, GateFeatureSchema, PlaceholderScanConfigSchema, QualityBudgetConfigSchema, GATE_SECTION_SCHEMAS, GateConfigSchema, GATE_CONFIG_KNOWN_SECTION_KEYS, GATE_CONFIG_READERS, PipelineConfigSchema, PhaseCompleteConfigSchema, SummaryConfigSchema, RetentionConfigSchema, ReviewPassesConfigSchema, AUTO_REVIEW_V8_BURN_IN_DECISION, AutoReviewFinalConfigSchema, AutoReviewConfigObjectSchema, AutoReviewConfigSchema, AdversarialDetectionConfigSchema, AdversarialTestingConfigSchemaBase, AdversarialTestingConfigSchema, IntegrationAnalysisConfigSchema, DocsConfigSchema, DesignDocsConfigSchema, GitConfigSchema, UIReviewConfigSchema, CompactionAdvisoryConfigSchema, LintConfigSchema, SecretscanConfigSchema, GuardrailsProfileSchema, DEFAULT_AGENT_PROFILES, DEFAULT_ARCHITECT_PROFILE, GuardrailsConfigSchema, WatchdogConfigSchema, SelfReviewConfigSchema, ToolFilterConfigSchema, PlanCursorConfigSchema, ContextMapConfigSchema, RepoGraphConfigSchema, INVALID_CHECKPOINT_PROTO_FIELD = "__swarm_invalid_checkpoint_proto__", FORBIDDEN_CHECKPOINT_CONFIG_KEYS, CheckpointConfigSchema, ApplyPatchConfigSchema, AutomationModeSchema, AutomationCapabilitiesSchema, AutomationConfigSchemaBase, AutomationConfigSchema, KnowledgeConfigSchema, LearningConfigSchema, ConsensusConfigSchema, OtlpExportConfigSchema, ObservabilityConfigSchema, MemoryConfigSchema, CuratorConfigSchema, ArchitecturalSupervisionConfigSchema, KnowledgeApplicationConfigSchema, SkillPropagationAudienceSchema, SkillPropagationConfigSchema, HarnessRelativePathSchema, HarnessEvolutionConfigSchema, DEFAULT_HARNESS_EVOLUTION_CONFIG, SkillImproverConfigSchema, SkillsConfigSchema, SkillOptConfigSchema, DEFAULT_SKILL_OPT_CONFIG, SpecWriterConfigSchema, SlopDetectorConfigSchema, IncrementalVerifyConfigSchema, CompactionConfigSchema, PrmConfigSchema, AgentAuthorityRuleSchema, AuthorityConfigSchema, GeneralCouncilMemberConfigSchema, GeneralCouncilConfigSchema, CouncilConfigSchema, PrMonitorConfigSchema, PrFeedbackLoopConfigSchema, ParallelizationConfigSchema, WorktreeIsolationConfigSchema, LeanTurboConfigSchema, EpicConfigSchema, StandardTurboConfigSchema, LeanTurboStrategyConfigSchema, TurboConfigSchema, ExternalSkillCandidateSourceTypeSchema, ExternalSkillCandidateEvaluationVerdictSchema, DiscoverySourceSchema, ExternalSkillCandidateSchema, ExternalSkillsConfigSchema, DEFAULT_EXTERNAL_SKILLS_CONFIG, DEFAULT_SKILLS_CONFIG, DEFAULT_PR_REVIEW_RESILIENCE_CONFIG, PrReviewResilienceConfigSchema, ReviewRoutingConfigSchema, DEFAULT_REVIEW_ROUTING_CONFIG, LaneLivenessWatchdogConfigSchema, DispatchProtectionConfigSchema, DashboardConfigSchema, DEFAULT_PR_REVIEW_LEGACY_TRANSCRIPT_COMPATIBILITY = false, PluginConfigSchema;
331
331
  var init_schema = __esm(() => {
332
332
  init_zod();
333
333
  init_package();
@@ -1489,6 +1489,12 @@ var init_schema = __esm(() => {
1489
1489
  event_delivery: exports_external.enum(["advisory", "prompt"]).default("prompt"),
1490
1490
  auto_subscribe_on_pr_create: exports_external.boolean().default(true)
1491
1491
  }).strict();
1492
+ PrFeedbackLoopConfigSchema = exports_external.object({
1493
+ enabled: exports_external.boolean().default(false),
1494
+ max_actions_per_pr: exports_external.number().int().min(1).max(10).default(3),
1495
+ max_session_actions: exports_external.number().int().min(1).max(50).default(10),
1496
+ publication: exports_external.enum(["none"]).default("none")
1497
+ });
1492
1498
  ParallelizationConfigSchema = exports_external.object({
1493
1499
  enabled: exports_external.boolean().default(false),
1494
1500
  maxConcurrentTasks: exports_external.number().int().min(1).max(64).default(1),
@@ -1748,6 +1754,9 @@ var init_schema = __esm(() => {
1748
1754
  integration_analysis: IntegrationAnalysisConfigSchema.optional().describe("Integration analysis settings."),
1749
1755
  docs: DocsConfigSchema.optional().describe("Documentation synthesizer (docs agent) settings."),
1750
1756
  design_docs: DesignDocsConfigSchema.optional().describe("Structured design-doc generation (issue #1080, docs_design agent) \u2014 opt-in."),
1757
+ speckit_checkoff: exports_external.object({
1758
+ enabled: exports_external.boolean().default(false).describe("Check off mapped Spec-Kit tasks in the source tasks.md when Swarm completes a plan task (issue #2501). Off by default \u2014 write-back to user-owned files is opt-in.")
1759
+ }).optional().describe("Spec-Kit tasks.md check-off round trip (issue #2501) \u2014 opt-in, never on by default."),
1751
1760
  git: GitConfigSchema.optional().describe("Git executable resolution override (issue #2236 hardening)."),
1752
1761
  ui_review: UIReviewConfigSchema.optional().describe("UI/UX review (designer agent) settings."),
1753
1762
  compaction_advisory: CompactionAdvisoryConfigSchema.optional().describe("Compaction advisory settings."),
@@ -1949,6 +1958,7 @@ var init_schema = __esm(() => {
1949
1958
  cleanup_timeout_ms: 2000
1950
1959
  }
1951
1960
  })).describe("Full-auto autonomous orchestration with critic oversight: permission policy, denial accounting, oversight cadence triggers (v2 preserves v1 fields so existing configs load unchanged)."),
1961
+ pr_feedback_loop: PrFeedbackLoopConfigSchema.optional().describe("Autonomous PR babysitting settling loop (issue #2502) \u2014 triple opt-in with pr_monitor.enabled + pr_monitor.auto_pr_feedback; off by default; publication profile is none-only."),
1952
1962
  pr_monitor: PrMonitorConfigSchema.optional().describe("GitHub PR subscription and polling (FR-001) \u2014 disabled by default; opt-in for real-time PR status updates."),
1953
1963
  external_skills: ExternalSkillsConfigSchema.optional().describe("External skills: candidate model, discovery, and quarantine store (FR-001) \u2014 all subsystems opt-in."),
1954
1964
  skills: SkillsConfigSchema.optional().describe("Opt-in gate for the 7 skill_* management tools (FR-004). Default false: the tools are host-denied for every agent except skill_improver (genuinely unreachable, not merely unlisted \u2014 issue #2528)."),
@@ -1957,4 +1967,4 @@ var init_schema = __esm(() => {
1957
1967
  });
1958
1968
  });
1959
1969
 
1960
- export { init_package, package_default, DEFAULT_MODEL_CONTEXT_TOKENS, init_context_window, _internals, isKnownCanonicalRole, getCanonicalAgentRole, resolveGeneratedAgentRole, stripKnownSwarmPrefix, AgentReasoningConfigSchema, AgentThinkingConfigSchema, FALLBACK_MODELS_MAX, AgentOverrideConfigSchema, SwarmConfigSchema, ModelPricingConfigSchema, PricingConfigSchema, HooksConfigSchema, ScoringWeightsSchema, DecisionDecaySchema, TokenRatiosSchema, ScoringConfigSchema, ContextBudgetConfigSchema, EvidenceConfigSchema, GateFeatureSchema, PlaceholderScanConfigSchema, QualityBudgetConfigSchema, GATE_SECTION_SCHEMAS, GateConfigSchema, GATE_CONFIG_KNOWN_SECTION_KEYS, GATE_CONFIG_READERS, PipelineConfigSchema, PhaseCompleteConfigSchema, SummaryConfigSchema, RetentionConfigSchema, ReviewPassesConfigSchema, AUTO_REVIEW_V8_BURN_IN_DECISION, AutoReviewConfigSchema, resolveAutoReviewConfig, AdversarialDetectionConfigSchema, AdversarialTestingConfigSchema, IntegrationAnalysisConfigSchema, DocsConfigSchema, DesignDocsConfigSchema, GitConfigSchema, UIReviewConfigSchema, CompactionAdvisoryConfigSchema, LintConfigSchema, SecretscanConfigSchema, GuardrailsProfileSchema, DEFAULT_AGENT_PROFILES, DEFAULT_ARCHITECT_PROFILE, GuardrailsConfigSchema, WatchdogConfigSchema, SelfReviewConfigSchema, resolveGuardrailsConfig, ToolFilterConfigSchema, PlanCursorConfigSchema, ContextMapConfigSchema, RepoGraphConfigSchema, CheckpointConfigSchema, ApplyPatchConfigSchema, AutomationModeSchema, AutomationCapabilitiesSchema, AutomationConfigSchema, KnowledgeConfigSchema, LearningConfigSchema, ConsensusConfigSchema, OtlpExportConfigSchema, ObservabilityConfigSchema, MemoryConfigSchema, CuratorConfigSchema, ArchitecturalSupervisionConfigSchema, KnowledgeApplicationConfigSchema, SkillPropagationConfigSchema, HarnessEvolutionConfigSchema, DEFAULT_HARNESS_EVOLUTION_CONFIG, SkillImproverConfigSchema, SkillsConfigSchema, SkillOptConfigSchema, DEFAULT_SKILL_OPT_CONFIG, SpecWriterConfigSchema, SlopDetectorConfigSchema, IncrementalVerifyConfigSchema, CompactionConfigSchema, PrmConfigSchema, AgentAuthorityRuleSchema, AuthorityConfigSchema, GeneralCouncilConfigSchema, CouncilConfigSchema, PrMonitorConfigSchema, ParallelizationConfigSchema, WorktreeIsolationConfigSchema, LeanTurboConfigSchema, EpicConfigSchema, StandardTurboConfigSchema, LeanTurboStrategyConfigSchema, TurboConfigSchema, ExternalSkillCandidateSourceTypeSchema, ExternalSkillCandidateEvaluationVerdictSchema, DiscoverySourceSchema, ExternalSkillCandidateSchema, ExternalSkillsConfigSchema, DEFAULT_EXTERNAL_SKILLS_CONFIG, DEFAULT_SKILLS_CONFIG, resolveExternalSkillsConfig, DEFAULT_PR_REVIEW_RESILIENCE_CONFIG, PrReviewResilienceConfigSchema, ReviewRoutingConfigSchema, DEFAULT_REVIEW_ROUTING_CONFIG, LaneLivenessWatchdogConfigSchema, DispatchProtectionConfigSchema, DashboardConfigSchema, DEFAULT_PR_REVIEW_LEGACY_TRANSCRIPT_COMPATIBILITY, PluginConfigSchema, init_schema };
1970
+ export { init_package, package_default, DEFAULT_MODEL_CONTEXT_TOKENS, init_context_window, _internals, isKnownCanonicalRole, getCanonicalAgentRole, resolveGeneratedAgentRole, stripKnownSwarmPrefix, AgentReasoningConfigSchema, AgentThinkingConfigSchema, FALLBACK_MODELS_MAX, AgentOverrideConfigSchema, SwarmConfigSchema, ModelPricingConfigSchema, PricingConfigSchema, HooksConfigSchema, ScoringWeightsSchema, DecisionDecaySchema, TokenRatiosSchema, ScoringConfigSchema, ContextBudgetConfigSchema, EvidenceConfigSchema, GateFeatureSchema, PlaceholderScanConfigSchema, QualityBudgetConfigSchema, GATE_SECTION_SCHEMAS, GateConfigSchema, GATE_CONFIG_KNOWN_SECTION_KEYS, GATE_CONFIG_READERS, PipelineConfigSchema, PhaseCompleteConfigSchema, SummaryConfigSchema, RetentionConfigSchema, ReviewPassesConfigSchema, AUTO_REVIEW_V8_BURN_IN_DECISION, AutoReviewConfigSchema, resolveAutoReviewConfig, AdversarialDetectionConfigSchema, AdversarialTestingConfigSchema, IntegrationAnalysisConfigSchema, DocsConfigSchema, DesignDocsConfigSchema, GitConfigSchema, UIReviewConfigSchema, CompactionAdvisoryConfigSchema, LintConfigSchema, SecretscanConfigSchema, GuardrailsProfileSchema, DEFAULT_AGENT_PROFILES, DEFAULT_ARCHITECT_PROFILE, GuardrailsConfigSchema, WatchdogConfigSchema, SelfReviewConfigSchema, resolveGuardrailsConfig, ToolFilterConfigSchema, PlanCursorConfigSchema, ContextMapConfigSchema, RepoGraphConfigSchema, CheckpointConfigSchema, ApplyPatchConfigSchema, AutomationModeSchema, AutomationCapabilitiesSchema, AutomationConfigSchema, KnowledgeConfigSchema, LearningConfigSchema, ConsensusConfigSchema, OtlpExportConfigSchema, ObservabilityConfigSchema, MemoryConfigSchema, CuratorConfigSchema, ArchitecturalSupervisionConfigSchema, KnowledgeApplicationConfigSchema, SkillPropagationConfigSchema, HarnessEvolutionConfigSchema, DEFAULT_HARNESS_EVOLUTION_CONFIG, SkillImproverConfigSchema, SkillsConfigSchema, SkillOptConfigSchema, DEFAULT_SKILL_OPT_CONFIG, SpecWriterConfigSchema, SlopDetectorConfigSchema, IncrementalVerifyConfigSchema, CompactionConfigSchema, PrmConfigSchema, AgentAuthorityRuleSchema, AuthorityConfigSchema, GeneralCouncilConfigSchema, CouncilConfigSchema, PrMonitorConfigSchema, PrFeedbackLoopConfigSchema, ParallelizationConfigSchema, WorktreeIsolationConfigSchema, LeanTurboConfigSchema, EpicConfigSchema, StandardTurboConfigSchema, LeanTurboStrategyConfigSchema, TurboConfigSchema, ExternalSkillCandidateSourceTypeSchema, ExternalSkillCandidateEvaluationVerdictSchema, DiscoverySourceSchema, ExternalSkillCandidateSchema, ExternalSkillsConfigSchema, DEFAULT_EXTERNAL_SKILLS_CONFIG, DEFAULT_SKILLS_CONFIG, resolveExternalSkillsConfig, DEFAULT_PR_REVIEW_RESILIENCE_CONFIG, PrReviewResilienceConfigSchema, ReviewRoutingConfigSchema, DEFAULT_REVIEW_ROUTING_CONFIG, LaneLivenessWatchdogConfigSchema, DispatchProtectionConfigSchema, DashboardConfigSchema, DEFAULT_PR_REVIEW_LEGACY_TRANSCRIPT_COMPATIBILITY, PluginConfigSchema, init_schema };