@harness-engineering/cli 2.2.0 → 2.3.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 (51) hide show
  1. package/dist/agents/skills/claude-code/harness-roadmap-pilot/SKILL.md +13 -7
  2. package/dist/agents/skills/codex/harness-roadmap-pilot/SKILL.md +13 -7
  3. package/dist/agents/skills/cursor/harness-roadmap-pilot/SKILL.md +13 -7
  4. package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/SKILL.md +13 -7
  5. package/dist/{agents-md-L4X4MOWT.js → agents-md-N7YBQPE3.js} +2 -2
  6. package/dist/{architecture-WJRIYQ45.js → architecture-PP7WERSV.js} +3 -3
  7. package/dist/{assess-project-PHC2HO3V.js → assess-project-WXFCJQTX.js} +1 -1
  8. package/dist/bin/harness-mcp.js +13 -13
  9. package/dist/bin/harness.js +22 -22
  10. package/dist/{check-phase-gate-646KY67H.js → check-phase-gate-R3KQFBAH.js} +3 -3
  11. package/dist/{chunk-GOOTYTTV.js → chunk-35FI23SO.js} +855 -428
  12. package/dist/{chunk-L2IDE7WS.js → chunk-3LPOTTPX.js} +255 -89
  13. package/dist/{chunk-K4WRQTEF.js → chunk-4DWOMGUM.js} +1661 -434
  14. package/dist/{chunk-W4AFGFFB.js → chunk-4NFV5UZO.js} +2 -2
  15. package/dist/{chunk-224XKVLP.js → chunk-5KTTKXQN.js} +1 -1
  16. package/dist/{chunk-KV7A5OZT.js → chunk-5PPV4WYY.js} +3 -3
  17. package/dist/{chunk-CPYL6LJR.js → chunk-6CHNY3NJ.js} +1 -1
  18. package/dist/{chunk-VKDBM3RX.js → chunk-7PGYJO3L.js} +3 -3
  19. package/dist/{chunk-E7W3YOXL.js → chunk-D2LZUJLP.js} +2 -2
  20. package/dist/{chunk-4HKVZO7R.js → chunk-DLBMYLYR.js} +1 -1
  21. package/dist/{chunk-YWD6WXXM.js → chunk-EJPR5VCT.js} +6 -6
  22. package/dist/{chunk-2ZURBWEV.js → chunk-GTXUUGFG.js} +3 -3
  23. package/dist/{chunk-OJMO4JBQ.js → chunk-GUIX2TMZ.js} +1 -1
  24. package/dist/{chunk-TNZYQTEE.js → chunk-KUVPSUG4.js} +1 -1
  25. package/dist/{chunk-YLTRFZAT.js → chunk-KWD6FF7M.js} +6 -6
  26. package/dist/{chunk-VJQLUS5I.js → chunk-L3CEN42B.js} +1 -1
  27. package/dist/{chunk-YLOAQZLA.js → chunk-LM4F5KBK.js} +2 -2
  28. package/dist/{chunk-JPWICLXQ.js → chunk-MKPRB4PL.js} +1 -1
  29. package/dist/{chunk-2QPHCR22.js → chunk-MT2MMBUA.js} +5 -5
  30. package/dist/{chunk-QTUPHTTK.js → chunk-NP2ZI6E3.js} +1 -1
  31. package/dist/{chunk-LO7ZLV7S.js → chunk-PW3U4YJV.js} +4 -2
  32. package/dist/{chunk-36X7TRUI.js → chunk-YEBUFRTT.js} +2 -2
  33. package/dist/{ci-workflow-TOS5X527.js → ci-workflow-GFCXFJ4G.js} +2 -2
  34. package/dist/{dist-6RT2AVYU.js → dist-I4LWG3IN.js} +23 -1
  35. package/dist/{docs-HOJMQYDZ.js → docs-UXKDKPJF.js} +3 -3
  36. package/dist/{engine-D6UYH6DB.js → engine-A63FRDLF.js} +2 -2
  37. package/dist/{entropy-LZ4IDGZR.js → entropy-IFIP4ZP4.js} +2 -2
  38. package/dist/{feedback-WV7EQVK7.js → feedback-W36DSJQA.js} +1 -1
  39. package/dist/{generate-agent-definitions-GFNXJCBY.js → generate-agent-definitions-F4YMKQLP.js} +3 -3
  40. package/dist/hooks/block-no-verify.js +19 -1
  41. package/dist/index.d.ts +15 -9
  42. package/dist/index.js +22 -22
  43. package/dist/{loader-Z23JTXIZ.js → loader-4UAOGUSS.js} +2 -2
  44. package/dist/{mcp-JDJGELGD.js → mcp-YW7PLXVQ.js} +13 -13
  45. package/dist/{performance-7ATLHTQU.js → performance-AZ5UYPOQ.js} +3 -3
  46. package/dist/{review-pipeline-COBGGXHJ.js → review-pipeline-OLQVGBWJ.js} +2 -2
  47. package/dist/{runtime-KCBNQUXK.js → runtime-GG3U5HH5.js} +2 -2
  48. package/dist/{security-MAPRIFQT.js → security-MYTRFSR7.js} +1 -1
  49. package/dist/{validate-74XTQR7Q.js → validate-QI4V4JY6.js} +3 -3
  50. package/dist/{validate-cross-check-MI5MZ7MB.js → validate-cross-check-XRSSAXJP.js} +2 -2
  51. package/package.json +4 -4
@@ -2,11 +2,11 @@ import {
2
2
  handleRunCodeReview,
3
3
  runCodeReviewDefinition,
4
4
  sortFindingsBySeverity
5
- } from "./chunk-36X7TRUI.js";
5
+ } from "./chunk-YEBUFRTT.js";
6
6
  import {
7
7
  assessProjectDefinition,
8
8
  handleAssessProject
9
- } from "./chunk-YWD6WXXM.js";
9
+ } from "./chunk-EJPR5VCT.js";
10
10
  import {
11
11
  getBusinessKnowledgeResource
12
12
  } from "./chunk-IOW3MW2K.js";
@@ -17,35 +17,35 @@ import {
17
17
  handleCreateSelfReview,
18
18
  handleRequestPeerReview,
19
19
  requestPeerReviewDefinition
20
- } from "./chunk-2ZURBWEV.js";
20
+ } from "./chunk-GTXUUGFG.js";
21
21
  import {
22
22
  getSecurityTrendsDefinition,
23
23
  handleGetSecurityTrends,
24
24
  handleRunSecurityScan,
25
25
  runSecurityScanDefinition
26
- } from "./chunk-W4AFGFFB.js";
26
+ } from "./chunk-4NFV5UZO.js";
27
27
  import {
28
28
  loadGraphStore
29
29
  } from "./chunk-KTWKW6KJ.js";
30
30
  import {
31
31
  handleValidateProject,
32
32
  validateToolDefinition
33
- } from "./chunk-VKDBM3RX.js";
33
+ } from "./chunk-7PGYJO3L.js";
34
34
  import {
35
35
  checkDependenciesDefinition,
36
36
  handleCheckDependencies
37
- } from "./chunk-YLOAQZLA.js";
37
+ } from "./chunk-LM4F5KBK.js";
38
38
  import {
39
39
  resolveProjectConfig
40
- } from "./chunk-CPYL6LJR.js";
40
+ } from "./chunk-6CHNY3NJ.js";
41
41
  import {
42
42
  checkDocsDefinition,
43
43
  handleCheckDocs
44
- } from "./chunk-2QPHCR22.js";
44
+ } from "./chunk-MT2MMBUA.js";
45
45
  import {
46
46
  detectEntropyDefinition,
47
47
  handleDetectEntropy
48
- } from "./chunk-KV7A5OZT.js";
48
+ } from "./chunk-5PPV4WYY.js";
49
49
  import {
50
50
  checkPerformanceDefinition,
51
51
  getCriticalPathsDefinition,
@@ -55,7 +55,7 @@ import {
55
55
  handleGetPerfBaselines,
56
56
  handleUpdatePerfBaselines,
57
57
  updatePerfBaselinesDefinition
58
- } from "./chunk-YLTRFZAT.js";
58
+ } from "./chunk-KWD6FF7M.js";
59
59
  import {
60
60
  resultToMcpResponse
61
61
  } from "./chunk-EPUKTTJZ.js";
@@ -67,7 +67,7 @@ import {
67
67
  } from "./chunk-27AJKSQY.js";
68
68
  import {
69
69
  resolveConfig
70
- } from "./chunk-LO7ZLV7S.js";
70
+ } from "./chunk-PW3U4YJV.js";
71
71
  import {
72
72
  GENERATED_HEADER_CLAUDE,
73
73
  GENERATED_HEADER_CODEX,
@@ -88,22 +88,26 @@ import {
88
88
  } from "./chunk-6B6UN6SG.js";
89
89
  import {
90
90
  CompactionPipeline,
91
+ ConflictError,
91
92
  DEFAULT_TOKEN_BUDGET,
92
93
  DESTRUCTIVE_BASH,
93
94
  StructuralStrategy,
94
95
  TruncationStrategy,
95
96
  checkTaint,
96
97
  computeLoadPlan,
98
+ createTrackerClient,
97
99
  detectChangeType,
98
100
  estimateTokens,
99
101
  extractLevel,
100
102
  init_dist,
103
+ loadProjectRoadmapMode,
104
+ loadTrackerClientConfigFromProject,
101
105
  loadTrackerSyncConfig,
102
106
  paginate,
103
107
  scanForInjection,
104
108
  serializeEnvelope,
105
109
  writeTaint
106
- } from "./chunk-K4WRQTEF.js";
110
+ } from "./chunk-4DWOMGUM.js";
107
111
  import {
108
112
  Err,
109
113
  Ok
@@ -708,7 +712,7 @@ ${skippedMsg}`
708
712
  async function handleInitProject(input) {
709
713
  const i = input;
710
714
  try {
711
- const { TemplateEngine } = await import("./engine-D6UYH6DB.js");
715
+ const { TemplateEngine } = await import("./engine-A63FRDLF.js");
712
716
  const engine = new TemplateEngine(resolveTemplatesDir());
713
717
  const safePath = sanitizePath(i.path);
714
718
  const detected = tryDetectFramework(engine, safePath, i);
@@ -730,7 +734,7 @@ var listPersonasDefinition = {
730
734
  inputSchema: { type: "object", properties: {} }
731
735
  };
732
736
  async function handleListPersonas() {
733
- const { listPersonas } = await import("./loader-Z23JTXIZ.js");
737
+ const { listPersonas } = await import("./loader-4UAOGUSS.js");
734
738
  const result = listPersonas(resolvePersonasDir());
735
739
  return resultToMcpResponse(result);
736
740
  }
@@ -754,10 +758,10 @@ async function handleGeneratePersonaArtifacts(input) {
754
758
  if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.name)) {
755
759
  return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.name}`)));
756
760
  }
757
- const { loadPersona } = await import("./loader-Z23JTXIZ.js");
758
- const { generateRuntime } = await import("./runtime-KCBNQUXK.js");
759
- const { generateAgentsMd } = await import("./agents-md-L4X4MOWT.js");
760
- const { generateCIWorkflow } = await import("./ci-workflow-TOS5X527.js");
761
+ const { loadPersona } = await import("./loader-4UAOGUSS.js");
762
+ const { generateRuntime } = await import("./runtime-GG3U5HH5.js");
763
+ const { generateAgentsMd } = await import("./agents-md-N7YBQPE3.js");
764
+ const { generateCIWorkflow } = await import("./ci-workflow-GFCXFJ4G.js");
761
765
  const personasDir = resolvePersonasDir();
762
766
  const filePath = path3.join(personasDir, `${input.name}.yaml`);
763
767
  if (!filePath.startsWith(personasDir)) {
@@ -812,7 +816,7 @@ async function handleRunPersona(input) {
812
816
  if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.persona)) {
813
817
  return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.persona}`)));
814
818
  }
815
- const { loadPersona } = await import("./loader-Z23JTXIZ.js");
819
+ const { loadPersona } = await import("./loader-4UAOGUSS.js");
816
820
  const { runPersona } = await import("./runner-AAEF2TXY.js");
817
821
  const { executeSkill } = await import("./skill-executor-MOCUIAYS.js");
818
822
  const personasDir = resolvePersonasDir();
@@ -1257,7 +1261,7 @@ function loadOrGenerateProfile(projectRoot) {
1257
1261
  // src/mcp/tools/event-emitter.ts
1258
1262
  async function emitSkillEvent(projectPath, event) {
1259
1263
  try {
1260
- const { emitEvent } = await import("./dist-6RT2AVYU.js");
1264
+ const { emitEvent } = await import("./dist-I4LWG3IN.js");
1261
1265
  await emitEvent(projectPath, event);
1262
1266
  } catch {
1263
1267
  }
@@ -1529,7 +1533,7 @@ async function autoSyncRoadmap(projectPath) {
1529
1533
  try {
1530
1534
  const roadmapFile = path10.join(projectPath, "docs", "roadmap.md");
1531
1535
  if (!fs9.existsSync(roadmapFile)) return;
1532
- const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-6RT2AVYU.js");
1536
+ const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-I4LWG3IN.js");
1533
1537
  const raw = fs9.readFileSync(roadmapFile, "utf-8");
1534
1538
  const parseResult = parseRoadmap(raw);
1535
1539
  if (!parseResult.ok) return;
@@ -1559,16 +1563,16 @@ async function triggerExternalSync(projectPath, roadmapFile) {
1559
1563
  console.warn("[roadmap-sync] GITHUB_TOKEN not found \u2014 external sync skipped");
1560
1564
  return;
1561
1565
  }
1562
- const { fullSync, GitHubIssuesSyncAdapter } = await import("./dist-6RT2AVYU.js");
1566
+ const { fullSync, GitHubIssuesSyncAdapter } = await import("./dist-I4LWG3IN.js");
1563
1567
  const adapter = new GitHubIssuesSyncAdapter({
1564
1568
  token,
1565
1569
  config: trackerConfig
1566
1570
  });
1567
1571
  const result = await fullSync(roadmapFile, adapter, trackerConfig);
1568
1572
  if (result.errors.length > 0) {
1569
- for (const err of result.errors) {
1573
+ for (const err2 of result.errors) {
1570
1574
  console.error(
1571
- `[roadmap-sync] External sync error for ${err.featureOrId}: ${err.error.message}`
1575
+ `[roadmap-sync] External sync error for ${err2.featureOrId}: ${err2.error.message}`
1572
1576
  );
1573
1577
  }
1574
1578
  }
@@ -1656,12 +1660,12 @@ var manageStateDefinition = {
1656
1660
  }
1657
1661
  };
1658
1662
  async function handleShow(projectPath, input) {
1659
- const { loadState } = await import("./dist-6RT2AVYU.js");
1663
+ const { loadState } = await import("./dist-I4LWG3IN.js");
1660
1664
  return resultToMcpResponse(await loadState(projectPath, input.stream, input.session));
1661
1665
  }
1662
1666
  async function handleLearn(projectPath, input) {
1663
1667
  if (!input.learning) return mcpError("Error: learning is required for learn action");
1664
- const { appendLearning } = await import("./dist-6RT2AVYU.js");
1668
+ const { appendLearning } = await import("./dist-I4LWG3IN.js");
1665
1669
  const result = await appendLearning(
1666
1670
  projectPath,
1667
1671
  input.learning,
@@ -1676,7 +1680,7 @@ async function handleLearn(projectPath, input) {
1676
1680
  async function handleFailure(projectPath, input) {
1677
1681
  if (!input.description) return mcpError("Error: description is required for failure action");
1678
1682
  if (!input.failureType) return mcpError("Error: failureType is required for failure action");
1679
- const { appendFailure } = await import("./dist-6RT2AVYU.js");
1683
+ const { appendFailure } = await import("./dist-I4LWG3IN.js");
1680
1684
  const result = await appendFailure(
1681
1685
  projectPath,
1682
1686
  input.description,
@@ -1695,19 +1699,19 @@ async function handleFailure(projectPath, input) {
1695
1699
  return resultToMcpResponse(Ok({ recorded: true }));
1696
1700
  }
1697
1701
  async function handleArchive(projectPath, input) {
1698
- const { archiveFailures } = await import("./dist-6RT2AVYU.js");
1702
+ const { archiveFailures } = await import("./dist-I4LWG3IN.js");
1699
1703
  const result = await archiveFailures(projectPath, input.stream, input.session);
1700
1704
  if (!result.ok) return resultToMcpResponse(result);
1701
1705
  return resultToMcpResponse(Ok({ archived: true }));
1702
1706
  }
1703
1707
  async function handleReset(projectPath, input) {
1704
- const { saveState, DEFAULT_STATE } = await import("./dist-6RT2AVYU.js");
1708
+ const { saveState, DEFAULT_STATE } = await import("./dist-I4LWG3IN.js");
1705
1709
  const result = await saveState(projectPath, { ...DEFAULT_STATE }, input.stream, input.session);
1706
1710
  if (!result.ok) return resultToMcpResponse(result);
1707
1711
  return resultToMcpResponse(Ok({ reset: true }));
1708
1712
  }
1709
1713
  async function handleGate(projectPath, input) {
1710
- const { runMechanicalGate } = await import("./dist-6RT2AVYU.js");
1714
+ const { runMechanicalGate } = await import("./dist-I4LWG3IN.js");
1711
1715
  const result = await runMechanicalGate(projectPath);
1712
1716
  if (result.ok) {
1713
1717
  await emitSkillEvent(projectPath, {
@@ -1727,7 +1731,7 @@ async function handleGate(projectPath, input) {
1727
1731
  }
1728
1732
  async function handleSaveHandoff(projectPath, input) {
1729
1733
  if (!input.handoff) return mcpError("Error: handoff is required for save-handoff action");
1730
- const { saveHandoff } = await import("./dist-6RT2AVYU.js");
1734
+ const { saveHandoff } = await import("./dist-I4LWG3IN.js");
1731
1735
  const result = await saveHandoff(
1732
1736
  projectPath,
1733
1737
  input.handoff,
@@ -1749,7 +1753,7 @@ async function handleSaveHandoff(projectPath, input) {
1749
1753
  return resultToMcpResponse(Ok({ saved: true }));
1750
1754
  }
1751
1755
  async function handleLoadHandoff(projectPath, input) {
1752
- const { loadHandoff } = await import("./dist-6RT2AVYU.js");
1756
+ const { loadHandoff } = await import("./dist-I4LWG3IN.js");
1753
1757
  return resultToMcpResponse(await loadHandoff(projectPath, input.stream, input.session));
1754
1758
  }
1755
1759
  async function handleAppendEntry(projectPath, input) {
@@ -1757,7 +1761,7 @@ async function handleAppendEntry(projectPath, input) {
1757
1761
  if (!input.authorSkill) return mcpError("Error: authorSkill is required for append_entry action");
1758
1762
  if (!input.content) return mcpError("Error: content is required for append_entry action");
1759
1763
  if (input.session) {
1760
- const { appendSessionEntry } = await import("./dist-6RT2AVYU.js");
1764
+ const { appendSessionEntry } = await import("./dist-I4LWG3IN.js");
1761
1765
  const result = await appendSessionEntry(
1762
1766
  projectPath,
1763
1767
  input.session,
@@ -1770,7 +1774,7 @@ async function handleAppendEntry(projectPath, input) {
1770
1774
  if (input.section !== "decisions") {
1771
1775
  return mcpError("Error: session is required for non-decisions sections");
1772
1776
  }
1773
- const { loadState, saveState } = await import("./dist-6RT2AVYU.js");
1777
+ const { loadState, saveState } = await import("./dist-I4LWG3IN.js");
1774
1778
  const lr = await loadState(projectPath, input.stream);
1775
1779
  if (!lr.ok) return resultToMcpResponse(lr);
1776
1780
  lr.value.decisions.push({
@@ -1788,7 +1792,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
1788
1792
  if (!input.entryId) return mcpError("Error: entryId is required for update_entry_status action");
1789
1793
  if (!input.newStatus)
1790
1794
  return mcpError("Error: newStatus is required for update_entry_status action");
1791
- const { updateSessionEntryStatus } = await import("./dist-6RT2AVYU.js");
1795
+ const { updateSessionEntryStatus } = await import("./dist-I4LWG3IN.js");
1792
1796
  const result = await updateSessionEntryStatus(
1793
1797
  projectPath,
1794
1798
  input.session,
@@ -1801,7 +1805,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
1801
1805
  async function handleReadSection(projectPath, input) {
1802
1806
  if (!input.session) return mcpError("Error: session is required for read_section action");
1803
1807
  if (!input.section) return mcpError("Error: section is required for read_section action");
1804
- const { readSessionSection } = await import("./dist-6RT2AVYU.js");
1808
+ const { readSessionSection } = await import("./dist-I4LWG3IN.js");
1805
1809
  const result = await readSessionSection(
1806
1810
  projectPath,
1807
1811
  input.session,
@@ -1811,13 +1815,13 @@ async function handleReadSection(projectPath, input) {
1811
1815
  }
1812
1816
  async function handleReadSections(projectPath, input) {
1813
1817
  if (!input.session) return mcpError("Error: session is required for read_sections action");
1814
- const { readSessionSections } = await import("./dist-6RT2AVYU.js");
1818
+ const { readSessionSections } = await import("./dist-I4LWG3IN.js");
1815
1819
  const result = await readSessionSections(projectPath, input.session);
1816
1820
  return resultToMcpResponse(result);
1817
1821
  }
1818
1822
  async function handleArchiveSession(projectPath, input) {
1819
1823
  if (!input.session) return mcpError("Error: session is required for archive_session action");
1820
- const { archiveSession } = await import("./dist-6RT2AVYU.js");
1824
+ const { archiveSession } = await import("./dist-I4LWG3IN.js");
1821
1825
  const result = await archiveSession(projectPath, input.session);
1822
1826
  if (!result.ok) return resultToMcpResponse(result);
1823
1827
  await autoSyncRoadmap(projectPath);
@@ -1897,7 +1901,7 @@ var listStreamsDefinition = {
1897
1901
  };
1898
1902
  async function handleListStreams(input) {
1899
1903
  try {
1900
- const { listStreams, loadStreamIndex } = await import("./dist-6RT2AVYU.js");
1904
+ const { listStreams, loadStreamIndex } = await import("./dist-I4LWG3IN.js");
1901
1905
  const projectPath = sanitizePath(input.path);
1902
1906
  const indexResult = await loadStreamIndex(projectPath);
1903
1907
  const streamsResult = await listStreams(projectPath);
@@ -1935,7 +1939,7 @@ var checkPhaseGateDefinition = {
1935
1939
  };
1936
1940
  async function handleCheckPhaseGate(input) {
1937
1941
  try {
1938
- const { runCheckPhaseGate } = await import("./check-phase-gate-646KY67H.js");
1942
+ const { runCheckPhaseGate } = await import("./check-phase-gate-R3KQFBAH.js");
1939
1943
  const result = await runCheckPhaseGate({ cwd: sanitizePath(input.path) });
1940
1944
  if (result.ok) {
1941
1945
  return { content: [{ type: "text", text: JSON.stringify(result.value) }] };
@@ -1991,7 +1995,7 @@ async function handleValidateCrossCheck(input) {
1991
1995
  };
1992
1996
  }
1993
1997
  try {
1994
- const { runCrossCheck } = await import("./validate-cross-check-MI5MZ7MB.js");
1998
+ const { runCrossCheck } = await import("./validate-cross-check-XRSSAXJP.js");
1995
1999
  const specsDir = path11.resolve(projectPath, input.specsDir ?? "docs/specs");
1996
2000
  if (!specsDir.startsWith(projectPath)) {
1997
2001
  return {
@@ -2758,7 +2762,7 @@ async function handleGenerateSlashCommands(input) {
2758
2762
  // src/mcp/resources/state.ts
2759
2763
  async function getStateResource(projectRoot) {
2760
2764
  try {
2761
- const { loadState, migrateToStreams } = await import("./dist-6RT2AVYU.js");
2765
+ const { loadState, migrateToStreams } = await import("./dist-I4LWG3IN.js");
2762
2766
  await migrateToStreams(projectRoot);
2763
2767
  const result = await loadState(projectRoot);
2764
2768
  if (result.ok) {
@@ -3778,7 +3782,7 @@ var generateAgentDefinitionsDefinition = {
3778
3782
  }
3779
3783
  };
3780
3784
  async function handleGenerateAgentDefinitions(input) {
3781
- const { generateAgentDefinitions } = await import("./generate-agent-definitions-GFNXJCBY.js");
3785
+ const { generateAgentDefinitions } = await import("./generate-agent-definitions-F4YMKQLP.js");
3782
3786
  const platforms = input.platform === "all" || !input.platform ? ["claude-code", "gemini-cli"] : [input.platform];
3783
3787
  const results = generateAgentDefinitions({
3784
3788
  platforms: [...platforms],
@@ -3789,8 +3793,151 @@ async function handleGenerateAgentDefinitions(input) {
3789
3793
  }
3790
3794
 
3791
3795
  // src/mcp/tools/roadmap.ts
3796
+ init_dist();
3792
3797
  import * as fs14 from "fs";
3793
3798
  import * as path17 from "path";
3799
+
3800
+ // src/mcp/tools/roadmap-file-less.ts
3801
+ init_dist();
3802
+ var ok = (text) => ({ content: [{ type: "text", text }] });
3803
+ var err = (text) => ({ content: [{ type: "text", text }], isError: true });
3804
+ async function handleManageRoadmapFileLess(input, client) {
3805
+ switch (input.action) {
3806
+ case "show":
3807
+ return handleShow2(input, client);
3808
+ case "query":
3809
+ return handleQuery(input, client);
3810
+ case "add":
3811
+ return handleAdd(input, client);
3812
+ case "update":
3813
+ return handleUpdate(input, client);
3814
+ case "remove":
3815
+ return handleRemove(input, client);
3816
+ case "sync":
3817
+ return handleSync();
3818
+ default:
3819
+ return err(`Error: unknown action`);
3820
+ }
3821
+ }
3822
+ async function handleShow2(input, client) {
3823
+ const r = await client.fetchAll();
3824
+ if (!r.ok) return err(`Error: ${r.error.message}`);
3825
+ let features = r.value.features;
3826
+ if (input.milestone) {
3827
+ features = features.filter((f) => f.milestone === input.milestone);
3828
+ }
3829
+ if (input.status) {
3830
+ features = features.filter((f) => f.status === input.status);
3831
+ }
3832
+ return ok(renderRoadmap(features));
3833
+ }
3834
+ async function handleQuery(input, client) {
3835
+ const filter = input.filter;
3836
+ if (!filter) return err("Error: query requires a filter");
3837
+ const r = await client.fetchAll();
3838
+ if (!r.ok) return err(`Error: ${r.error.message}`);
3839
+ let features = r.value.features;
3840
+ if (filter.startsWith("milestone:")) {
3841
+ const ms = filter.slice("milestone:".length);
3842
+ features = features.filter((f) => f.milestone === ms);
3843
+ } else if (filter === "blocked") {
3844
+ features = features.filter((f) => f.blockedBy.length > 0);
3845
+ } else {
3846
+ features = features.filter((f) => f.status === filter);
3847
+ }
3848
+ return ok(renderRoadmap(features));
3849
+ }
3850
+ async function handleAdd(input, client) {
3851
+ if (!input.feature) return err("Error: add requires feature name");
3852
+ const newFeature = {
3853
+ name: input.feature,
3854
+ summary: input.summary ?? input.feature,
3855
+ status: input.status ?? "planned"
3856
+ };
3857
+ if (input.spec !== void 0) newFeature.spec = input.spec;
3858
+ if (input.plans !== void 0) newFeature.plans = input.plans;
3859
+ if (input.blocked_by !== void 0) newFeature.blockedBy = input.blocked_by;
3860
+ if (input.milestone !== void 0) newFeature.milestone = input.milestone;
3861
+ if (input.assignee !== void 0) newFeature.assignee = input.assignee;
3862
+ const r = await client.create(newFeature);
3863
+ if (!r.ok) return err(`Error: ${r.error.message}`);
3864
+ return ok(`Added feature: ${r.value.name} (${r.value.externalId})`);
3865
+ }
3866
+ async function handleUpdate(input, client) {
3867
+ if (!input.feature) return err("Error: update requires feature name");
3868
+ const found = await resolveFeatureByName(client, input.feature);
3869
+ if (!found.ok) return err(found.error);
3870
+ const patch = {};
3871
+ if (input.status !== void 0) patch.status = input.status;
3872
+ if (input.summary !== void 0) patch.summary = input.summary;
3873
+ if (input.spec !== void 0) patch.spec = input.spec;
3874
+ if (input.plans !== void 0) patch.plans = input.plans;
3875
+ if (input.blocked_by !== void 0) patch.blockedBy = input.blocked_by;
3876
+ if (input.assignee !== void 0) patch.assignee = input.assignee;
3877
+ const r = await client.update(found.value.externalId, patch);
3878
+ if (!r.ok) {
3879
+ if (r.error instanceof ConflictError) {
3880
+ return err(`Error: conflict on ${r.error.externalId}: ${JSON.stringify(r.error.diff)}`);
3881
+ }
3882
+ return err(`Error: ${r.error.message}`);
3883
+ }
3884
+ return ok(
3885
+ `Updated feature: ${r.value.name}
3886
+
3887
+ Note: cascade dropped \u2014 file-less mode does not run syncRoadmap.`
3888
+ );
3889
+ }
3890
+ async function handleRemove(input, client) {
3891
+ if (!input.feature) return err("Error: remove requires feature name");
3892
+ const found = await resolveFeatureByName(client, input.feature);
3893
+ if (!found.ok) return err(found.error);
3894
+ const r = await client.update(found.value.externalId, { status: "done" });
3895
+ if (!r.ok) {
3896
+ if (r.error instanceof ConflictError) {
3897
+ return err(`Error: conflict on ${r.error.externalId}: ${JSON.stringify(r.error.diff)}`);
3898
+ }
3899
+ return err(`Error: ${r.error.message}`);
3900
+ }
3901
+ client.appendHistory(found.value.externalId, {
3902
+ type: "completed",
3903
+ at: (/* @__PURE__ */ new Date()).toISOString(),
3904
+ actor: "manage_roadmap",
3905
+ details: {
3906
+ note: "removed via manage_roadmap (file-less translates remove to complete)"
3907
+ }
3908
+ }).catch(() => {
3909
+ });
3910
+ return ok(`Removed feature: ${found.value.name} (translated to status:done in file-less mode)`);
3911
+ }
3912
+ function handleSync() {
3913
+ return ok("Roadmap is up to date (file-less mode; tracker is canonical).");
3914
+ }
3915
+ async function resolveFeatureByName(client, name) {
3916
+ const r = await client.fetchAll();
3917
+ if (!r.ok) return { ok: false, error: `Error: ${r.error.message}` };
3918
+ const f = r.value.features.find((x) => x.name === name);
3919
+ if (!f) return { ok: false, error: `Error: feature "${name}" not found` };
3920
+ return { ok: true, value: f };
3921
+ }
3922
+ function renderRoadmap(features) {
3923
+ if (features.length === 0) return "(no features)";
3924
+ const lines = [];
3925
+ for (const f of features) {
3926
+ const parts = [
3927
+ `- ${f.name}`,
3928
+ `status: ${f.status}`,
3929
+ f.milestone ? `milestone: ${f.milestone}` : null,
3930
+ f.priority ? `priority: ${f.priority}` : null,
3931
+ f.assignee ? `assignee: ${f.assignee}` : null,
3932
+ f.externalId ? `externalId: ${f.externalId}` : null
3933
+ ].filter((x) => x !== null);
3934
+ lines.push(parts.join(" | "));
3935
+ if (f.summary) lines.push(` ${f.summary}`);
3936
+ }
3937
+ return lines.join("\n");
3938
+ }
3939
+
3940
+ // src/mcp/tools/roadmap.ts
3794
3941
  var manageRoadmapDefinition = {
3795
3942
  name: "manage_roadmap",
3796
3943
  description: "Manage the project roadmap: show, add, update, remove, sync features, or query by filter. Reads and writes docs/roadmap.md.",
@@ -3876,7 +4023,7 @@ function roadmapNotFoundError() {
3876
4023
  isError: true
3877
4024
  };
3878
4025
  }
3879
- function handleShow2(projectPath, input, deps) {
4026
+ function handleShow3(projectPath, input, deps) {
3880
4027
  const { parseRoadmap, Ok: Ok2 } = deps;
3881
4028
  const raw = readRoadmapFile(projectPath);
3882
4029
  if (raw === null) return roadmapNotFoundError();
@@ -3936,7 +4083,7 @@ function buildFeatureFromInput(input) {
3936
4083
  updatedAt: null
3937
4084
  };
3938
4085
  }
3939
- function handleAdd(projectPath, input, deps) {
4086
+ function handleAdd2(projectPath, input, deps) {
3940
4087
  const { parseRoadmap, serializeRoadmap, Ok: Ok2 } = deps;
3941
4088
  const validationError = validateAddFields(input);
3942
4089
  if (validationError) return validationError;
@@ -3959,7 +4106,7 @@ function handleAdd(projectPath, input, deps) {
3959
4106
  writeRoadmapFile(projectPath, serializeRoadmap(roadmap));
3960
4107
  return resultToMcpResponse(Ok2(roadmap));
3961
4108
  }
3962
- function handleUpdate(projectPath, input, deps) {
4109
+ function handleUpdate2(projectPath, input, deps) {
3963
4110
  const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges, Ok: Ok2 } = deps;
3964
4111
  if (!input.feature) {
3965
4112
  return {
@@ -4002,7 +4149,7 @@ function handleUpdate(projectPath, input, deps) {
4002
4149
  writeRoadmapFile(projectPath, serializeRoadmap(roadmap));
4003
4150
  return resultToMcpResponse(Ok2(roadmap));
4004
4151
  }
4005
- function handleRemove(projectPath, input, deps) {
4152
+ function handleRemove2(projectPath, input, deps) {
4006
4153
  const { parseRoadmap, serializeRoadmap, Ok: Ok2 } = deps;
4007
4154
  if (!input.feature) {
4008
4155
  return {
@@ -4034,7 +4181,7 @@ function handleRemove(projectPath, input, deps) {
4034
4181
  writeRoadmapFile(projectPath, serializeRoadmap(roadmap));
4035
4182
  return resultToMcpResponse(Ok2(roadmap));
4036
4183
  }
4037
- function handleQuery(projectPath, input, deps) {
4184
+ function handleQuery2(projectPath, input, deps) {
4038
4185
  const { parseRoadmap, Ok: Ok2 } = deps;
4039
4186
  if (!input.filter) {
4040
4187
  return {
@@ -4060,7 +4207,7 @@ function handleQuery(projectPath, input, deps) {
4060
4207
  }
4061
4208
  return resultToMcpResponse(Ok2(filtered));
4062
4209
  }
4063
- function handleSync(projectPath, input, deps) {
4210
+ function handleSync2(projectPath, input, deps) {
4064
4211
  const { parseRoadmap, serializeRoadmap, syncRoadmap, Ok: Ok2 } = deps;
4065
4212
  const raw = readRoadmapFile(projectPath);
4066
4213
  if (raw === null) return roadmapNotFoundError();
@@ -4088,17 +4235,17 @@ var readOnlyActions = /* @__PURE__ */ new Set(["show", "query"]);
4088
4235
  function dispatchAction(action, projectPath, input, deps) {
4089
4236
  switch (action) {
4090
4237
  case "show":
4091
- return handleShow2(projectPath, input, deps);
4238
+ return handleShow3(projectPath, input, deps);
4092
4239
  case "add":
4093
- return handleAdd(projectPath, input, deps);
4240
+ return handleAdd2(projectPath, input, deps);
4094
4241
  case "update":
4095
- return handleUpdate(projectPath, input, deps);
4242
+ return handleUpdate2(projectPath, input, deps);
4096
4243
  case "remove":
4097
- return handleRemove(projectPath, input, deps);
4244
+ return handleRemove2(projectPath, input, deps);
4098
4245
  case "query":
4099
- return handleQuery(projectPath, input, deps);
4246
+ return handleQuery2(projectPath, input, deps);
4100
4247
  case "sync":
4101
- return handleSync(projectPath, input, deps);
4248
+ return handleSync2(projectPath, input, deps);
4102
4249
  default:
4103
4250
  return { content: [{ type: "text", text: `Error: unknown action` }], isError: true };
4104
4251
  }
@@ -4109,10 +4256,29 @@ function shouldTriggerExternalSync(input, response) {
4109
4256
  return true;
4110
4257
  }
4111
4258
  async function handleManageRoadmap(input) {
4259
+ const projectPathPre = sanitizePath(input.path);
4260
+ const mode = loadProjectRoadmapMode(projectPathPre);
4261
+ if (mode === "file-less") {
4262
+ const trackerCfg = loadTrackerClientConfigFromProject(projectPathPre);
4263
+ if (!trackerCfg.ok) {
4264
+ return {
4265
+ content: [{ type: "text", text: `Error: ${trackerCfg.error.message}` }],
4266
+ isError: true
4267
+ };
4268
+ }
4269
+ const clientResult = createTrackerClient(trackerCfg.value);
4270
+ if (!clientResult.ok) {
4271
+ return {
4272
+ content: [{ type: "text", text: `Error: ${clientResult.error.message}` }],
4273
+ isError: true
4274
+ };
4275
+ }
4276
+ return handleManageRoadmapFileLess(input, clientResult.value);
4277
+ }
4112
4278
  try {
4113
- const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges, assignFeature } = await import("./dist-6RT2AVYU.js");
4279
+ const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges, assignFeature } = await import("./dist-I4LWG3IN.js");
4114
4280
  const { Ok: Ok2 } = await import("./dist-3EWNRFFQ.js");
4115
- const projectPath = sanitizePath(input.path);
4281
+ const projectPath = projectPathPre;
4116
4282
  const deps = {
4117
4283
  parseRoadmap,
4118
4284
  serializeRoadmap,
@@ -4549,7 +4715,7 @@ async function handleTransition(validInput, projectPath, id) {
4549
4715
  const transition = transitionResult.data;
4550
4716
  const prompt = renderTransition(transition);
4551
4717
  try {
4552
- const { saveHandoff } = await import("./dist-6RT2AVYU.js");
4718
+ const { saveHandoff } = await import("./dist-I4LWG3IN.js");
4553
4719
  await saveHandoff(
4554
4720
  projectPath,
4555
4721
  {
@@ -4630,7 +4796,7 @@ async function handleEmitInteraction(input) {
4630
4796
  }
4631
4797
  async function recordInteraction(projectPath, id, type, decision, stream) {
4632
4798
  try {
4633
- const { loadState, saveState } = await import("./dist-6RT2AVYU.js");
4799
+ const { loadState, saveState } = await import("./dist-I4LWG3IN.js");
4634
4800
  const stateResult = await loadState(projectPath, stream);
4635
4801
  if (stateResult.ok) {
4636
4802
  const state = stateResult.value;
@@ -4791,10 +4957,10 @@ async function handleGatherContext(input) {
4791
4957
  input.include ?? ["state", "learnings", "handoff", "graph", "validation", "businessKnowledge"]
4792
4958
  );
4793
4959
  const errors = [];
4794
- const statePromise = includeSet.has("state") ? import("./dist-6RT2AVYU.js").then(
4960
+ const statePromise = includeSet.has("state") ? import("./dist-I4LWG3IN.js").then(
4795
4961
  (core) => core.loadState(projectPath, void 0, input.session)
4796
4962
  ) : Promise.resolve(null);
4797
- const learningsPromise = includeSet.has("learnings") ? import("./dist-6RT2AVYU.js").then(
4963
+ const learningsPromise = includeSet.has("learnings") ? import("./dist-I4LWG3IN.js").then(
4798
4964
  (core) => core.loadBudgetedLearnings(projectPath, {
4799
4965
  intent: input.intent,
4800
4966
  tokenBudget: input.learningsBudget ?? 1e3,
@@ -4803,7 +4969,7 @@ async function handleGatherContext(input) {
4803
4969
  ...input.depth !== void 0 && { depth: input.depth }
4804
4970
  })
4805
4971
  ) : Promise.resolve(null);
4806
- const handoffPromise = includeSet.has("handoff") ? import("./dist-6RT2AVYU.js").then(
4972
+ const handoffPromise = includeSet.has("handoff") ? import("./dist-I4LWG3IN.js").then(
4807
4973
  (core) => core.loadHandoff(projectPath, void 0, input.session)
4808
4974
  ) : Promise.resolve(null);
4809
4975
  const graphPromise = includeSet.has("graph") ? (async () => {
@@ -4847,11 +5013,11 @@ async function handleGatherContext(input) {
4847
5013
  context: contextBlocks
4848
5014
  };
4849
5015
  })() : Promise.resolve(null);
4850
- const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-6RT2AVYU.js").then(
5016
+ const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-I4LWG3IN.js").then(
4851
5017
  (core) => core.readSessionSections(projectPath, input.session)
4852
5018
  ) : Promise.resolve(null);
4853
5019
  const shouldIncludeEvents = input.includeEvents !== void 0 ? input.includeEvents : includeSet.has("events") || !!input.session && !input.include;
4854
- const eventsPromise = shouldIncludeEvents ? import("./dist-6RT2AVYU.js").then(async (core) => {
5020
+ const eventsPromise = shouldIncludeEvents ? import("./dist-I4LWG3IN.js").then(async (core) => {
4855
5021
  const result = await core.loadEvents(projectPath, {
4856
5022
  session: input.session
4857
5023
  });
@@ -4859,7 +5025,7 @@ async function handleGatherContext(input) {
4859
5025
  return core.formatEventTimeline(result.value);
4860
5026
  }) : Promise.resolve(null);
4861
5027
  const validationPromise = includeSet.has("validation") ? (async () => {
4862
- const { handleValidateProject: handleValidateProject2 } = await import("./validate-74XTQR7Q.js");
5028
+ const { handleValidateProject: handleValidateProject2 } = await import("./validate-QI4V4JY6.js");
4863
5029
  const result = await handleValidateProject2({ path: projectPath });
4864
5030
  const first = result.content[0];
4865
5031
  return first ? JSON.parse(first.text) : null;
@@ -4962,7 +5128,7 @@ async function handleGatherContext(input) {
4962
5128
  };
4963
5129
  if (input.session) {
4964
5130
  try {
4965
- const core = await import("./dist-6RT2AVYU.js");
5131
+ const core = await import("./dist-I4LWG3IN.js");
4966
5132
  core.updateSessionIndex(
4967
5133
  projectPath,
4968
5134
  input.session,
@@ -5114,7 +5280,7 @@ async function handleReviewChanges(input) {
5114
5280
  }
5115
5281
  }
5116
5282
  async function runQuickReview(projectPath, diff, diffLines, downgraded, offset, limit) {
5117
- const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-WV7EQVK7.js");
5283
+ const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-W36DSJQA.js");
5118
5284
  const result = await handleAnalyzeDiff2({ diff, path: projectPath });
5119
5285
  const firstContent = result.content[0];
5120
5286
  if (!firstContent) throw new Error("Empty analyze_diff response");
@@ -5149,7 +5315,7 @@ function extractFileCount(diffParsed) {
5149
5315
  return files?.length ?? 0;
5150
5316
  }
5151
5317
  async function runStandardReview(projectPath, diff, diffLines, downgraded, offset, limit) {
5152
- const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-WV7EQVK7.js");
5318
+ const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-W36DSJQA.js");
5153
5319
  const [diffResult, reviewResult] = await Promise.all([
5154
5320
  handleAnalyzeDiff2({ diff, path: projectPath }),
5155
5321
  handleCreateSelfReview2({ path: projectPath, diff })
@@ -5184,7 +5350,7 @@ async function runStandardReview(projectPath, diff, diffLines, downgraded, offse
5184
5350
  };
5185
5351
  }
5186
5352
  async function runDeepReview(projectPath, diff, diffLines, _downgraded, offset, limit) {
5187
- const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-COBGGXHJ.js");
5353
+ const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-OLQVGBWJ.js");
5188
5354
  const result = await handleRunCodeReview2({
5189
5355
  path: projectPath,
5190
5356
  diff,
@@ -5478,7 +5644,7 @@ async function handleDetectStaleConstraints(input) {
5478
5644
  ]
5479
5645
  };
5480
5646
  }
5481
- const { detectStaleConstraints } = await import("./dist-6RT2AVYU.js");
5647
+ const { detectStaleConstraints } = await import("./dist-I4LWG3IN.js");
5482
5648
  const result = detectStaleConstraints(
5483
5649
  store,
5484
5650
  windowDays,
@@ -5598,10 +5764,10 @@ function countCriticalFindings(securityData) {
5598
5764
  return findings.filter((f) => f.severity === "error").length;
5599
5765
  }
5600
5766
  async function runHealthChecks(projectPath) {
5601
- const { handleAssessProject: handleAssessProject2 } = await import("./assess-project-PHC2HO3V.js");
5602
- const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-WJRIYQ45.js");
5603
- const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-LZ4IDGZR.js");
5604
- const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-MAPRIFQT.js");
5767
+ const { handleAssessProject: handleAssessProject2 } = await import("./assess-project-WXFCJQTX.js");
5768
+ const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-PP7WERSV.js");
5769
+ const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-IFIP4ZP4.js");
5770
+ const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-MYTRFSR7.js");
5605
5771
  const [assessResult, depsResult, entropyResult, securityResult] = await Promise.all([
5606
5772
  handleAssessProject2({
5607
5773
  path: projectPath,
@@ -6442,7 +6608,7 @@ async function handleGetDecayTrends(input) {
6442
6608
  };
6443
6609
  }
6444
6610
  try {
6445
- const core = await import("./dist-6RT2AVYU.js");
6611
+ const core = await import("./dist-I4LWG3IN.js");
6446
6612
  const { TimelineManager } = core;
6447
6613
  const manager = new TimelineManager(projectPath);
6448
6614
  const timeline = manager.load();
@@ -6577,7 +6743,7 @@ async function handleCodeOutline(input) {
6577
6743
  };
6578
6744
  }
6579
6745
  try {
6580
- const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-6RT2AVYU.js");
6746
+ const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-I4LWG3IN.js");
6581
6747
  const { stat } = await import("fs/promises");
6582
6748
  const stats = await stat(targetPath).catch(() => null);
6583
6749
  if (stats?.isFile()) {
@@ -6596,7 +6762,7 @@ async function handleCodeOutline(input) {
6596
6762
  })
6597
6763
  );
6598
6764
  fileStats.sort((a, b) => b.mtimeMs - a.mtimeMs);
6599
- const { paginate: paginate2 } = await import("./dist-6RT2AVYU.js");
6765
+ const { paginate: paginate2 } = await import("./dist-I4LWG3IN.js");
6600
6766
  const paged = paginate2(fileStats, input.offset ?? 0, input.limit ?? 30);
6601
6767
  const results = [];
6602
6768
  for (const entry of paged.items) {
@@ -6669,7 +6835,7 @@ async function handleCodeSearch(input) {
6669
6835
  };
6670
6836
  }
6671
6837
  try {
6672
- const { searchSymbols } = await import("./dist-6RT2AVYU.js");
6838
+ const { searchSymbols } = await import("./dist-I4LWG3IN.js");
6673
6839
  const result = await searchSymbols(input.query, directory, input.glob);
6674
6840
  const lines = [`Search: "${result.query}" \u2014 ${result.matches.length} matches`];
6675
6841
  for (const match of result.matches) {
@@ -6738,7 +6904,7 @@ async function handleCodeUnfold(input) {
6738
6904
  }
6739
6905
  try {
6740
6906
  if (input.symbol) {
6741
- const { unfoldSymbol } = await import("./dist-6RT2AVYU.js");
6907
+ const { unfoldSymbol } = await import("./dist-I4LWG3IN.js");
6742
6908
  const result = await unfoldSymbol(filePath, input.symbol);
6743
6909
  const header = result.warning ? `${result.file}:${result.startLine}-${result.endLine} ${result.warning}
6744
6910
  ` : `${result.file}:${result.startLine}-${result.endLine}
@@ -6746,7 +6912,7 @@ async function handleCodeUnfold(input) {
6746
6912
  return { content: [{ type: "text", text: header + result.content }] };
6747
6913
  }
6748
6914
  if (input.startLine != null && input.endLine != null) {
6749
- const { unfoldRange } = await import("./dist-6RT2AVYU.js");
6915
+ const { unfoldRange } = await import("./dist-I4LWG3IN.js");
6750
6916
  const result = await unfoldRange(filePath, input.startLine, input.endLine);
6751
6917
  const header = `${result.file}:${result.startLine}-${result.endLine}
6752
6918
  `;
@@ -6931,7 +7097,7 @@ async function handlePredictFailures(input) {
6931
7097
  };
6932
7098
  }
6933
7099
  try {
6934
- const core = await import("./dist-6RT2AVYU.js");
7100
+ const core = await import("./dist-I4LWG3IN.js");
6935
7101
  const { TimelineManager, PredictionEngine, SpecImpactEstimator } = core;
6936
7102
  const manager = new TimelineManager(projectPath);
6937
7103
  const includeRoadmap = input.includeRoadmap !== false;
@@ -7646,8 +7812,8 @@ function createAdviseSkillsCommand() {
7646
7812
  } else {
7647
7813
  logger.info(formatOutput(featureName, result, skillsMdPath, totalSkills));
7648
7814
  }
7649
- } catch (err) {
7650
- logger.error(err.message);
7815
+ } catch (err2) {
7816
+ logger.error(err2.message);
7651
7817
  process.exit(1);
7652
7818
  }
7653
7819
  });
@@ -7719,9 +7885,9 @@ async function handleAdviseSkills(input) {
7719
7885
  return {
7720
7886
  content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
7721
7887
  };
7722
- } catch (err) {
7888
+ } catch (err2) {
7723
7889
  return {
7724
- content: [{ type: "text", text: JSON.stringify({ error: err.message }) }]
7890
+ content: [{ type: "text", text: JSON.stringify({ error: err2.message }) }]
7725
7891
  };
7726
7892
  }
7727
7893
  }
@@ -8040,7 +8206,7 @@ async function handleDetectConstraintEmergence(input) {
8040
8206
  }
8041
8207
  const nodePath = await import("path");
8042
8208
  const historyPath = nodePath.resolve(projectPath, ".harness/arch/violation-history.json");
8043
- const { ViolationHistoryManager, detectEmergentConstraints } = await import("./dist-6RT2AVYU.js");
8209
+ const { ViolationHistoryManager, detectEmergentConstraints } = await import("./dist-I4LWG3IN.js");
8044
8210
  const manager = new ViolationHistoryManager(historyPath);
8045
8211
  const history = manager.load();
8046
8212
  const options = { windowWeeks, minOccurrences };
@@ -8128,7 +8294,7 @@ async function handleRunCIChecks(input) {
8128
8294
  };
8129
8295
  }
8130
8296
  try {
8131
- const { runCIChecks } = await import("./dist-6RT2AVYU.js");
8297
+ const { runCIChecks } = await import("./dist-I4LWG3IN.js");
8132
8298
  const skip = input.checks ? VALID_CHECKS.filter((c) => !input.checks.includes(c)) : [];
8133
8299
  const result = await runCIChecks({
8134
8300
  projectRoot: projectPath,
@@ -8190,7 +8356,7 @@ async function handleGenerateBlueprint(input) {
8190
8356
  };
8191
8357
  }
8192
8358
  try {
8193
- const { ProjectScanner } = await import("./dist-6RT2AVYU.js");
8359
+ const { ProjectScanner } = await import("./dist-I4LWG3IN.js");
8194
8360
  const scanner = new ProjectScanner(projectPath);
8195
8361
  const data = await scanner.scan();
8196
8362
  return {
@@ -8436,7 +8602,7 @@ async function appendUpdateNotification(result, resolvedRoot) {
8436
8602
  shouldRunCheck,
8437
8603
  readCheckState,
8438
8604
  spawnBackgroundCheck
8439
- } = await import("./dist-6RT2AVYU.js");
8605
+ } = await import("./dist-I4LWG3IN.js");
8440
8606
  const { CLI_VERSION } = await import("./version-CUI434OP.js");
8441
8607
  const configInterval = readConfigInterval(resolvedRoot);
8442
8608
  const DEFAULT_INTERVAL = 864e5;