@harness-engineering/cli 4.2.0 → 4.3.2

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-md-BK2UPKUC.js → agents-md-N4ULMUAK.js} +4 -4
  2. package/dist/{analyzer-XRCV63KC-6T2Z32XC.js → analyzer-XRCV63KC-WGRHW2ZM.js} +2 -2
  3. package/dist/{architecture-7PNQZOWV.js → architecture-OIMIBDJC.js} +5 -5
  4. package/dist/{assess-project-2QPCNN7N.js → assess-project-ITSB6W4L.js} +1 -1
  5. package/dist/bin/harness-mcp.js +15 -15
  6. package/dist/bin/harness.js +25 -25
  7. package/dist/{check-phase-gate-RZUSDB3O.js → check-phase-gate-GN4X7HT6.js} +5 -5
  8. package/dist/{chunk-ZIJABBGZ.js → chunk-574JCBYH.js} +2 -2
  9. package/dist/{chunk-E5KJOUHI.js → chunk-5BUHPOCP.js} +7 -7
  10. package/dist/{chunk-YTJIRQON.js → chunk-6NEJPS7W.js} +2 -2
  11. package/dist/{chunk-MHHISNS2.js → chunk-73QZ43DF.js} +2 -2
  12. package/dist/{chunk-RZTLXZHJ.js → chunk-7RH2NTLA.js} +1 -1
  13. package/dist/{chunk-DVG6DDX6.js → chunk-CMU4DNLY.js} +1 -1
  14. package/dist/{chunk-33OU3LYX.js → chunk-CRHQYBDA.js} +48 -12
  15. package/dist/{chunk-J7H5I4FO.js → chunk-D7A5JR7M.js} +2 -2
  16. package/dist/{chunk-K5R2I37T.js → chunk-F3GNBRGL.js} +87 -85
  17. package/dist/{chunk-SI4O2W4H.js → chunk-GTHL3TRZ.js} +2 -2
  18. package/dist/{chunk-J5MFNKE7.js → chunk-H5GN7R43.js} +2 -2
  19. package/dist/{chunk-D5YCPIK6.js → chunk-HJYAXAYQ.js} +2 -2
  20. package/dist/{chunk-DBCC7KIW.js → chunk-JZL2O3RC.js} +5 -5
  21. package/dist/{chunk-V2GJE5J5.js → chunk-LP764MGR.js} +3 -3
  22. package/dist/{chunk-6STDKKAM.js → chunk-LTYVAKWK.js} +2 -2
  23. package/dist/{chunk-KYFXXEK3.js → chunk-MEDRUIRO.js} +3 -3
  24. package/dist/{chunk-DW6HE5DH.js → chunk-MIZQY35D.js} +2 -2
  25. package/dist/{chunk-KHL6WFRL.js → chunk-NEMB36N4.js} +2 -2
  26. package/dist/{chunk-BJDT3VGQ.js → chunk-PT65VY4S.js} +6 -6
  27. package/dist/{chunk-HUC73DZC.js → chunk-T46G6YNI.js} +3 -3
  28. package/dist/{chunk-VC2B275U.js → chunk-TKPAOB2T.js} +2 -2
  29. package/dist/{chunk-HU7NS7JA.js → chunk-U2NOOATF.js} +6 -6
  30. package/dist/{chunk-UEXQMI6K.js → chunk-VJDSB7CI.js} +112 -50
  31. package/dist/{chunk-XACP5P2J.js → chunk-XKILFNRK.js} +2 -2
  32. package/dist/{chunk-RRCS27GT.js → chunk-YVI7ZV73.js} +284 -115
  33. package/dist/{ci-workflow-LGN7LHHO.js → ci-workflow-PA3WL6WK.js} +4 -4
  34. package/dist/{dist-LE5AU7FR.js → dist-BWFFVKEW.js} +20 -4
  35. package/dist/{dist-FBBADRYS.js → dist-ISDDHDOR.js} +17 -3
  36. package/dist/{docs-3BTPSHKE.js → docs-HOTWQJQF.js} +5 -5
  37. package/dist/{engine-GWGU4AMH.js → engine-MVG2SPGD.js} +4 -4
  38. package/dist/{entropy-35XURODP.js → entropy-3B4U2BTF.js} +5 -5
  39. package/dist/{feedback-NDGZZ37W.js → feedback-WIWWDVUC.js} +1 -1
  40. package/dist/{generate-agent-definitions-PYZ3E7SP.js → generate-agent-definitions-KPRHY6X3.js} +5 -5
  41. package/dist/index.js +25 -25
  42. package/dist/{loader-QK2OJXKB.js → loader-SPJ2ZGYW.js} +4 -4
  43. package/dist/{mcp-Z5YMV7TA.js → mcp-VSSIWTII.js} +15 -15
  44. package/dist/{performance-VAYOYPVK.js → performance-JYFS27B3.js} +5 -5
  45. package/dist/{review-pipeline-UETEOWSS.js → review-pipeline-BDT6Y6QV.js} +4 -4
  46. package/dist/{runtime-J7KFACTK.js → runtime-ZEPHPPQJ.js} +4 -4
  47. package/dist/{security-6AIUZXF5.js → security-FWSDTTEW.js} +1 -1
  48. package/dist/{state-events-XQPHGLG5.js → state-events-PBDNQPXT.js} +4 -4
  49. package/dist/{validate-ON7YMVLY.js → validate-XIMNCIKR.js} +5 -5
  50. package/dist/{validate-cross-check-HKKQA7K5.js → validate-cross-check-H2OUHTID.js} +4 -4
  51. package/package.json +8 -8
@@ -5,30 +5,30 @@ import {
5
5
  handleCreateSelfReview,
6
6
  handleRequestPeerReview,
7
7
  requestPeerReviewDefinition
8
- } from "./chunk-KYFXXEK3.js";
8
+ } from "./chunk-MEDRUIRO.js";
9
9
  import {
10
10
  getSecurityTrendsDefinition,
11
11
  handleGetSecurityTrends,
12
12
  handleRunSecurityScan,
13
13
  runSecurityScanDefinition
14
- } from "./chunk-D5YCPIK6.js";
14
+ } from "./chunk-HJYAXAYQ.js";
15
15
  import {
16
16
  handleRunCodeReview,
17
17
  runCodeReviewDefinition,
18
18
  sortFindingsBySeverity
19
- } from "./chunk-J5MFNKE7.js";
19
+ } from "./chunk-H5GN7R43.js";
20
20
  import {
21
21
  assessProjectDefinition,
22
22
  handleAssessProject
23
- } from "./chunk-HU7NS7JA.js";
23
+ } from "./chunk-U2NOOATF.js";
24
24
  import {
25
25
  checkDocsDefinition,
26
26
  handleCheckDocs
27
- } from "./chunk-BJDT3VGQ.js";
27
+ } from "./chunk-PT65VY4S.js";
28
28
  import {
29
29
  detectEntropyDefinition,
30
30
  handleDetectEntropy
31
- } from "./chunk-DBCC7KIW.js";
31
+ } from "./chunk-JZL2O3RC.js";
32
32
  import {
33
33
  checkPerformanceDefinition,
34
34
  getCriticalPathsDefinition,
@@ -38,7 +38,7 @@ import {
38
38
  handleGetPerfBaselines,
39
39
  handleUpdatePerfBaselines,
40
40
  updatePerfBaselinesDefinition
41
- } from "./chunk-E5KJOUHI.js";
41
+ } from "./chunk-5BUHPOCP.js";
42
42
  import {
43
43
  getBusinessKnowledgeResource
44
44
  } from "./chunk-IOW3MW2K.js";
@@ -57,17 +57,17 @@ import {
57
57
  import {
58
58
  handleValidateProject,
59
59
  validateToolDefinition
60
- } from "./chunk-HUC73DZC.js";
60
+ } from "./chunk-T46G6YNI.js";
61
61
  import {
62
62
  checkDependenciesDefinition,
63
63
  handleCheckDependencies
64
- } from "./chunk-J7H5I4FO.js";
64
+ } from "./chunk-D7A5JR7M.js";
65
65
  import {
66
66
  resultToMcpResponse
67
67
  } from "./chunk-RC3OI5NK.js";
68
68
  import {
69
69
  resolveProjectConfig
70
- } from "./chunk-XACP5P2J.js";
70
+ } from "./chunk-XKILFNRK.js";
71
71
  import {
72
72
  sanitizePath
73
73
  } from "./chunk-W6Y7ZW3Y.js";
@@ -93,7 +93,7 @@ import {
93
93
  findConfigFile,
94
94
  loadConfig,
95
95
  resolveConfig
96
- } from "./chunk-6STDKKAM.js";
96
+ } from "./chunk-LTYVAKWK.js";
97
97
  import {
98
98
  logger
99
99
  } from "./chunk-EBJQ6N4M.js";
@@ -129,14 +129,14 @@ import {
129
129
  scanForInjection,
130
130
  serializeEnvelope,
131
131
  writeTaint
132
- } from "./chunk-33OU3LYX.js";
132
+ } from "./chunk-CRHQYBDA.js";
133
133
  import {
134
134
  Err,
135
135
  INDEXED_FILE_KINDS,
136
136
  INSIGHTS_KEYS,
137
137
  Ok,
138
138
  init_dist
139
- } from "./chunk-UEXQMI6K.js";
139
+ } from "./chunk-VJDSB7CI.js";
140
140
 
141
141
  // src/mcp/server.ts
142
142
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
@@ -314,6 +314,8 @@ sessions/
314
314
  streams/
315
315
  workspaces/
316
316
  state.json
317
+ state.events.jsonl
318
+ state.snapshot.json
317
319
  state/
318
320
  handoff.json
319
321
  handoff-*.json
@@ -745,7 +747,7 @@ async function handleInsightsSummary(input) {
745
747
  const skip = Array.isArray(input.skip) ? input.skip.filter(
746
748
  (k) => typeof k === "string" && INSIGHTS_KEYS.includes(k)
747
749
  ) : void 0;
748
- const { composeInsights } = await import("./dist-LE5AU7FR.js");
750
+ const { composeInsights } = await import("./dist-BWFFVKEW.js");
749
751
  const report = await composeInsights(projectPath, {
750
752
  ...skip && skip.length > 0 && { skip }
751
753
  });
@@ -921,7 +923,7 @@ ${skippedMsg}`
921
923
  async function handleInitProject(input) {
922
924
  const i = input;
923
925
  try {
924
- const { TemplateEngine } = await import("./engine-GWGU4AMH.js");
926
+ const { TemplateEngine } = await import("./engine-MVG2SPGD.js");
925
927
  const engine = new TemplateEngine(resolveTemplatesDir());
926
928
  const safePath = sanitizePath(i.path);
927
929
  const detected = tryDetectFramework(engine, safePath, i);
@@ -943,7 +945,7 @@ var listPersonasDefinition = {
943
945
  inputSchema: { type: "object", properties: {} }
944
946
  };
945
947
  async function handleListPersonas() {
946
- const { listPersonas } = await import("./loader-QK2OJXKB.js");
948
+ const { listPersonas } = await import("./loader-SPJ2ZGYW.js");
947
949
  const result = listPersonas(resolvePersonasDir());
948
950
  return resultToMcpResponse(result);
949
951
  }
@@ -967,10 +969,10 @@ async function handleGeneratePersonaArtifacts(input) {
967
969
  if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.name)) {
968
970
  return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.name}`)));
969
971
  }
970
- const { loadPersona } = await import("./loader-QK2OJXKB.js");
971
- const { generateRuntime } = await import("./runtime-J7KFACTK.js");
972
- const { generateAgentsMd } = await import("./agents-md-BK2UPKUC.js");
973
- const { generateCIWorkflow } = await import("./ci-workflow-LGN7LHHO.js");
972
+ const { loadPersona } = await import("./loader-SPJ2ZGYW.js");
973
+ const { generateRuntime } = await import("./runtime-ZEPHPPQJ.js");
974
+ const { generateAgentsMd } = await import("./agents-md-N4ULMUAK.js");
975
+ const { generateCIWorkflow } = await import("./ci-workflow-PA3WL6WK.js");
974
976
  const personasDir = resolvePersonasDir();
975
977
  const filePath = path4.join(personasDir, `${input.name}.yaml`);
976
978
  if (!filePath.startsWith(personasDir)) {
@@ -1025,7 +1027,7 @@ async function handleRunPersona(input) {
1025
1027
  if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.persona)) {
1026
1028
  return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.persona}`)));
1027
1029
  }
1028
- const { loadPersona } = await import("./loader-QK2OJXKB.js");
1030
+ const { loadPersona } = await import("./loader-SPJ2ZGYW.js");
1029
1031
  const { runPersona } = await import("./runner-AAEF2TXY.js");
1030
1032
  const { executeSkill } = await import("./skill-executor-BGUCAVBU.js");
1031
1033
  const personasDir = resolvePersonasDir();
@@ -1548,7 +1550,7 @@ async function handleRunSkill(input) {
1548
1550
  }
1549
1551
  if (input.path) {
1550
1552
  const projectPath = sanitizePath(input.path);
1551
- const { readHarnessState, isEmptyHarnessState } = await import("./state-events-XQPHGLG5.js");
1553
+ const { readHarnessState, isEmptyHarnessState } = await import("./state-events-PBDNQPXT.js");
1552
1554
  const stateResult = await readHarnessState(projectPath);
1553
1555
  if (stateResult.ok && !isEmptyHarnessState(stateResult.value)) {
1554
1556
  const stateContent = JSON.stringify(stateResult.value, null, 2);
@@ -1747,7 +1749,7 @@ import * as path11 from "path";
1747
1749
  async function autoSyncRoadmap(projectPath) {
1748
1750
  try {
1749
1751
  if (!roadmapSourceExists(projectPath)) return;
1750
- const { syncRoadmap, applySyncChanges } = await import("./dist-LE5AU7FR.js");
1752
+ const { syncRoadmap, applySyncChanges } = await import("./dist-BWFFVKEW.js");
1751
1753
  const store = resolveRoadmapStore({ projectRoot: projectPath });
1752
1754
  const loaded = await store.load();
1753
1755
  if (!loaded.ok) return;
@@ -1778,7 +1780,7 @@ async function triggerExternalSync(projectPath) {
1778
1780
  console.warn("[roadmap-sync] GITHUB_TOKEN not found \u2014 external sync skipped");
1779
1781
  return;
1780
1782
  }
1781
- const { fullSync, GitHubIssuesSyncAdapter } = await import("./dist-LE5AU7FR.js");
1783
+ const { fullSync, GitHubIssuesSyncAdapter } = await import("./dist-BWFFVKEW.js");
1782
1784
  const adapter = new GitHubIssuesSyncAdapter({
1783
1785
  token,
1784
1786
  config: trackerConfig
@@ -1898,14 +1900,14 @@ var manageStateDefinition = {
1898
1900
  }
1899
1901
  };
1900
1902
  async function handleShow(projectPath, input) {
1901
- const { readHarnessState } = await import("./state-events-XQPHGLG5.js");
1903
+ const { readHarnessState } = await import("./state-events-PBDNQPXT.js");
1902
1904
  return resultToMcpResponse(
1903
1905
  await readHarnessState(projectPath, { stream: input.stream, session: input.session })
1904
1906
  );
1905
1907
  }
1906
1908
  async function handleLearn(projectPath, input) {
1907
1909
  if (!input.learning) return mcpError("Error: learning is required for learn action");
1908
- const { appendLearning } = await import("./dist-LE5AU7FR.js");
1910
+ const { appendLearning } = await import("./dist-BWFFVKEW.js");
1909
1911
  const result = await appendLearning(
1910
1912
  projectPath,
1911
1913
  input.learning,
@@ -1920,7 +1922,7 @@ async function handleLearn(projectPath, input) {
1920
1922
  async function handleFailure(projectPath, input) {
1921
1923
  if (!input.description) return mcpError("Error: description is required for failure action");
1922
1924
  if (!input.failureType) return mcpError("Error: failureType is required for failure action");
1923
- const { appendFailure } = await import("./dist-LE5AU7FR.js");
1925
+ const { appendFailure } = await import("./dist-BWFFVKEW.js");
1924
1926
  const result = await appendFailure(
1925
1927
  projectPath,
1926
1928
  input.description,
@@ -1939,13 +1941,13 @@ async function handleFailure(projectPath, input) {
1939
1941
  return resultToMcpResponse(Ok({ recorded: true }));
1940
1942
  }
1941
1943
  async function handleArchive(projectPath, input) {
1942
- const { archiveFailures } = await import("./dist-LE5AU7FR.js");
1944
+ const { archiveFailures } = await import("./dist-BWFFVKEW.js");
1943
1945
  const result = await archiveFailures(projectPath, input.stream, input.session);
1944
1946
  if (!result.ok) return resultToMcpResponse(result);
1945
1947
  return resultToMcpResponse(Ok({ archived: true }));
1946
1948
  }
1947
1949
  async function handleReset(projectPath, input) {
1948
- const { eventSourcing } = await import("./dist-LE5AU7FR.js");
1950
+ const { eventSourcing } = await import("./dist-BWFFVKEW.js");
1949
1951
  const result = await eventSourcing.resetEventLog(projectPath, {
1950
1952
  stream: input.stream,
1951
1953
  session: input.session
@@ -1954,7 +1956,7 @@ async function handleReset(projectPath, input) {
1954
1956
  return resultToMcpResponse(Ok({ reset: true }));
1955
1957
  }
1956
1958
  async function handleGate(projectPath, input) {
1957
- const { runMechanicalGate } = await import("./dist-LE5AU7FR.js");
1959
+ const { runMechanicalGate } = await import("./dist-BWFFVKEW.js");
1958
1960
  const result = await runMechanicalGate(projectPath);
1959
1961
  if (result.ok) {
1960
1962
  await emitSkillEvent(projectPath, {
@@ -1974,7 +1976,7 @@ async function handleGate(projectPath, input) {
1974
1976
  }
1975
1977
  async function handleSaveHandoff(projectPath, input) {
1976
1978
  if (!input.handoff) return mcpError("Error: handoff is required for save-handoff action");
1977
- const { saveHandoff } = await import("./dist-LE5AU7FR.js");
1979
+ const { saveHandoff } = await import("./dist-BWFFVKEW.js");
1978
1980
  const result = await saveHandoff(
1979
1981
  projectPath,
1980
1982
  input.handoff,
@@ -1996,7 +1998,7 @@ async function handleSaveHandoff(projectPath, input) {
1996
1998
  return resultToMcpResponse(Ok({ saved: true }));
1997
1999
  }
1998
2000
  async function handleLoadHandoff(projectPath, input) {
1999
- const { loadHandoff } = await import("./dist-LE5AU7FR.js");
2001
+ const { loadHandoff } = await import("./dist-BWFFVKEW.js");
2000
2002
  return resultToMcpResponse(await loadHandoff(projectPath, input.stream, input.session));
2001
2003
  }
2002
2004
  async function handleAppendEntry(projectPath, input) {
@@ -2004,7 +2006,7 @@ async function handleAppendEntry(projectPath, input) {
2004
2006
  if (!input.authorSkill) return mcpError("Error: authorSkill is required for append_entry action");
2005
2007
  if (!input.content) return mcpError("Error: content is required for append_entry action");
2006
2008
  if (input.session) {
2007
- const { appendSessionEntry } = await import("./dist-LE5AU7FR.js");
2009
+ const { appendSessionEntry } = await import("./dist-BWFFVKEW.js");
2008
2010
  const result = await appendSessionEntry(
2009
2011
  projectPath,
2010
2012
  input.session,
@@ -2018,7 +2020,7 @@ async function handleAppendEntry(projectPath, input) {
2018
2020
  return mcpError("Error: session is required for non-decisions sections");
2019
2021
  }
2020
2022
  const { randomUUID: randomUUID10 } = await import("crypto");
2021
- const { emitCoreEvent } = await import("./state-events-XQPHGLG5.js");
2023
+ const { emitCoreEvent } = await import("./state-events-PBDNQPXT.js");
2022
2024
  const r = await emitCoreEvent(
2023
2025
  projectPath,
2024
2026
  {
@@ -2036,7 +2038,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
2036
2038
  if (!input.entryId) return mcpError("Error: entryId is required for update_entry_status action");
2037
2039
  if (!input.newStatus)
2038
2040
  return mcpError("Error: newStatus is required for update_entry_status action");
2039
- const { updateSessionEntryStatus } = await import("./dist-LE5AU7FR.js");
2041
+ const { updateSessionEntryStatus } = await import("./dist-BWFFVKEW.js");
2040
2042
  const result = await updateSessionEntryStatus(
2041
2043
  projectPath,
2042
2044
  input.session,
@@ -2046,7 +2048,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
2046
2048
  );
2047
2049
  if (result.ok && input.section === "decisions" && input.newStatus === "resolved") {
2048
2050
  try {
2049
- const { emitApprovalResolved } = await import("./state-events-XQPHGLG5.js");
2051
+ const { emitApprovalResolved } = await import("./state-events-PBDNQPXT.js");
2050
2052
  await emitApprovalResolved(projectPath, input.entryId, input.newStatus, {
2051
2053
  stream: input.stream
2052
2054
  });
@@ -2058,7 +2060,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
2058
2060
  async function handleReadSection(projectPath, input) {
2059
2061
  if (!input.session) return mcpError("Error: session is required for read_section action");
2060
2062
  if (!input.section) return mcpError("Error: section is required for read_section action");
2061
- const { readSessionSection } = await import("./dist-LE5AU7FR.js");
2063
+ const { readSessionSection } = await import("./dist-BWFFVKEW.js");
2062
2064
  const result = await readSessionSection(
2063
2065
  projectPath,
2064
2066
  input.session,
@@ -2068,13 +2070,13 @@ async function handleReadSection(projectPath, input) {
2068
2070
  }
2069
2071
  async function handleReadSections(projectPath, input) {
2070
2072
  if (!input.session) return mcpError("Error: session is required for read_sections action");
2071
- const { readSessionSections } = await import("./dist-LE5AU7FR.js");
2073
+ const { readSessionSections } = await import("./dist-BWFFVKEW.js");
2072
2074
  const result = await readSessionSections(projectPath, input.session);
2073
2075
  return resultToMcpResponse(result);
2074
2076
  }
2075
2077
  async function handleArchiveSession(projectPath, input) {
2076
2078
  if (!input.session) return mcpError("Error: session is required for archive_session action");
2077
- const { archiveSession } = await import("./dist-LE5AU7FR.js");
2079
+ const { archiveSession } = await import("./dist-BWFFVKEW.js");
2078
2080
  const { buildArchiveHooks } = await import("@harness-engineering/orchestrator");
2079
2081
  const hooks = buildArchiveHooks({ projectPath });
2080
2082
  const result = await archiveSession(projectPath, input.session, { hooks });
@@ -2117,7 +2119,7 @@ async function handlePhaseComplete(projectPath, input) {
2117
2119
  async function handleTaskTransition(projectPath, input) {
2118
2120
  if (!input.taskId) return mcpError("Error: taskId is required for task-transition action");
2119
2121
  if (!input.toLane) return mcpError("Error: toLane is required for task-transition action");
2120
- const { eventSourcing } = await import("./dist-LE5AU7FR.js");
2122
+ const { eventSourcing } = await import("./dist-BWFFVKEW.js");
2121
2123
  const scope = { stream: input.stream, session: input.session };
2122
2124
  if (input.dependsOn) {
2123
2125
  const reg = await eventSourcing.registerTask(projectPath, input.taskId, input.dependsOn, scope);
@@ -2181,7 +2183,7 @@ var listStreamsDefinition = {
2181
2183
  };
2182
2184
  async function handleListStreams(input) {
2183
2185
  try {
2184
- const { listStreams, loadStreamIndex } = await import("./dist-LE5AU7FR.js");
2186
+ const { listStreams, loadStreamIndex } = await import("./dist-BWFFVKEW.js");
2185
2187
  const projectPath = sanitizePath(input.path);
2186
2188
  const indexResult = await loadStreamIndex(projectPath);
2187
2189
  const streamsResult = await listStreams(projectPath);
@@ -2219,7 +2221,7 @@ var checkPhaseGateDefinition = {
2219
2221
  };
2220
2222
  async function handleCheckPhaseGate(input) {
2221
2223
  try {
2222
- const { runCheckPhaseGate } = await import("./check-phase-gate-RZUSDB3O.js");
2224
+ const { runCheckPhaseGate } = await import("./check-phase-gate-GN4X7HT6.js");
2223
2225
  const result = await runCheckPhaseGate({ cwd: sanitizePath(input.path) });
2224
2226
  if (result.ok) {
2225
2227
  return { content: [{ type: "text", text: JSON.stringify(result.value) }] };
@@ -2275,7 +2277,7 @@ async function handleValidateCrossCheck(input) {
2275
2277
  };
2276
2278
  }
2277
2279
  try {
2278
- const { runCrossCheck } = await import("./validate-cross-check-HKKQA7K5.js");
2280
+ const { runCrossCheck } = await import("./validate-cross-check-H2OUHTID.js");
2279
2281
  const specsDir = path12.resolve(projectPath, input.specsDir ?? "docs/specs");
2280
2282
  if (!specsDir.startsWith(projectPath)) {
2281
2283
  return {
@@ -3098,8 +3100,8 @@ async function handleGenerateSlashCommands(input) {
3098
3100
  // src/mcp/resources/state.ts
3099
3101
  async function getStateResource(projectRoot) {
3100
3102
  try {
3101
- const { migrateToStreams } = await import("./dist-LE5AU7FR.js");
3102
- const { readHarnessState } = await import("./state-events-XQPHGLG5.js");
3103
+ const { migrateToStreams } = await import("./dist-BWFFVKEW.js");
3104
+ const { readHarnessState } = await import("./state-events-PBDNQPXT.js");
3103
3105
  await migrateToStreams(projectRoot);
3104
3106
  const result = await readHarnessState(projectRoot);
3105
3107
  if (result.ok) {
@@ -4119,7 +4121,7 @@ var generateAgentDefinitionsDefinition = {
4119
4121
  }
4120
4122
  };
4121
4123
  async function handleGenerateAgentDefinitions(input) {
4122
- const { generateAgentDefinitions } = await import("./generate-agent-definitions-PYZ3E7SP.js");
4124
+ const { generateAgentDefinitions } = await import("./generate-agent-definitions-KPRHY6X3.js");
4123
4125
  const platforms = input.platform === "all" || !input.platform ? ["claude-code", "gemini-cli"] : [input.platform];
4124
4126
  const results = generateAgentDefinitions({
4125
4127
  platforms: [...platforms],
@@ -4836,8 +4838,8 @@ async function handleManageRoadmap(input) {
4836
4838
  release,
4837
4839
  promoteFeature,
4838
4840
  groomRoadmap
4839
- } = await import("./dist-LE5AU7FR.js");
4840
- const { Ok: Ok2 } = await import("./dist-FBBADRYS.js");
4841
+ } = await import("./dist-BWFFVKEW.js");
4842
+ const { Ok: Ok2 } = await import("./dist-ISDDHDOR.js");
4841
4843
  const projectPath = projectPathPre;
4842
4844
  const deps = {
4843
4845
  parseRoadmap,
@@ -5280,7 +5282,7 @@ async function handleTransition(validInput, projectPath, id) {
5280
5282
  const transition = transitionResult.data;
5281
5283
  const prompt = renderTransition(transition);
5282
5284
  try {
5283
- const { saveHandoff } = await import("./dist-LE5AU7FR.js");
5285
+ const { saveHandoff } = await import("./dist-BWFFVKEW.js");
5284
5286
  await saveHandoff(
5285
5287
  projectPath,
5286
5288
  {
@@ -5361,7 +5363,7 @@ async function handleEmitInteraction(input) {
5361
5363
  }
5362
5364
  async function recordInteraction(projectPath, id, type, decision, stream) {
5363
5365
  try {
5364
- const { emitCoreEvent, emitUserInputCaptured, emitApprovalRequested } = await import("./state-events-XQPHGLG5.js");
5366
+ const { emitCoreEvent, emitUserInputCaptured, emitApprovalRequested } = await import("./state-events-PBDNQPXT.js");
5365
5367
  await emitCoreEvent(
5366
5368
  projectPath,
5367
5369
  {
@@ -5522,10 +5524,10 @@ async function handleGatherContext(input) {
5522
5524
  input.include ?? ["state", "learnings", "handoff", "graph", "validation", "businessKnowledge"]
5523
5525
  );
5524
5526
  const errors = [];
5525
- const statePromise = includeSet.has("state") ? import("./state-events-XQPHGLG5.js").then(
5527
+ const statePromise = includeSet.has("state") ? import("./state-events-PBDNQPXT.js").then(
5526
5528
  (m) => m.readHarnessState(projectPath, { session: input.session })
5527
5529
  ) : Promise.resolve(null);
5528
- const learningsPromise = includeSet.has("learnings") ? import("./dist-LE5AU7FR.js").then(
5530
+ const learningsPromise = includeSet.has("learnings") ? import("./dist-BWFFVKEW.js").then(
5529
5531
  (core) => core.loadBudgetedLearnings(projectPath, {
5530
5532
  intent: input.intent,
5531
5533
  tokenBudget: input.learningsBudget ?? 1e3,
@@ -5534,7 +5536,7 @@ async function handleGatherContext(input) {
5534
5536
  ...input.depth !== void 0 && { depth: input.depth }
5535
5537
  })
5536
5538
  ) : Promise.resolve(null);
5537
- const handoffPromise = includeSet.has("handoff") ? import("./dist-LE5AU7FR.js").then(
5539
+ const handoffPromise = includeSet.has("handoff") ? import("./dist-BWFFVKEW.js").then(
5538
5540
  (core) => core.loadHandoff(projectPath, void 0, input.session)
5539
5541
  ) : Promise.resolve(null);
5540
5542
  const graphPromise = includeSet.has("graph") ? (async () => {
@@ -5578,15 +5580,15 @@ async function handleGatherContext(input) {
5578
5580
  context: contextBlocks
5579
5581
  };
5580
5582
  })() : Promise.resolve(null);
5581
- const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-LE5AU7FR.js").then(
5583
+ const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-BWFFVKEW.js").then(
5582
5584
  (core) => core.readSessionSections(projectPath, input.session)
5583
5585
  ) : Promise.resolve(null);
5584
5586
  const shouldIncludeEvents = input.includeEvents !== void 0 ? input.includeEvents : includeSet.has("events") || !!input.session && !input.include;
5585
- const eventsPromise = shouldIncludeEvents ? import("./state-events-XQPHGLG5.js").then(
5587
+ const eventsPromise = shouldIncludeEvents ? import("./state-events-PBDNQPXT.js").then(
5586
5588
  (m) => m.readAuditTimeline(projectPath, { session: input.session })
5587
5589
  ) : Promise.resolve(null);
5588
5590
  const validationPromise = includeSet.has("validation") ? (async () => {
5589
- const { handleValidateProject: handleValidateProject2 } = await import("./validate-ON7YMVLY.js");
5591
+ const { handleValidateProject: handleValidateProject2 } = await import("./validate-XIMNCIKR.js");
5590
5592
  const result = await handleValidateProject2({ path: projectPath });
5591
5593
  const first = result.content[0];
5592
5594
  return first ? JSON.parse(first.text) : null;
@@ -5689,7 +5691,7 @@ async function handleGatherContext(input) {
5689
5691
  };
5690
5692
  if (input.session) {
5691
5693
  try {
5692
- const core = await import("./dist-LE5AU7FR.js");
5694
+ const core = await import("./dist-BWFFVKEW.js");
5693
5695
  core.updateSessionIndex(
5694
5696
  projectPath,
5695
5697
  input.session,
@@ -5887,7 +5889,7 @@ async function handleReviewChanges(input) {
5887
5889
  }
5888
5890
  }
5889
5891
  async function runQuickReview(projectPath, diff, diffLines, downgraded, offset, limit) {
5890
- const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-NDGZZ37W.js");
5892
+ const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-WIWWDVUC.js");
5891
5893
  const result = await handleAnalyzeDiff2({ diff, path: projectPath });
5892
5894
  const firstContent = result.content[0];
5893
5895
  if (!firstContent) throw new Error("Empty analyze_diff response");
@@ -5922,7 +5924,7 @@ function extractFileCount(diffParsed) {
5922
5924
  return files?.length ?? 0;
5923
5925
  }
5924
5926
  async function runStandardReview(projectPath, diff, diffLines, downgraded, offset, limit) {
5925
- const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-NDGZZ37W.js");
5927
+ const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-WIWWDVUC.js");
5926
5928
  const [diffResult, reviewResult] = await Promise.all([
5927
5929
  handleAnalyzeDiff2({ diff, path: projectPath }),
5928
5930
  handleCreateSelfReview2({ path: projectPath, diff })
@@ -5957,7 +5959,7 @@ async function runStandardReview(projectPath, diff, diffLines, downgraded, offse
5957
5959
  };
5958
5960
  }
5959
5961
  async function runDeepReview(projectPath, diff, diffLines, _downgraded, offset, limit) {
5960
- const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-UETEOWSS.js");
5962
+ const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-BDT6Y6QV.js");
5961
5963
  const result = await handleRunCodeReview2({
5962
5964
  path: projectPath,
5963
5965
  diff,
@@ -6218,8 +6220,8 @@ function validationError(messages) {
6218
6220
  async function handlePlanParallelization(input) {
6219
6221
  try {
6220
6222
  const projectPath = sanitizePath(input.path);
6221
- const { PlanTaskSchema } = await import("./dist-FBBADRYS.js");
6222
- const { planParallelization, validatePlanTasks } = await import("./dist-LE5AU7FR.js");
6223
+ const { PlanTaskSchema } = await import("./dist-ISDDHDOR.js");
6224
+ const { planParallelization, validatePlanTasks } = await import("./dist-BWFFVKEW.js");
6223
6225
  const parsed = PlanTaskSchema.array().safeParse(input.tasks);
6224
6226
  if (!parsed.success) {
6225
6227
  return validationError(parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`));
@@ -6331,7 +6333,7 @@ async function handleDetectStaleConstraints(input) {
6331
6333
  ]
6332
6334
  };
6333
6335
  }
6334
- const { detectStaleConstraints } = await import("./dist-LE5AU7FR.js");
6336
+ const { detectStaleConstraints } = await import("./dist-BWFFVKEW.js");
6335
6337
  const result = detectStaleConstraints(
6336
6338
  store,
6337
6339
  windowDays,
@@ -6462,10 +6464,10 @@ function countCriticalFindings(securityData) {
6462
6464
  return findings.filter((f) => f.severity === "error").length;
6463
6465
  }
6464
6466
  async function runHealthChecks(projectPath) {
6465
- const { handleAssessProject: handleAssessProject2 } = await import("./assess-project-2QPCNN7N.js");
6466
- const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-7PNQZOWV.js");
6467
- const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-35XURODP.js");
6468
- const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-6AIUZXF5.js");
6467
+ const { handleAssessProject: handleAssessProject2 } = await import("./assess-project-ITSB6W4L.js");
6468
+ const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-OIMIBDJC.js");
6469
+ const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-3B4U2BTF.js");
6470
+ const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-FWSDTTEW.js");
6469
6471
  const [assessResult, depsResult, entropyResult, securityResult] = await Promise.all([
6470
6472
  handleAssessProject2({
6471
6473
  path: projectPath,
@@ -7329,7 +7331,7 @@ async function handleGetDecayTrends(input) {
7329
7331
  };
7330
7332
  }
7331
7333
  try {
7332
- const core = await import("./dist-LE5AU7FR.js");
7334
+ const core = await import("./dist-BWFFVKEW.js");
7333
7335
  const { TimelineManager } = core;
7334
7336
  const manager = new TimelineManager(projectPath);
7335
7337
  const timeline = manager.load();
@@ -7464,7 +7466,7 @@ async function handleCodeOutline(input) {
7464
7466
  };
7465
7467
  }
7466
7468
  try {
7467
- const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-LE5AU7FR.js");
7469
+ const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-BWFFVKEW.js");
7468
7470
  const { stat } = await import("fs/promises");
7469
7471
  const stats = await stat(targetPath).catch(() => null);
7470
7472
  if (stats?.isFile()) {
@@ -7483,7 +7485,7 @@ async function handleCodeOutline(input) {
7483
7485
  })
7484
7486
  );
7485
7487
  fileStats.sort((a, b) => b.mtimeMs - a.mtimeMs);
7486
- const { paginate: paginate2 } = await import("./dist-LE5AU7FR.js");
7488
+ const { paginate: paginate2 } = await import("./dist-BWFFVKEW.js");
7487
7489
  const paged = paginate2(fileStats, input.offset ?? 0, input.limit ?? 30);
7488
7490
  const results = [];
7489
7491
  for (const entry of paged.items) {
@@ -7556,7 +7558,7 @@ async function handleCodeSearch(input) {
7556
7558
  };
7557
7559
  }
7558
7560
  try {
7559
- const { searchSymbols } = await import("./dist-LE5AU7FR.js");
7561
+ const { searchSymbols } = await import("./dist-BWFFVKEW.js");
7560
7562
  const result = await searchSymbols(input.query, directory, input.glob);
7561
7563
  const lines = [`Search: "${result.query}" \u2014 ${result.matches.length} matches`];
7562
7564
  for (const match of result.matches) {
@@ -7625,7 +7627,7 @@ async function handleCodeUnfold(input) {
7625
7627
  }
7626
7628
  try {
7627
7629
  if (input.symbol) {
7628
- const { unfoldSymbol } = await import("./dist-LE5AU7FR.js");
7630
+ const { unfoldSymbol } = await import("./dist-BWFFVKEW.js");
7629
7631
  const result = await unfoldSymbol(filePath, input.symbol);
7630
7632
  const header = result.warning ? `${result.file}:${result.startLine}-${result.endLine} ${result.warning}
7631
7633
  ` : `${result.file}:${result.startLine}-${result.endLine}
@@ -7633,7 +7635,7 @@ async function handleCodeUnfold(input) {
7633
7635
  return { content: [{ type: "text", text: header + result.content }] };
7634
7636
  }
7635
7637
  if (input.startLine != null && input.endLine != null) {
7636
- const { unfoldRange } = await import("./dist-LE5AU7FR.js");
7638
+ const { unfoldRange } = await import("./dist-BWFFVKEW.js");
7637
7639
  const result = await unfoldRange(filePath, input.startLine, input.endLine);
7638
7640
  const header = `${result.file}:${result.startLine}-${result.endLine}
7639
7641
  `;
@@ -7818,7 +7820,7 @@ async function handlePredictFailures(input) {
7818
7820
  };
7819
7821
  }
7820
7822
  try {
7821
- const core = await import("./dist-LE5AU7FR.js");
7823
+ const core = await import("./dist-BWFFVKEW.js");
7822
7824
  const { TimelineManager, PredictionEngine, SpecImpactEstimator } = core;
7823
7825
  const manager = new TimelineManager(projectPath);
7824
7826
  const includeRoadmap = input.includeRoadmap !== false;
@@ -8927,7 +8929,7 @@ async function handleDetectConstraintEmergence(input) {
8927
8929
  }
8928
8930
  const nodePath = await import("path");
8929
8931
  const historyPath = nodePath.resolve(projectPath, ".harness/arch/violation-history.json");
8930
- const { ViolationHistoryManager, detectEmergentConstraints } = await import("./dist-LE5AU7FR.js");
8932
+ const { ViolationHistoryManager, detectEmergentConstraints } = await import("./dist-BWFFVKEW.js");
8931
8933
  const manager = new ViolationHistoryManager(historyPath);
8932
8934
  const history = manager.load();
8933
8935
  const options = { windowWeeks, minOccurrences };
@@ -9015,7 +9017,7 @@ async function handleRunCIChecks(input) {
9015
9017
  };
9016
9018
  }
9017
9019
  try {
9018
- const { runCIChecks } = await import("./dist-LE5AU7FR.js");
9020
+ const { runCIChecks } = await import("./dist-BWFFVKEW.js");
9019
9021
  const skip = input.checks ? VALID_CHECKS.filter((c) => !input.checks.includes(c)) : [];
9020
9022
  const result = await runCIChecks({
9021
9023
  projectRoot: projectPath,
@@ -9077,7 +9079,7 @@ async function handleGenerateBlueprint(input) {
9077
9079
  };
9078
9080
  }
9079
9081
  try {
9080
- const { ProjectScanner } = await import("./dist-LE5AU7FR.js");
9082
+ const { ProjectScanner } = await import("./dist-BWFFVKEW.js");
9081
9083
  const scanner = new ProjectScanner(projectPath);
9082
9084
  const data = await scanner.scan();
9083
9085
  return {
@@ -9280,7 +9282,7 @@ function validateProposalCrossFields(input) {
9280
9282
  }
9281
9283
  async function loadCoreProposalApi() {
9282
9284
  try {
9283
- const core = await import("./dist-LE5AU7FR.js");
9285
+ const core = await import("./dist-BWFFVKEW.js");
9284
9286
  return {
9285
9287
  createProposal: core.createProposal,
9286
9288
  ProposalConflictError: core.ProposalConflictError
@@ -19874,7 +19876,7 @@ async function handleValidateStrategy(input) {
19874
19876
  } catch (error) {
19875
19877
  return mcpError2(error instanceof Error ? error.message : String(error));
19876
19878
  }
19877
- const { validateStrategy } = await import("./dist-LE5AU7FR.js");
19879
+ const { validateStrategy } = await import("./dist-BWFFVKEW.js");
19878
19880
  const result = await validateStrategy(projectPath);
19879
19881
  if (!result.ok) {
19880
19882
  return mcpJson({ present: true, valid: false, error: result.error.message });
@@ -19899,7 +19901,7 @@ async function handleReadStrategy(input) {
19899
19901
  } catch (error) {
19900
19902
  return mcpError2(error instanceof Error ? error.message : String(error));
19901
19903
  }
19902
- const core = await import("./dist-LE5AU7FR.js");
19904
+ const core = await import("./dist-BWFFVKEW.js");
19903
19905
  const validation = await core.validateStrategy(projectPath);
19904
19906
  if (!validation.ok) {
19905
19907
  return mcpJson({ present: true, valid: false, error: validation.error.message });
@@ -19951,7 +19953,7 @@ async function handleWriteStrategy(input) {
19951
19953
  } catch (error) {
19952
19954
  return mcpError2(error instanceof Error ? error.message : String(error));
19953
19955
  }
19954
- const core = await import("./dist-LE5AU7FR.js");
19956
+ const core = await import("./dist-BWFFVKEW.js");
19955
19957
  try {
19956
19958
  core.writeStrategyDoc(input.doc, {
19957
19959
  cwd: projectPath,
@@ -19995,7 +19997,7 @@ async function handleSeedPulseFromStrategy(input) {
19995
19997
  } catch (error) {
19996
19998
  return mcpError3(error instanceof Error ? error.message : String(error));
19997
19999
  }
19998
- const core = await import("./dist-LE5AU7FR.js");
20000
+ const core = await import("./dist-BWFFVKEW.js");
19999
20001
  const seed = core.seedFromStrategy({ cwd: projectPath });
20000
20002
  return mcpJson2(seed);
20001
20003
  }
@@ -20030,7 +20032,7 @@ async function handleWritePulseConfig(input) {
20030
20032
  return mcpError3(error instanceof Error ? error.message : String(error));
20031
20033
  }
20032
20034
  const resolvedConfigPath = input.configPath !== void 0 ? path55.isAbsolute(input.configPath) ? input.configPath : path55.join(projectPath, input.configPath) : path55.join(projectPath, "harness.config.json");
20033
- const core = await import("./dist-LE5AU7FR.js");
20035
+ const core = await import("./dist-BWFFVKEW.js");
20034
20036
  try {
20035
20037
  core.writePulseConfig(input.config, {
20036
20038
  configPath: resolvedConfigPath,
@@ -20079,7 +20081,7 @@ async function handleAcquireCompoundLock(input) {
20079
20081
  } catch (error) {
20080
20082
  return mcpError4(error instanceof Error ? error.message : String(error));
20081
20083
  }
20082
- const core = await import("./dist-LE5AU7FR.js");
20084
+ const core = await import("./dist-BWFFVKEW.js");
20083
20085
  try {
20084
20086
  const handle = core.acquireCompoundLock(
20085
20087
  input.category,
@@ -20445,7 +20447,7 @@ async function appendUpdateNotification(result, resolvedRoot) {
20445
20447
  shouldRunCheck,
20446
20448
  readCheckState,
20447
20449
  spawnBackgroundCheck
20448
- } = await import("./dist-LE5AU7FR.js");
20450
+ } = await import("./dist-BWFFVKEW.js");
20449
20451
  const { CLI_VERSION } = await import("./version-CUI434OP.js");
20450
20452
  const configInterval = readConfigInterval(resolvedRoot);
20451
20453
  const DEFAULT_INTERVAL = 864e5;
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-33OU3LYX.js";
3
+ } from "./chunk-CRHQYBDA.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
7
- } from "./chunk-UEXQMI6K.js";
7
+ } from "./chunk-VJDSB7CI.js";
8
8
 
9
9
  // src/persona/generators/ci-workflow.ts
10
10
  init_dist();