@harness-engineering/cli 4.0.1 → 4.2.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 (86) hide show
  1. package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +40 -8
  2. package/dist/agents/skills/claude-code/harness-catalog-retrospective/SKILL.md +124 -0
  3. package/dist/agents/skills/claude-code/harness-catalog-retrospective/skill.yaml +48 -0
  4. package/dist/agents/skills/claude-code/harness-execution/SKILL.md +13 -0
  5. package/dist/agents/skills/claude-code/harness-parallel-agents/SKILL.md +3 -0
  6. package/dist/agents/skills/claude-code/harness-planning/SKILL.md +3 -1
  7. package/dist/agents/skills/claude-code/pre-merge-brief/SKILL.md +86 -0
  8. package/dist/agents/skills/claude-code/pre-merge-brief/skill.yaml +67 -0
  9. package/dist/agents/skills/codex/harness-autopilot/SKILL.md +40 -8
  10. package/dist/agents/skills/codex/harness-catalog-retrospective/SKILL.md +124 -0
  11. package/dist/agents/skills/codex/harness-catalog-retrospective/skill.yaml +48 -0
  12. package/dist/agents/skills/codex/harness-execution/SKILL.md +13 -0
  13. package/dist/agents/skills/codex/harness-parallel-agents/SKILL.md +3 -0
  14. package/dist/agents/skills/codex/harness-planning/SKILL.md +3 -1
  15. package/dist/agents/skills/codex/pre-merge-brief/SKILL.md +86 -0
  16. package/dist/agents/skills/codex/pre-merge-brief/skill.yaml +67 -0
  17. package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +40 -8
  18. package/dist/agents/skills/cursor/harness-catalog-retrospective/SKILL.md +124 -0
  19. package/dist/agents/skills/cursor/harness-catalog-retrospective/skill.yaml +48 -0
  20. package/dist/agents/skills/cursor/harness-execution/SKILL.md +13 -0
  21. package/dist/agents/skills/cursor/harness-parallel-agents/SKILL.md +3 -0
  22. package/dist/agents/skills/cursor/harness-planning/SKILL.md +3 -1
  23. package/dist/agents/skills/cursor/pre-merge-brief/SKILL.md +86 -0
  24. package/dist/agents/skills/cursor/pre-merge-brief/skill.yaml +67 -0
  25. package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +40 -8
  26. package/dist/agents/skills/gemini-cli/harness-catalog-retrospective/SKILL.md +124 -0
  27. package/dist/agents/skills/gemini-cli/harness-catalog-retrospective/skill.yaml +48 -0
  28. package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +13 -0
  29. package/dist/agents/skills/gemini-cli/harness-parallel-agents/SKILL.md +3 -0
  30. package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +3 -1
  31. package/dist/agents/skills/gemini-cli/pre-merge-brief/SKILL.md +86 -0
  32. package/dist/agents/skills/gemini-cli/pre-merge-brief/skill.yaml +67 -0
  33. package/dist/{agents-md-VJLYEH2S.js → agents-md-BK2UPKUC.js} +4 -4
  34. package/dist/analyzer-XRCV63KC-6T2Z32XC.js +26 -0
  35. package/dist/{architecture-YQH2NYXY.js → architecture-7PNQZOWV.js} +5 -5
  36. package/dist/{assess-project-KOTAPAHD.js → assess-project-2QPCNN7N.js} +5 -3
  37. package/dist/bin/harness-mcp.js +15 -15
  38. package/dist/bin/harness.js +26 -26
  39. package/dist/{check-phase-gate-CHU2E3OU.js → check-phase-gate-RZUSDB3O.js} +5 -5
  40. package/dist/{chunk-MMLQPHZ5.js → chunk-33OU3LYX.js} +380 -15
  41. package/dist/{chunk-XAVMTAUT.js → chunk-6STDKKAM.js} +19 -3
  42. package/dist/{chunk-I3CGCZJF.js → chunk-BJDT3VGQ.js} +6 -6
  43. package/dist/{chunk-M7F2PPN3.js → chunk-D5YCPIK6.js} +2 -2
  44. package/dist/{chunk-SDMV4QHM.js → chunk-DBCC7KIW.js} +25 -7
  45. package/dist/{chunk-E5EW5HVJ.js → chunk-DVG6DDX6.js} +1 -1
  46. package/dist/{chunk-4VXFZSYF.js → chunk-DW6HE5DH.js} +2 -2
  47. package/dist/{chunk-7PJCK7UE.js → chunk-E5KJOUHI.js} +7 -7
  48. package/dist/{chunk-6SCYTIF4.js → chunk-HU7NS7JA.js} +32 -7
  49. package/dist/{chunk-36GQREOE.js → chunk-HUC73DZC.js} +3 -3
  50. package/dist/{chunk-EYMOPFSD.js → chunk-J5MFNKE7.js} +2 -2
  51. package/dist/{chunk-JPVOI7GP.js → chunk-J7H5I4FO.js} +2 -2
  52. package/dist/{chunk-RG3TNIUB.js → chunk-K5R2I37T.js} +208 -97
  53. package/dist/{chunk-AAUY53CC.js → chunk-KHL6WFRL.js} +2 -2
  54. package/dist/{chunk-OQ6KOQEV.js → chunk-KYFXXEK3.js} +3 -3
  55. package/dist/{chunk-5RSXUAMN.js → chunk-MHHISNS2.js} +2 -2
  56. package/dist/{chunk-GHBFNLV2.js → chunk-RRCS27GT.js} +1531 -1175
  57. package/dist/{chunk-6YFHUIGT.js → chunk-RZTLXZHJ.js} +59 -21
  58. package/dist/{chunk-AX5KGRM6.js → chunk-SI4O2W4H.js} +2 -2
  59. package/dist/{chunk-BDGTZRZ6.js → chunk-UEXQMI6K.js} +56 -44
  60. package/dist/{chunk-7TIJXWG3.js → chunk-V2GJE5J5.js} +3 -3
  61. package/dist/{chunk-T746REAE.js → chunk-VC2B275U.js} +2 -2
  62. package/dist/{chunk-SEA2PFVI.js → chunk-XACP5P2J.js} +2 -2
  63. package/dist/{chunk-UWVMJEUJ.js → chunk-YTJIRQON.js} +2 -2
  64. package/dist/{chunk-YANR2RL7.js → chunk-ZIJABBGZ.js} +2 -2
  65. package/dist/{ci-workflow-HO4WKGNG.js → ci-workflow-LGN7LHHO.js} +4 -4
  66. package/dist/{dist-ICW4QUEW.js → dist-FBBADRYS.js} +3 -1
  67. package/dist/{dist-6D2F2J57.js → dist-LE5AU7FR.js} +19 -3
  68. package/dist/{docs-FP47JONV.js → docs-3BTPSHKE.js} +5 -5
  69. package/dist/{engine-YUA6IYOG.js → engine-GWGU4AMH.js} +4 -4
  70. package/dist/{entropy-DBW2INZU.js → entropy-35XURODP.js} +7 -4
  71. package/dist/{feedback-BPHADTRQ.js → feedback-NDGZZ37W.js} +1 -1
  72. package/dist/{generate-agent-definitions-KPVGBGDY.js → generate-agent-definitions-PYZ3E7SP.js} +5 -5
  73. package/dist/hooks/sentinel-pre.js +15 -138
  74. package/dist/index.d.ts +61 -0
  75. package/dist/index.js +25 -25
  76. package/dist/{loader-QOJQ6NZM.js → loader-QK2OJXKB.js} +4 -4
  77. package/dist/{mcp-ZPX6O767.js → mcp-Z5YMV7TA.js} +15 -15
  78. package/dist/{performance-FXYTGJGQ.js → performance-VAYOYPVK.js} +5 -5
  79. package/dist/{review-pipeline-2TFQ5OAE.js → review-pipeline-UETEOWSS.js} +4 -4
  80. package/dist/{runtime-XK6ZCHKE.js → runtime-J7KFACTK.js} +4 -4
  81. package/dist/{security-4W2P5ZGI.js → security-6AIUZXF5.js} +1 -1
  82. package/dist/{state-events-ECQAIZLU.js → state-events-XQPHGLG5.js} +4 -4
  83. package/dist/{validate-64KTEGIE.js → validate-ON7YMVLY.js} +5 -5
  84. package/dist/{validate-cross-check-J5PVGICB.js → validate-cross-check-HKKQA7K5.js} +4 -4
  85. package/package.json +8 -7
  86. package/dist/analyzer-V633GUHY-OV335HGM.js +0 -26
@@ -7,13 +7,13 @@ import {
7
7
  import {
8
8
  findConfigFile,
9
9
  loadConfig
10
- } from "./chunk-XAVMTAUT.js";
10
+ } from "./chunk-6STDKKAM.js";
11
11
  import {
12
12
  init_dist
13
- } from "./chunk-MMLQPHZ5.js";
13
+ } from "./chunk-33OU3LYX.js";
14
14
  import {
15
15
  Ok
16
- } from "./chunk-BDGTZRZ6.js";
16
+ } from "./chunk-UEXQMI6K.js";
17
17
 
18
18
  // src/mcp/tools/docs.ts
19
19
  init_dist();
@@ -50,12 +50,12 @@ async function handleCheckDocs(input) {
50
50
  const projectPath = sanitizePath(input.path);
51
51
  const scope = input.scope ?? "coverage";
52
52
  if (scope === "integrity") {
53
- const { validateKnowledgeMap } = await import("./dist-6D2F2J57.js");
53
+ const { validateKnowledgeMap } = await import("./dist-LE5AU7FR.js");
54
54
  const result2 = await validateKnowledgeMap(projectPath);
55
55
  return resultToMcpResponse(result2);
56
56
  }
57
57
  if (scope === "all") {
58
- const { checkDocCoverage: checkDocCoverage2, validateKnowledgeMap } = await import("./dist-6D2F2J57.js");
58
+ const { checkDocCoverage: checkDocCoverage2, validateKnowledgeMap } = await import("./dist-LE5AU7FR.js");
59
59
  const domain2 = input.domain ?? "src";
60
60
  const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-STFGYKZH.js");
61
61
  const store2 = await loadGraphStore2(projectPath);
@@ -94,7 +94,7 @@ async function handleCheckDocs(input) {
94
94
  }
95
95
  return resultToMcpResponse(Ok({ coverage, integrity }));
96
96
  }
97
- const { checkDocCoverage } = await import("./dist-6D2F2J57.js");
97
+ const { checkDocCoverage } = await import("./dist-LE5AU7FR.js");
98
98
  const domain = input.domain ?? "src";
99
99
  const { loadGraphStore } = await import("./graph-loader-STFGYKZH.js");
100
100
  const store = await loadGraphStore(projectPath);
@@ -27,7 +27,7 @@ var runSecurityScanDefinition = {
27
27
  };
28
28
  async function handleRunSecurityScan(input) {
29
29
  try {
30
- const core = await import("./dist-6D2F2J57.js");
30
+ const core = await import("./dist-LE5AU7FR.js");
31
31
  const projectRoot = sanitizePath(input.path);
32
32
  let configData = {};
33
33
  try {
@@ -114,7 +114,7 @@ var getSecurityTrendsDefinition = {
114
114
  };
115
115
  async function handleGetSecurityTrends(input) {
116
116
  try {
117
- const core = await import("./dist-6D2F2J57.js");
117
+ const core = await import("./dist-LE5AU7FR.js");
118
118
  const projectRoot = sanitizePath(input.path);
119
119
  const manager = new core.SecurityTimelineManager(projectRoot);
120
120
  const trendOptions = {};
@@ -4,15 +4,26 @@ import {
4
4
  import {
5
5
  sanitizePath
6
6
  } from "./chunk-W6Y7ZW3Y.js";
7
+ import {
8
+ findConfigFile,
9
+ loadConfig
10
+ } from "./chunk-6STDKKAM.js";
7
11
  import {
8
12
  init_dist
9
- } from "./chunk-MMLQPHZ5.js";
13
+ } from "./chunk-33OU3LYX.js";
10
14
  import {
11
15
  Ok
12
- } from "./chunk-BDGTZRZ6.js";
16
+ } from "./chunk-UEXQMI6K.js";
13
17
 
14
18
  // src/mcp/tools/entropy.ts
15
19
  init_dist();
20
+ function loadEntropyConfig(projectPath) {
21
+ const configFile = findConfigFile(projectPath);
22
+ if (!configFile.ok) return void 0;
23
+ const loaded = loadConfig(configFile.value);
24
+ if (!loaded.ok) return void 0;
25
+ return loaded.value.entropy;
26
+ }
16
27
  async function loadEntropyGraphOptions(projectPath) {
17
28
  const { loadGraphStore } = await import("./graph-loader-STFGYKZH.js");
18
29
  const store = await loadGraphStore(projectPath);
@@ -127,17 +138,24 @@ function buildSummaryResponse(report) {
127
138
  }
128
139
  async function handleDetectEntropy(input) {
129
140
  try {
130
- const { EntropyAnalyzer } = await import("./dist-6D2F2J57.js");
141
+ const { EntropyAnalyzer } = await import("./dist-LE5AU7FR.js");
131
142
  const typeFilter = input.type ?? "all";
143
+ const projectPath = sanitizePath(input.path);
144
+ const entropy = loadEntropyConfig(projectPath);
145
+ const driftConfig = entropy?.drift;
146
+ const driftEnabled = typeFilter === "all" || typeFilter === "drift";
132
147
  const analyzer = new EntropyAnalyzer({
133
- rootDir: sanitizePath(input.path),
148
+ rootDir: projectPath,
149
+ ...entropy?.entryPoints && { entryPoints: entropy.entryPoints },
150
+ ...entropy?.excludePatterns && { exclude: entropy.excludePatterns },
151
+ ...driftConfig?.docPaths && { docPaths: driftConfig.docPaths },
134
152
  analyze: {
135
- drift: typeFilter === "all" || typeFilter === "drift",
153
+ drift: driftEnabled ? driftConfig ?? true : false,
136
154
  deadCode: typeFilter === "all" || typeFilter === "dead-code",
137
155
  patterns: typeFilter === "all" || typeFilter === "patterns"
138
156
  }
139
157
  });
140
- const graphOptions = await loadEntropyGraphOptions(sanitizePath(input.path));
158
+ const graphOptions = await loadEntropyGraphOptions(projectPath);
141
159
  const result = await analyzer.analyze(graphOptions);
142
160
  if (input.mode === "summary" && result.ok && !input.autoFix) {
143
161
  return buildSummaryResponse(result.value);
@@ -146,7 +164,7 @@ async function handleDetectEntropy(input) {
146
164
  return resultToMcpResponse(result);
147
165
  }
148
166
  if (!result.ok) return resultToMcpResponse(result);
149
- const { createFixes, applyFixes, generateSuggestions } = await import("./dist-6D2F2J57.js");
167
+ const { createFixes, applyFixes, generateSuggestions } = await import("./dist-LE5AU7FR.js");
150
168
  const report = result.value;
151
169
  const deadCode = report.deadCode;
152
170
  const fixTypesConfig = input.fixTypes ? { fixTypes: input.fixTypes } : void 0;
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  listPersonas,
6
6
  loadPersona
7
- } from "./chunk-5RSXUAMN.js";
7
+ } from "./chunk-MHHISNS2.js";
8
8
  import {
9
9
  GENERATED_HEADER_AGENT,
10
10
  VALID_PLATFORMS,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-MMLQPHZ5.js";
3
+ } from "./chunk-33OU3LYX.js";
4
4
  import {
5
5
  Ok
6
- } from "./chunk-BDGTZRZ6.js";
6
+ } from "./chunk-UEXQMI6K.js";
7
7
 
8
8
  // src/commands/validate-cross-check.ts
9
9
  init_dist();
@@ -7,13 +7,13 @@ import {
7
7
  import {
8
8
  findConfigFile,
9
9
  loadConfig
10
- } from "./chunk-XAVMTAUT.js";
10
+ } from "./chunk-6STDKKAM.js";
11
11
  import {
12
12
  init_dist
13
- } from "./chunk-MMLQPHZ5.js";
13
+ } from "./chunk-33OU3LYX.js";
14
14
  import {
15
15
  Ok
16
- } from "./chunk-BDGTZRZ6.js";
16
+ } from "./chunk-UEXQMI6K.js";
17
17
 
18
18
  // src/mcp/tools/performance.ts
19
19
  init_dist();
@@ -35,7 +35,7 @@ var checkPerformanceDefinition = {
35
35
  };
36
36
  async function handleCheckPerformance(input) {
37
37
  try {
38
- const { EntropyAnalyzer } = await import("./dist-6D2F2J57.js");
38
+ const { EntropyAnalyzer } = await import("./dist-LE5AU7FR.js");
39
39
  const typeFilter = input.type ?? "all";
40
40
  const projectPath = sanitizePath(input.path);
41
41
  let entryPoints;
@@ -98,7 +98,7 @@ var getPerfBaselinesDefinition = {
98
98
  };
99
99
  async function handleGetPerfBaselines(input) {
100
100
  try {
101
- const { BaselineManager } = await import("./dist-6D2F2J57.js");
101
+ const { BaselineManager } = await import("./dist-LE5AU7FR.js");
102
102
  const manager = new BaselineManager(sanitizePath(input.path));
103
103
  const baselines = manager.load();
104
104
  return resultToMcpResponse(
@@ -146,7 +146,7 @@ var updatePerfBaselinesDefinition = {
146
146
  };
147
147
  async function handleUpdatePerfBaselines(input) {
148
148
  try {
149
- const { BaselineManager } = await import("./dist-6D2F2J57.js");
149
+ const { BaselineManager } = await import("./dist-LE5AU7FR.js");
150
150
  const manager = new BaselineManager(sanitizePath(input.path));
151
151
  manager.save(input.results, input.commitHash);
152
152
  const updated = manager.load();
@@ -176,7 +176,7 @@ var getCriticalPathsDefinition = {
176
176
  };
177
177
  async function handleGetCriticalPaths(input) {
178
178
  try {
179
- const { CriticalPathResolver } = await import("./dist-6D2F2J57.js");
179
+ const { CriticalPathResolver } = await import("./dist-LE5AU7FR.js");
180
180
  const resolver = new CriticalPathResolver(sanitizePath(input.path));
181
181
  const result = await resolver.resolve();
182
182
  return resultToMcpResponse(Ok(result));
@@ -6,6 +6,29 @@ import {
6
6
  } from "./chunk-W6Y7ZW3Y.js";
7
7
 
8
8
  // src/mcp/tools/assess-project.ts
9
+ import * as fs from "fs";
10
+ import * as path from "path";
11
+ var TURBO_LINT = { command: "npx", args: ["turbo", "run", "lint", "--force"] };
12
+ function resolveLintCommand(projectPath) {
13
+ let linter;
14
+ try {
15
+ const raw = fs.readFileSync(path.join(projectPath, "harness.config.json"), "utf-8");
16
+ const config = JSON.parse(raw);
17
+ linter = config.tooling?.linter ?? config.template?.tooling?.linter;
18
+ } catch {
19
+ return TURBO_LINT;
20
+ }
21
+ switch (linter) {
22
+ case "ruff":
23
+ return { command: "ruff", args: ["check", "."] };
24
+ case "golangci-lint":
25
+ return { command: "golangci-lint", args: ["run"] };
26
+ case "clippy":
27
+ return { command: "cargo", args: ["clippy"] };
28
+ default:
29
+ return TURBO_LINT;
30
+ }
31
+ }
9
32
  var assessProjectDefinition = {
10
33
  name: "assess_project",
11
34
  description: "Run all project health checks in parallel and return a unified report. Checks: validate, dependencies, docs, entropy, security, performance, lint.",
@@ -75,7 +98,7 @@ async function handleAssessProject(input) {
75
98
  let validateResult = null;
76
99
  if (checksToRun.has("validate")) {
77
100
  try {
78
- const { handleValidateProject } = await import("./validate-64KTEGIE.js");
101
+ const { handleValidateProject } = await import("./validate-ON7YMVLY.js");
79
102
  const result = await handleValidateProject({ path: projectPath });
80
103
  const out = parseToolResponse(result, "validate");
81
104
  if ("error" in out) {
@@ -104,7 +127,7 @@ async function handleAssessProject(input) {
104
127
  parallelChecks.push(
105
128
  (async () => {
106
129
  try {
107
- const { handleCheckDependencies } = await import("./architecture-YQH2NYXY.js");
130
+ const { handleCheckDependencies } = await import("./architecture-7PNQZOWV.js");
108
131
  const result = await handleCheckDependencies({ path: projectPath });
109
132
  const out = parseToolResponse(result, "deps");
110
133
  if ("error" in out) return out.error;
@@ -132,7 +155,7 @@ async function handleAssessProject(input) {
132
155
  parallelChecks.push(
133
156
  (async () => {
134
157
  try {
135
- const { handleCheckDocs } = await import("./docs-FP47JONV.js");
158
+ const { handleCheckDocs } = await import("./docs-3BTPSHKE.js");
136
159
  const result = await handleCheckDocs({ path: projectPath, scope: "coverage" });
137
160
  const out = parseToolResponse(result, "docs");
138
161
  if ("error" in out) return out.error;
@@ -160,7 +183,7 @@ async function handleAssessProject(input) {
160
183
  parallelChecks.push(
161
184
  (async () => {
162
185
  try {
163
- const { handleDetectEntropy } = await import("./entropy-DBW2INZU.js");
186
+ const { handleDetectEntropy } = await import("./entropy-35XURODP.js");
164
187
  const result = await handleDetectEntropy({ path: projectPath, type: "all" });
165
188
  const out = parseToolResponse(result, "entropy");
166
189
  if ("error" in out) return out.error;
@@ -191,7 +214,7 @@ async function handleAssessProject(input) {
191
214
  parallelChecks.push(
192
215
  (async () => {
193
216
  try {
194
- const { handleRunSecurityScan } = await import("./security-4W2P5ZGI.js");
217
+ const { handleRunSecurityScan } = await import("./security-6AIUZXF5.js");
195
218
  const result = await handleRunSecurityScan({ path: projectPath });
196
219
  const out = parseToolResponse(result, "security");
197
220
  if ("error" in out) return out.error;
@@ -224,7 +247,7 @@ async function handleAssessProject(input) {
224
247
  parallelChecks.push(
225
248
  (async () => {
226
249
  try {
227
- const { handleCheckPerformance } = await import("./performance-FXYTGJGQ.js");
250
+ const { handleCheckPerformance } = await import("./performance-VAYOYPVK.js");
228
251
  const result = await handleCheckPerformance({ path: projectPath });
229
252
  if ("isError" in result && result.isError) {
230
253
  const msg = result.content[0]?.text ?? "Performance check failed";
@@ -266,7 +289,8 @@ async function handleAssessProject(input) {
266
289
  (async () => {
267
290
  try {
268
291
  const { execFileSync } = await import("child_process");
269
- const output = execFileSync("npx", ["turbo", "run", "lint", "--force"], {
292
+ const { command, args } = resolveLintCommand(projectPath);
293
+ const output = execFileSync(command, args, {
270
294
  cwd: projectPath,
271
295
  encoding: "utf-8",
272
296
  timeout: 6e4,
@@ -324,6 +348,7 @@ async function handleAssessProject(input) {
324
348
  }
325
349
 
326
350
  export {
351
+ resolveLintCommand,
327
352
  assessProjectDefinition,
328
353
  parseToolResponse,
329
354
  handleAssessProject
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveProjectConfig
3
- } from "./chunk-SEA2PFVI.js";
3
+ } from "./chunk-XACP5P2J.js";
4
4
  import {
5
5
  sanitizePath
6
6
  } from "./chunk-W6Y7ZW3Y.js";
@@ -49,7 +49,7 @@ async function handleValidateProject(input) {
49
49
  checks.config = "pass";
50
50
  const config = configResult.value;
51
51
  try {
52
- const core = await import("./dist-6D2F2J57.js");
52
+ const core = await import("./dist-LE5AU7FR.js");
53
53
  if (typeof core.validateFileStructure === "function" && Array.isArray(config.conventions)) {
54
54
  const conventions = config.conventions;
55
55
  const structureResult = await core.validateFileStructure(projectPath, conventions);
@@ -68,7 +68,7 @@ async function handleValidateProject(input) {
68
68
  } catch {
69
69
  }
70
70
  try {
71
- const core = await import("./dist-6D2F2J57.js");
71
+ const core = await import("./dist-LE5AU7FR.js");
72
72
  if (typeof core.validateAgentsMap === "function") {
73
73
  const agentsMapPath = path.join(projectPath, "AGENTS.md");
74
74
  const agentsResult = await core.validateAgentsMap(agentsMapPath);
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  init_dist,
6
6
  paginate
7
- } from "./chunk-MMLQPHZ5.js";
7
+ } from "./chunk-33OU3LYX.js";
8
8
 
9
9
  // src/mcp/tools/review-pipeline.ts
10
10
  init_dist();
@@ -84,7 +84,7 @@ var runCodeReviewDefinition = {
84
84
  };
85
85
  async function handleRunCodeReview(input) {
86
86
  try {
87
- const { parseDiff, runReviewPipeline } = await import("./dist-6D2F2J57.js");
87
+ const { parseDiff, runReviewPipeline } = await import("./dist-LE5AU7FR.js");
88
88
  const parseResult = parseDiff(input.diff);
89
89
  if (!parseResult.ok) {
90
90
  return {
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-RC3OI5NK.js";
4
4
  import {
5
5
  resolveProjectConfig
6
- } from "./chunk-SEA2PFVI.js";
6
+ } from "./chunk-XACP5P2J.js";
7
7
  import {
8
8
  sanitizePath
9
9
  } from "./chunk-W6Y7ZW3Y.js";
@@ -38,7 +38,7 @@ async function handleCheckDependencies(input) {
38
38
  const configResult = resolveProjectConfig(projectPath);
39
39
  if (!configResult.ok) return resultToMcpResponse(configResult);
40
40
  try {
41
- const { validateDependencies, TypeScriptParser } = await import("./dist-6D2F2J57.js");
41
+ const { validateDependencies, TypeScriptParser } = await import("./dist-LE5AU7FR.js");
42
42
  const config = configResult.value;
43
43
  const rawLayers = Array.isArray(config.layers) ? config.layers : [];
44
44
  const layers = rawLayers.map((l) => ({