@harness-engineering/cli 2.1.0 → 2.1.1

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 (45) hide show
  1. package/dist/{agents-md-XCAWON2D.js → agents-md-L4X4MOWT.js} +2 -2
  2. package/dist/{architecture-KERHEEQZ.js → architecture-WJRIYQ45.js} +3 -3
  3. package/dist/{assess-project-NPYA3UVI.js → assess-project-PHC2HO3V.js} +1 -1
  4. package/dist/bin/harness-mcp.js +13 -13
  5. package/dist/bin/harness.js +22 -22
  6. package/dist/{check-phase-gate-GE5ALEEU.js → check-phase-gate-646KY67H.js} +3 -3
  7. package/dist/{chunk-IIX5OJES.js → chunk-224XKVLP.js} +1 -1
  8. package/dist/{chunk-UWIOBHZL.js → chunk-2QPHCR22.js} +5 -5
  9. package/dist/{chunk-URLDPALI.js → chunk-2ZURBWEV.js} +3 -3
  10. package/dist/{chunk-EFA4OEEN.js → chunk-36X7TRUI.js} +2 -2
  11. package/dist/{chunk-HBQ3BK2E.js → chunk-4HKVZO7R.js} +1 -1
  12. package/dist/{chunk-T7MNLCUD.js → chunk-7XQYOXTB.js} +74 -72
  13. package/dist/{chunk-OXFFN3FD.js → chunk-CPYL6LJR.js} +1 -1
  14. package/dist/{chunk-WW6AUOA3.js → chunk-E7W3YOXL.js} +2 -2
  15. package/dist/{chunk-FQAJAM54.js → chunk-FNCJ3UCU.js} +26 -27
  16. package/dist/{chunk-D5FE4L2O.js → chunk-JPWICLXQ.js} +1 -1
  17. package/dist/{chunk-MAFI6UWT.js → chunk-K4WRQTEF.js} +137 -39
  18. package/dist/{chunk-M4C3ZIGL.js → chunk-KV7A5OZT.js} +3 -3
  19. package/dist/{chunk-4FVHBBPY.js → chunk-LO7ZLV7S.js} +1 -1
  20. package/dist/{chunk-PCX4GPNT.js → chunk-QTUPHTTK.js} +1 -1
  21. package/dist/{chunk-GCYGGQFM.js → chunk-SVC7THFK.js} +1 -1
  22. package/dist/{chunk-AEFZJ543.js → chunk-TNZYQTEE.js} +1 -1
  23. package/dist/{chunk-DRD7LLFC.js → chunk-VJQLUS5I.js} +1 -1
  24. package/dist/{chunk-LY2TY6NE.js → chunk-VKDBM3RX.js} +3 -3
  25. package/dist/{chunk-FBQYKH7R.js → chunk-W4AFGFFB.js} +2 -2
  26. package/dist/{chunk-YBGVZQQE.js → chunk-YLOAQZLA.js} +2 -2
  27. package/dist/{chunk-GHPWBWUW.js → chunk-YLTRFZAT.js} +6 -6
  28. package/dist/{chunk-RCHXBL2M.js → chunk-YWD6WXXM.js} +6 -6
  29. package/dist/{ci-workflow-A2E2RTOP.js → ci-workflow-TOS5X527.js} +2 -2
  30. package/dist/{dist-K22DQUYY.js → dist-6RT2AVYU.js} +1 -1
  31. package/dist/{docs-GXJOFVCF.js → docs-HOJMQYDZ.js} +3 -3
  32. package/dist/{engine-JBUIA2XO.js → engine-D6UYH6DB.js} +2 -2
  33. package/dist/{entropy-Y7LUT4BZ.js → entropy-LZ4IDGZR.js} +2 -2
  34. package/dist/{feedback-BHOBVKI3.js → feedback-WV7EQVK7.js} +1 -1
  35. package/dist/{generate-agent-definitions-VL3ZVR32.js → generate-agent-definitions-ZHFFS6YG.js} +3 -3
  36. package/dist/index.js +22 -22
  37. package/dist/{loader-WCKVMDYR.js → loader-Z23JTXIZ.js} +2 -2
  38. package/dist/{mcp-FA2CKHFY.js → mcp-QFZDPFNP.js} +13 -13
  39. package/dist/{performance-NISUL5AA.js → performance-7ATLHTQU.js} +3 -3
  40. package/dist/{review-pipeline-CHE5LJ5D.js → review-pipeline-COBGGXHJ.js} +2 -2
  41. package/dist/{runtime-3SKKEVPF.js → runtime-KCBNQUXK.js} +2 -2
  42. package/dist/{security-MF54MY3P.js → security-MAPRIFQT.js} +1 -1
  43. package/dist/{validate-SIWFNTXI.js → validate-74XTQR7Q.js} +3 -3
  44. package/dist/{validate-cross-check-GBX7B7CQ.js → validate-cross-check-MI5MZ7MB.js} +2 -2
  45. package/package.json +4 -4
@@ -2,11 +2,11 @@ import {
2
2
  handleRunCodeReview,
3
3
  runCodeReviewDefinition,
4
4
  sortFindingsBySeverity
5
- } from "./chunk-EFA4OEEN.js";
5
+ } from "./chunk-36X7TRUI.js";
6
6
  import {
7
7
  assessProjectDefinition,
8
8
  handleAssessProject
9
- } from "./chunk-RCHXBL2M.js";
9
+ } from "./chunk-YWD6WXXM.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-URLDPALI.js";
20
+ } from "./chunk-2ZURBWEV.js";
21
21
  import {
22
22
  getSecurityTrendsDefinition,
23
23
  handleGetSecurityTrends,
24
24
  handleRunSecurityScan,
25
25
  runSecurityScanDefinition
26
- } from "./chunk-FBQYKH7R.js";
26
+ } from "./chunk-W4AFGFFB.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-LY2TY6NE.js";
33
+ } from "./chunk-VKDBM3RX.js";
34
34
  import {
35
35
  checkDependenciesDefinition,
36
36
  handleCheckDependencies
37
- } from "./chunk-YBGVZQQE.js";
37
+ } from "./chunk-YLOAQZLA.js";
38
38
  import {
39
39
  resolveProjectConfig
40
- } from "./chunk-OXFFN3FD.js";
40
+ } from "./chunk-CPYL6LJR.js";
41
41
  import {
42
42
  checkDocsDefinition,
43
43
  handleCheckDocs
44
- } from "./chunk-UWIOBHZL.js";
44
+ } from "./chunk-2QPHCR22.js";
45
45
  import {
46
46
  detectEntropyDefinition,
47
47
  handleDetectEntropy
48
- } from "./chunk-M4C3ZIGL.js";
48
+ } from "./chunk-KV7A5OZT.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-GHPWBWUW.js";
58
+ } from "./chunk-YLTRFZAT.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-4FVHBBPY.js";
70
+ } from "./chunk-LO7ZLV7S.js";
71
71
  import {
72
72
  GENERATED_HEADER_CLAUDE,
73
73
  GENERATED_HEADER_CODEX,
@@ -103,7 +103,7 @@ import {
103
103
  scanForInjection,
104
104
  serializeEnvelope,
105
105
  writeTaint
106
- } from "./chunk-MAFI6UWT.js";
106
+ } from "./chunk-K4WRQTEF.js";
107
107
  import {
108
108
  Err,
109
109
  Ok
@@ -291,9 +291,7 @@ function ensureHarnessGitignore(targetDir) {
291
291
  analyses/
292
292
  graph/
293
293
  debug/
294
- hooks/
295
294
  interactions/
296
- security/
297
295
  sessions/
298
296
  streams/
299
297
  workspaces/
@@ -313,6 +311,10 @@ events.jsonl
313
311
  .install-id
314
312
  telemetry.json
315
313
  .telemetry-notice-shown
314
+
315
+ # security/: track timeline.json (trend ledger), ignore everything else
316
+ security/*
317
+ !security/timeline.json
316
318
  `;
317
319
  fs.mkdirSync(path.dirname(gitignorePath), { recursive: true });
318
320
  fs.writeFileSync(gitignorePath, content);
@@ -706,7 +708,7 @@ ${skippedMsg}`
706
708
  async function handleInitProject(input) {
707
709
  const i = input;
708
710
  try {
709
- const { TemplateEngine } = await import("./engine-JBUIA2XO.js");
711
+ const { TemplateEngine } = await import("./engine-D6UYH6DB.js");
710
712
  const engine = new TemplateEngine(resolveTemplatesDir());
711
713
  const safePath = sanitizePath(i.path);
712
714
  const detected = tryDetectFramework(engine, safePath, i);
@@ -728,7 +730,7 @@ var listPersonasDefinition = {
728
730
  inputSchema: { type: "object", properties: {} }
729
731
  };
730
732
  async function handleListPersonas() {
731
- const { listPersonas } = await import("./loader-WCKVMDYR.js");
733
+ const { listPersonas } = await import("./loader-Z23JTXIZ.js");
732
734
  const result = listPersonas(resolvePersonasDir());
733
735
  return resultToMcpResponse(result);
734
736
  }
@@ -752,10 +754,10 @@ async function handleGeneratePersonaArtifacts(input) {
752
754
  if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.name)) {
753
755
  return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.name}`)));
754
756
  }
755
- const { loadPersona } = await import("./loader-WCKVMDYR.js");
756
- const { generateRuntime } = await import("./runtime-3SKKEVPF.js");
757
- const { generateAgentsMd } = await import("./agents-md-XCAWON2D.js");
758
- const { generateCIWorkflow } = await import("./ci-workflow-A2E2RTOP.js");
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");
759
761
  const personasDir = resolvePersonasDir();
760
762
  const filePath = path3.join(personasDir, `${input.name}.yaml`);
761
763
  if (!filePath.startsWith(personasDir)) {
@@ -810,7 +812,7 @@ async function handleRunPersona(input) {
810
812
  if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.persona)) {
811
813
  return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.persona}`)));
812
814
  }
813
- const { loadPersona } = await import("./loader-WCKVMDYR.js");
815
+ const { loadPersona } = await import("./loader-Z23JTXIZ.js");
814
816
  const { runPersona } = await import("./runner-AAEF2TXY.js");
815
817
  const { executeSkill } = await import("./skill-executor-MOCUIAYS.js");
816
818
  const personasDir = resolvePersonasDir();
@@ -1255,7 +1257,7 @@ function loadOrGenerateProfile(projectRoot) {
1255
1257
  // src/mcp/tools/event-emitter.ts
1256
1258
  async function emitSkillEvent(projectPath, event) {
1257
1259
  try {
1258
- const { emitEvent } = await import("./dist-K22DQUYY.js");
1260
+ const { emitEvent } = await import("./dist-6RT2AVYU.js");
1259
1261
  await emitEvent(projectPath, event);
1260
1262
  } catch {
1261
1263
  }
@@ -1527,7 +1529,7 @@ async function autoSyncRoadmap(projectPath) {
1527
1529
  try {
1528
1530
  const roadmapFile = path10.join(projectPath, "docs", "roadmap.md");
1529
1531
  if (!fs9.existsSync(roadmapFile)) return;
1530
- const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-K22DQUYY.js");
1532
+ const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-6RT2AVYU.js");
1531
1533
  const raw = fs9.readFileSync(roadmapFile, "utf-8");
1532
1534
  const parseResult = parseRoadmap(raw);
1533
1535
  if (!parseResult.ok) return;
@@ -1557,7 +1559,7 @@ async function triggerExternalSync(projectPath, roadmapFile) {
1557
1559
  console.warn("[roadmap-sync] GITHUB_TOKEN not found \u2014 external sync skipped");
1558
1560
  return;
1559
1561
  }
1560
- const { fullSync, GitHubIssuesSyncAdapter } = await import("./dist-K22DQUYY.js");
1562
+ const { fullSync, GitHubIssuesSyncAdapter } = await import("./dist-6RT2AVYU.js");
1561
1563
  const adapter = new GitHubIssuesSyncAdapter({
1562
1564
  token,
1563
1565
  config: trackerConfig
@@ -1654,12 +1656,12 @@ var manageStateDefinition = {
1654
1656
  }
1655
1657
  };
1656
1658
  async function handleShow(projectPath, input) {
1657
- const { loadState } = await import("./dist-K22DQUYY.js");
1659
+ const { loadState } = await import("./dist-6RT2AVYU.js");
1658
1660
  return resultToMcpResponse(await loadState(projectPath, input.stream, input.session));
1659
1661
  }
1660
1662
  async function handleLearn(projectPath, input) {
1661
1663
  if (!input.learning) return mcpError("Error: learning is required for learn action");
1662
- const { appendLearning } = await import("./dist-K22DQUYY.js");
1664
+ const { appendLearning } = await import("./dist-6RT2AVYU.js");
1663
1665
  const result = await appendLearning(
1664
1666
  projectPath,
1665
1667
  input.learning,
@@ -1674,7 +1676,7 @@ async function handleLearn(projectPath, input) {
1674
1676
  async function handleFailure(projectPath, input) {
1675
1677
  if (!input.description) return mcpError("Error: description is required for failure action");
1676
1678
  if (!input.failureType) return mcpError("Error: failureType is required for failure action");
1677
- const { appendFailure } = await import("./dist-K22DQUYY.js");
1679
+ const { appendFailure } = await import("./dist-6RT2AVYU.js");
1678
1680
  const result = await appendFailure(
1679
1681
  projectPath,
1680
1682
  input.description,
@@ -1693,19 +1695,19 @@ async function handleFailure(projectPath, input) {
1693
1695
  return resultToMcpResponse(Ok({ recorded: true }));
1694
1696
  }
1695
1697
  async function handleArchive(projectPath, input) {
1696
- const { archiveFailures } = await import("./dist-K22DQUYY.js");
1698
+ const { archiveFailures } = await import("./dist-6RT2AVYU.js");
1697
1699
  const result = await archiveFailures(projectPath, input.stream, input.session);
1698
1700
  if (!result.ok) return resultToMcpResponse(result);
1699
1701
  return resultToMcpResponse(Ok({ archived: true }));
1700
1702
  }
1701
1703
  async function handleReset(projectPath, input) {
1702
- const { saveState, DEFAULT_STATE } = await import("./dist-K22DQUYY.js");
1704
+ const { saveState, DEFAULT_STATE } = await import("./dist-6RT2AVYU.js");
1703
1705
  const result = await saveState(projectPath, { ...DEFAULT_STATE }, input.stream, input.session);
1704
1706
  if (!result.ok) return resultToMcpResponse(result);
1705
1707
  return resultToMcpResponse(Ok({ reset: true }));
1706
1708
  }
1707
1709
  async function handleGate(projectPath, input) {
1708
- const { runMechanicalGate } = await import("./dist-K22DQUYY.js");
1710
+ const { runMechanicalGate } = await import("./dist-6RT2AVYU.js");
1709
1711
  const result = await runMechanicalGate(projectPath);
1710
1712
  if (result.ok) {
1711
1713
  await emitSkillEvent(projectPath, {
@@ -1725,7 +1727,7 @@ async function handleGate(projectPath, input) {
1725
1727
  }
1726
1728
  async function handleSaveHandoff(projectPath, input) {
1727
1729
  if (!input.handoff) return mcpError("Error: handoff is required for save-handoff action");
1728
- const { saveHandoff } = await import("./dist-K22DQUYY.js");
1730
+ const { saveHandoff } = await import("./dist-6RT2AVYU.js");
1729
1731
  const result = await saveHandoff(
1730
1732
  projectPath,
1731
1733
  input.handoff,
@@ -1747,7 +1749,7 @@ async function handleSaveHandoff(projectPath, input) {
1747
1749
  return resultToMcpResponse(Ok({ saved: true }));
1748
1750
  }
1749
1751
  async function handleLoadHandoff(projectPath, input) {
1750
- const { loadHandoff } = await import("./dist-K22DQUYY.js");
1752
+ const { loadHandoff } = await import("./dist-6RT2AVYU.js");
1751
1753
  return resultToMcpResponse(await loadHandoff(projectPath, input.stream, input.session));
1752
1754
  }
1753
1755
  async function handleAppendEntry(projectPath, input) {
@@ -1755,7 +1757,7 @@ async function handleAppendEntry(projectPath, input) {
1755
1757
  if (!input.authorSkill) return mcpError("Error: authorSkill is required for append_entry action");
1756
1758
  if (!input.content) return mcpError("Error: content is required for append_entry action");
1757
1759
  if (input.session) {
1758
- const { appendSessionEntry } = await import("./dist-K22DQUYY.js");
1760
+ const { appendSessionEntry } = await import("./dist-6RT2AVYU.js");
1759
1761
  const result = await appendSessionEntry(
1760
1762
  projectPath,
1761
1763
  input.session,
@@ -1768,7 +1770,7 @@ async function handleAppendEntry(projectPath, input) {
1768
1770
  if (input.section !== "decisions") {
1769
1771
  return mcpError("Error: session is required for non-decisions sections");
1770
1772
  }
1771
- const { loadState, saveState } = await import("./dist-K22DQUYY.js");
1773
+ const { loadState, saveState } = await import("./dist-6RT2AVYU.js");
1772
1774
  const lr = await loadState(projectPath, input.stream);
1773
1775
  if (!lr.ok) return resultToMcpResponse(lr);
1774
1776
  lr.value.decisions.push({
@@ -1786,7 +1788,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
1786
1788
  if (!input.entryId) return mcpError("Error: entryId is required for update_entry_status action");
1787
1789
  if (!input.newStatus)
1788
1790
  return mcpError("Error: newStatus is required for update_entry_status action");
1789
- const { updateSessionEntryStatus } = await import("./dist-K22DQUYY.js");
1791
+ const { updateSessionEntryStatus } = await import("./dist-6RT2AVYU.js");
1790
1792
  const result = await updateSessionEntryStatus(
1791
1793
  projectPath,
1792
1794
  input.session,
@@ -1799,7 +1801,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
1799
1801
  async function handleReadSection(projectPath, input) {
1800
1802
  if (!input.session) return mcpError("Error: session is required for read_section action");
1801
1803
  if (!input.section) return mcpError("Error: section is required for read_section action");
1802
- const { readSessionSection } = await import("./dist-K22DQUYY.js");
1804
+ const { readSessionSection } = await import("./dist-6RT2AVYU.js");
1803
1805
  const result = await readSessionSection(
1804
1806
  projectPath,
1805
1807
  input.session,
@@ -1809,13 +1811,13 @@ async function handleReadSection(projectPath, input) {
1809
1811
  }
1810
1812
  async function handleReadSections(projectPath, input) {
1811
1813
  if (!input.session) return mcpError("Error: session is required for read_sections action");
1812
- const { readSessionSections } = await import("./dist-K22DQUYY.js");
1814
+ const { readSessionSections } = await import("./dist-6RT2AVYU.js");
1813
1815
  const result = await readSessionSections(projectPath, input.session);
1814
1816
  return resultToMcpResponse(result);
1815
1817
  }
1816
1818
  async function handleArchiveSession(projectPath, input) {
1817
1819
  if (!input.session) return mcpError("Error: session is required for archive_session action");
1818
- const { archiveSession } = await import("./dist-K22DQUYY.js");
1820
+ const { archiveSession } = await import("./dist-6RT2AVYU.js");
1819
1821
  const result = await archiveSession(projectPath, input.session);
1820
1822
  if (!result.ok) return resultToMcpResponse(result);
1821
1823
  await autoSyncRoadmap(projectPath);
@@ -1895,7 +1897,7 @@ var listStreamsDefinition = {
1895
1897
  };
1896
1898
  async function handleListStreams(input) {
1897
1899
  try {
1898
- const { listStreams, loadStreamIndex } = await import("./dist-K22DQUYY.js");
1900
+ const { listStreams, loadStreamIndex } = await import("./dist-6RT2AVYU.js");
1899
1901
  const projectPath = sanitizePath(input.path);
1900
1902
  const indexResult = await loadStreamIndex(projectPath);
1901
1903
  const streamsResult = await listStreams(projectPath);
@@ -1933,7 +1935,7 @@ var checkPhaseGateDefinition = {
1933
1935
  };
1934
1936
  async function handleCheckPhaseGate(input) {
1935
1937
  try {
1936
- const { runCheckPhaseGate } = await import("./check-phase-gate-GE5ALEEU.js");
1938
+ const { runCheckPhaseGate } = await import("./check-phase-gate-646KY67H.js");
1937
1939
  const result = await runCheckPhaseGate({ cwd: sanitizePath(input.path) });
1938
1940
  if (result.ok) {
1939
1941
  return { content: [{ type: "text", text: JSON.stringify(result.value) }] };
@@ -1989,7 +1991,7 @@ async function handleValidateCrossCheck(input) {
1989
1991
  };
1990
1992
  }
1991
1993
  try {
1992
- const { runCrossCheck } = await import("./validate-cross-check-GBX7B7CQ.js");
1994
+ const { runCrossCheck } = await import("./validate-cross-check-MI5MZ7MB.js");
1993
1995
  const specsDir = path11.resolve(projectPath, input.specsDir ?? "docs/specs");
1994
1996
  if (!specsDir.startsWith(projectPath)) {
1995
1997
  return {
@@ -2712,7 +2714,7 @@ async function handleGenerateSlashCommands(input) {
2712
2714
  // src/mcp/resources/state.ts
2713
2715
  async function getStateResource(projectRoot) {
2714
2716
  try {
2715
- const { loadState, migrateToStreams } = await import("./dist-K22DQUYY.js");
2717
+ const { loadState, migrateToStreams } = await import("./dist-6RT2AVYU.js");
2716
2718
  await migrateToStreams(projectRoot);
2717
2719
  const result = await loadState(projectRoot);
2718
2720
  if (result.ok) {
@@ -3732,7 +3734,7 @@ var generateAgentDefinitionsDefinition = {
3732
3734
  }
3733
3735
  };
3734
3736
  async function handleGenerateAgentDefinitions(input) {
3735
- const { generateAgentDefinitions } = await import("./generate-agent-definitions-VL3ZVR32.js");
3737
+ const { generateAgentDefinitions } = await import("./generate-agent-definitions-ZHFFS6YG.js");
3736
3738
  const platforms = input.platform === "all" || !input.platform ? ["claude-code", "gemini-cli"] : [input.platform];
3737
3739
  const results = generateAgentDefinitions({
3738
3740
  platforms: [...platforms],
@@ -4064,7 +4066,7 @@ function shouldTriggerExternalSync(input, response) {
4064
4066
  }
4065
4067
  async function handleManageRoadmap(input) {
4066
4068
  try {
4067
- const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges, assignFeature } = await import("./dist-K22DQUYY.js");
4069
+ const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges, assignFeature } = await import("./dist-6RT2AVYU.js");
4068
4070
  const { Ok: Ok2 } = await import("./dist-3EWNRFFQ.js");
4069
4071
  const projectPath = sanitizePath(input.path);
4070
4072
  const deps = {
@@ -4503,7 +4505,7 @@ async function handleTransition(validInput, projectPath, id) {
4503
4505
  const transition = transitionResult.data;
4504
4506
  const prompt = renderTransition(transition);
4505
4507
  try {
4506
- const { saveHandoff } = await import("./dist-K22DQUYY.js");
4508
+ const { saveHandoff } = await import("./dist-6RT2AVYU.js");
4507
4509
  await saveHandoff(
4508
4510
  projectPath,
4509
4511
  {
@@ -4584,7 +4586,7 @@ async function handleEmitInteraction(input) {
4584
4586
  }
4585
4587
  async function recordInteraction(projectPath, id, type, decision, stream) {
4586
4588
  try {
4587
- const { loadState, saveState } = await import("./dist-K22DQUYY.js");
4589
+ const { loadState, saveState } = await import("./dist-6RT2AVYU.js");
4588
4590
  const stateResult = await loadState(projectPath, stream);
4589
4591
  if (stateResult.ok) {
4590
4592
  const state = stateResult.value;
@@ -4745,10 +4747,10 @@ async function handleGatherContext(input) {
4745
4747
  input.include ?? ["state", "learnings", "handoff", "graph", "validation", "businessKnowledge"]
4746
4748
  );
4747
4749
  const errors = [];
4748
- const statePromise = includeSet.has("state") ? import("./dist-K22DQUYY.js").then(
4750
+ const statePromise = includeSet.has("state") ? import("./dist-6RT2AVYU.js").then(
4749
4751
  (core) => core.loadState(projectPath, void 0, input.session)
4750
4752
  ) : Promise.resolve(null);
4751
- const learningsPromise = includeSet.has("learnings") ? import("./dist-K22DQUYY.js").then(
4753
+ const learningsPromise = includeSet.has("learnings") ? import("./dist-6RT2AVYU.js").then(
4752
4754
  (core) => core.loadBudgetedLearnings(projectPath, {
4753
4755
  intent: input.intent,
4754
4756
  tokenBudget: input.learningsBudget ?? 1e3,
@@ -4757,7 +4759,7 @@ async function handleGatherContext(input) {
4757
4759
  ...input.depth !== void 0 && { depth: input.depth }
4758
4760
  })
4759
4761
  ) : Promise.resolve(null);
4760
- const handoffPromise = includeSet.has("handoff") ? import("./dist-K22DQUYY.js").then(
4762
+ const handoffPromise = includeSet.has("handoff") ? import("./dist-6RT2AVYU.js").then(
4761
4763
  (core) => core.loadHandoff(projectPath, void 0, input.session)
4762
4764
  ) : Promise.resolve(null);
4763
4765
  const graphPromise = includeSet.has("graph") ? (async () => {
@@ -4801,11 +4803,11 @@ async function handleGatherContext(input) {
4801
4803
  context: contextBlocks
4802
4804
  };
4803
4805
  })() : Promise.resolve(null);
4804
- const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-K22DQUYY.js").then(
4806
+ const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-6RT2AVYU.js").then(
4805
4807
  (core) => core.readSessionSections(projectPath, input.session)
4806
4808
  ) : Promise.resolve(null);
4807
4809
  const shouldIncludeEvents = input.includeEvents !== void 0 ? input.includeEvents : includeSet.has("events") || !!input.session && !input.include;
4808
- const eventsPromise = shouldIncludeEvents ? import("./dist-K22DQUYY.js").then(async (core) => {
4810
+ const eventsPromise = shouldIncludeEvents ? import("./dist-6RT2AVYU.js").then(async (core) => {
4809
4811
  const result = await core.loadEvents(projectPath, {
4810
4812
  session: input.session
4811
4813
  });
@@ -4813,7 +4815,7 @@ async function handleGatherContext(input) {
4813
4815
  return core.formatEventTimeline(result.value);
4814
4816
  }) : Promise.resolve(null);
4815
4817
  const validationPromise = includeSet.has("validation") ? (async () => {
4816
- const { handleValidateProject: handleValidateProject2 } = await import("./validate-SIWFNTXI.js");
4818
+ const { handleValidateProject: handleValidateProject2 } = await import("./validate-74XTQR7Q.js");
4817
4819
  const result = await handleValidateProject2({ path: projectPath });
4818
4820
  const first = result.content[0];
4819
4821
  return first ? JSON.parse(first.text) : null;
@@ -4916,7 +4918,7 @@ async function handleGatherContext(input) {
4916
4918
  };
4917
4919
  if (input.session) {
4918
4920
  try {
4919
- const core = await import("./dist-K22DQUYY.js");
4921
+ const core = await import("./dist-6RT2AVYU.js");
4920
4922
  core.updateSessionIndex(
4921
4923
  projectPath,
4922
4924
  input.session,
@@ -5068,7 +5070,7 @@ async function handleReviewChanges(input) {
5068
5070
  }
5069
5071
  }
5070
5072
  async function runQuickReview(projectPath, diff, diffLines, downgraded, offset, limit) {
5071
- const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-BHOBVKI3.js");
5073
+ const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-WV7EQVK7.js");
5072
5074
  const result = await handleAnalyzeDiff2({ diff, path: projectPath });
5073
5075
  const firstContent = result.content[0];
5074
5076
  if (!firstContent) throw new Error("Empty analyze_diff response");
@@ -5103,7 +5105,7 @@ function extractFileCount(diffParsed) {
5103
5105
  return files?.length ?? 0;
5104
5106
  }
5105
5107
  async function runStandardReview(projectPath, diff, diffLines, downgraded, offset, limit) {
5106
- const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-BHOBVKI3.js");
5108
+ const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-WV7EQVK7.js");
5107
5109
  const [diffResult, reviewResult] = await Promise.all([
5108
5110
  handleAnalyzeDiff2({ diff, path: projectPath }),
5109
5111
  handleCreateSelfReview2({ path: projectPath, diff })
@@ -5138,7 +5140,7 @@ async function runStandardReview(projectPath, diff, diffLines, downgraded, offse
5138
5140
  };
5139
5141
  }
5140
5142
  async function runDeepReview(projectPath, diff, diffLines, _downgraded, offset, limit) {
5141
- const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-CHE5LJ5D.js");
5143
+ const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-COBGGXHJ.js");
5142
5144
  const result = await handleRunCodeReview2({
5143
5145
  path: projectPath,
5144
5146
  diff,
@@ -5432,7 +5434,7 @@ async function handleDetectStaleConstraints(input) {
5432
5434
  ]
5433
5435
  };
5434
5436
  }
5435
- const { detectStaleConstraints } = await import("./dist-K22DQUYY.js");
5437
+ const { detectStaleConstraints } = await import("./dist-6RT2AVYU.js");
5436
5438
  const result = detectStaleConstraints(
5437
5439
  store,
5438
5440
  windowDays,
@@ -5552,10 +5554,10 @@ function countCriticalFindings(securityData) {
5552
5554
  return findings.filter((f) => f.severity === "error").length;
5553
5555
  }
5554
5556
  async function runHealthChecks(projectPath) {
5555
- const { handleAssessProject: handleAssessProject2 } = await import("./assess-project-NPYA3UVI.js");
5556
- const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-KERHEEQZ.js");
5557
- const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-Y7LUT4BZ.js");
5558
- const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-MF54MY3P.js");
5557
+ const { handleAssessProject: handleAssessProject2 } = await import("./assess-project-PHC2HO3V.js");
5558
+ const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-WJRIYQ45.js");
5559
+ const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-LZ4IDGZR.js");
5560
+ const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-MAPRIFQT.js");
5559
5561
  const [assessResult, depsResult, entropyResult, securityResult] = await Promise.all([
5560
5562
  handleAssessProject2({
5561
5563
  path: projectPath,
@@ -6396,7 +6398,7 @@ async function handleGetDecayTrends(input) {
6396
6398
  };
6397
6399
  }
6398
6400
  try {
6399
- const core = await import("./dist-K22DQUYY.js");
6401
+ const core = await import("./dist-6RT2AVYU.js");
6400
6402
  const { TimelineManager } = core;
6401
6403
  const manager = new TimelineManager(projectPath);
6402
6404
  const timeline = manager.load();
@@ -6531,7 +6533,7 @@ async function handleCodeOutline(input) {
6531
6533
  };
6532
6534
  }
6533
6535
  try {
6534
- const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-K22DQUYY.js");
6536
+ const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-6RT2AVYU.js");
6535
6537
  const { stat } = await import("fs/promises");
6536
6538
  const stats = await stat(targetPath).catch(() => null);
6537
6539
  if (stats?.isFile()) {
@@ -6550,7 +6552,7 @@ async function handleCodeOutline(input) {
6550
6552
  })
6551
6553
  );
6552
6554
  fileStats.sort((a, b) => b.mtimeMs - a.mtimeMs);
6553
- const { paginate: paginate2 } = await import("./dist-K22DQUYY.js");
6555
+ const { paginate: paginate2 } = await import("./dist-6RT2AVYU.js");
6554
6556
  const paged = paginate2(fileStats, input.offset ?? 0, input.limit ?? 30);
6555
6557
  const results = [];
6556
6558
  for (const entry of paged.items) {
@@ -6623,7 +6625,7 @@ async function handleCodeSearch(input) {
6623
6625
  };
6624
6626
  }
6625
6627
  try {
6626
- const { searchSymbols } = await import("./dist-K22DQUYY.js");
6628
+ const { searchSymbols } = await import("./dist-6RT2AVYU.js");
6627
6629
  const result = await searchSymbols(input.query, directory, input.glob);
6628
6630
  const lines = [`Search: "${result.query}" \u2014 ${result.matches.length} matches`];
6629
6631
  for (const match of result.matches) {
@@ -6692,7 +6694,7 @@ async function handleCodeUnfold(input) {
6692
6694
  }
6693
6695
  try {
6694
6696
  if (input.symbol) {
6695
- const { unfoldSymbol } = await import("./dist-K22DQUYY.js");
6697
+ const { unfoldSymbol } = await import("./dist-6RT2AVYU.js");
6696
6698
  const result = await unfoldSymbol(filePath, input.symbol);
6697
6699
  const header = result.warning ? `${result.file}:${result.startLine}-${result.endLine} ${result.warning}
6698
6700
  ` : `${result.file}:${result.startLine}-${result.endLine}
@@ -6700,7 +6702,7 @@ async function handleCodeUnfold(input) {
6700
6702
  return { content: [{ type: "text", text: header + result.content }] };
6701
6703
  }
6702
6704
  if (input.startLine != null && input.endLine != null) {
6703
- const { unfoldRange } = await import("./dist-K22DQUYY.js");
6705
+ const { unfoldRange } = await import("./dist-6RT2AVYU.js");
6704
6706
  const result = await unfoldRange(filePath, input.startLine, input.endLine);
6705
6707
  const header = `${result.file}:${result.startLine}-${result.endLine}
6706
6708
  `;
@@ -6885,7 +6887,7 @@ async function handlePredictFailures(input) {
6885
6887
  };
6886
6888
  }
6887
6889
  try {
6888
- const core = await import("./dist-K22DQUYY.js");
6890
+ const core = await import("./dist-6RT2AVYU.js");
6889
6891
  const { TimelineManager, PredictionEngine, SpecImpactEstimator } = core;
6890
6892
  const manager = new TimelineManager(projectPath);
6891
6893
  const includeRoadmap = input.includeRoadmap !== false;
@@ -7994,7 +7996,7 @@ async function handleDetectConstraintEmergence(input) {
7994
7996
  }
7995
7997
  const nodePath = await import("path");
7996
7998
  const historyPath = nodePath.resolve(projectPath, ".harness/arch/violation-history.json");
7997
- const { ViolationHistoryManager, detectEmergentConstraints } = await import("./dist-K22DQUYY.js");
7999
+ const { ViolationHistoryManager, detectEmergentConstraints } = await import("./dist-6RT2AVYU.js");
7998
8000
  const manager = new ViolationHistoryManager(historyPath);
7999
8001
  const history = manager.load();
8000
8002
  const options = { windowWeeks, minOccurrences };
@@ -8082,7 +8084,7 @@ async function handleRunCIChecks(input) {
8082
8084
  };
8083
8085
  }
8084
8086
  try {
8085
- const { runCIChecks } = await import("./dist-K22DQUYY.js");
8087
+ const { runCIChecks } = await import("./dist-6RT2AVYU.js");
8086
8088
  const skip = input.checks ? VALID_CHECKS.filter((c) => !input.checks.includes(c)) : [];
8087
8089
  const result = await runCIChecks({
8088
8090
  projectRoot: projectPath,
@@ -8144,7 +8146,7 @@ async function handleGenerateBlueprint(input) {
8144
8146
  };
8145
8147
  }
8146
8148
  try {
8147
- const { ProjectScanner } = await import("./dist-K22DQUYY.js");
8149
+ const { ProjectScanner } = await import("./dist-6RT2AVYU.js");
8148
8150
  const scanner = new ProjectScanner(projectPath);
8149
8151
  const data = await scanner.scan();
8150
8152
  return {
@@ -8390,7 +8392,7 @@ async function appendUpdateNotification(result, resolvedRoot) {
8390
8392
  shouldRunCheck,
8391
8393
  readCheckState,
8392
8394
  spawnBackgroundCheck
8393
- } = await import("./dist-K22DQUYY.js");
8395
+ } = await import("./dist-6RT2AVYU.js");
8394
8396
  const { CLI_VERSION } = await import("./version-CUI434OP.js");
8395
8397
  const configInterval = readConfigInterval(resolvedRoot);
8396
8398
  const DEFAULT_INTERVAL = 864e5;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-MAFI6UWT.js";
3
+ } from "./chunk-K4WRQTEF.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  resolveConfig
3
- } from "./chunk-4FVHBBPY.js";
3
+ } from "./chunk-LO7ZLV7S.js";
4
4
  import {
5
5
  init_dist
6
- } from "./chunk-MAFI6UWT.js";
6
+ } from "./chunk-K4WRQTEF.js";
7
7
  import {
8
8
  Ok
9
9
  } from "./chunk-RL4VMEXL.js";