@harness-engineering/cli 4.0.0 → 4.1.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.
- package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +9 -8
- package/dist/agents/skills/claude-code/pre-merge-brief/SKILL.md +86 -0
- package/dist/agents/skills/claude-code/pre-merge-brief/skill.yaml +67 -0
- package/dist/agents/skills/claude-code/product-advisor/SKILL.md +202 -0
- package/dist/agents/skills/claude-code/product-advisor/skill.yaml +74 -0
- package/dist/agents/skills/codex/harness-autopilot/SKILL.md +9 -8
- package/dist/agents/skills/codex/pre-merge-brief/SKILL.md +86 -0
- package/dist/agents/skills/codex/pre-merge-brief/skill.yaml +67 -0
- package/dist/agents/skills/codex/product-advisor/SKILL.md +202 -0
- package/dist/agents/skills/codex/product-advisor/skill.yaml +74 -0
- package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +9 -8
- package/dist/agents/skills/cursor/pre-merge-brief/SKILL.md +86 -0
- package/dist/agents/skills/cursor/pre-merge-brief/skill.yaml +67 -0
- package/dist/agents/skills/cursor/product-advisor/SKILL.md +202 -0
- package/dist/agents/skills/cursor/product-advisor/skill.yaml +74 -0
- package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +9 -8
- package/dist/agents/skills/gemini-cli/pre-merge-brief/SKILL.md +86 -0
- package/dist/agents/skills/gemini-cli/pre-merge-brief/skill.yaml +67 -0
- package/dist/agents/skills/gemini-cli/product-advisor/SKILL.md +202 -0
- package/dist/agents/skills/gemini-cli/product-advisor/skill.yaml +74 -0
- package/dist/{agents-md-7OSNWU52.js → agents-md-7L4PKKOM.js} +4 -4
- package/dist/analyzer-XRCV63KC-HLTEIKAJ.js +26 -0
- package/dist/{architecture-2XYGJGT3.js → architecture-RCHFDI7E.js} +5 -5
- package/dist/{assess-project-3KPP2D6M.js → assess-project-YUDPNRS6.js} +5 -3
- package/dist/bin/harness-mcp.js +16 -16
- package/dist/bin/harness.js +27 -27
- package/dist/{check-phase-gate-46U5AAXE.js → check-phase-gate-56GS3A72.js} +5 -5
- package/dist/{chunk-MSBJ445U.js → chunk-4SKWGVYD.js} +5 -5
- package/dist/{chunk-CLI4K2CH.js → chunk-4U5LDFCY.js} +1 -1
- package/dist/{chunk-6YXCZV33.js → chunk-ABRYIEWJ.js} +1090 -714
- package/dist/{chunk-AK67S3O4.js → chunk-AU4YPEIE.js} +3 -3
- package/dist/{chunk-BV45354Q.js → chunk-DGVT4DBI.js} +9 -9
- package/dist/{chunk-363V6GPR.js → chunk-GLHLXTKC.js} +9 -9
- package/dist/{chunk-VTUINXWR.js → chunk-GSYBGOY3.js} +1 -1
- package/dist/{chunk-FZ4Q73HA.js → chunk-IGWJRAJT.js} +1 -1
- package/dist/{chunk-S2RQPPL6.js → chunk-N4AI2WFH.js} +1 -1
- package/dist/{chunk-HXMAIVV2.js → chunk-NCMJXBEO.js} +1 -1
- package/dist/{chunk-ZEYAOYJL.js → chunk-OZSKLJQW.js} +1 -1
- package/dist/{chunk-VTU3QOJT.js → chunk-P4NA5OQX.js} +1 -1
- package/dist/{chunk-WL3O2PKJ.js → chunk-RY2U77OY.js} +8 -8
- package/dist/{chunk-TTWNGOBT.js → chunk-RZQZXWEL.js} +32 -7
- package/dist/{chunk-KLPX55TI.js → chunk-UACYZCW4.js} +239 -146
- package/dist/{chunk-IYWT3JJW.js → chunk-VG4G3R2V.js} +1 -1
- package/dist/{chunk-PP6ZRL5T.js → chunk-WZJR6SOI.js} +536 -422
- package/dist/{chunk-PHX45JYN.js → chunk-XW5XVVMI.js} +2 -2
- package/dist/{chunk-MYVTYFQD.js → chunk-XZNCONFG.js} +1 -1
- package/dist/{chunk-GXCPDAS5.js → chunk-Y33P35U3.js} +26 -8
- package/dist/{chunk-XFHZ7GCI.js → chunk-Y5HPJMTM.js} +19 -3
- package/dist/{chunk-N55WOGN3.js → chunk-YJYUJSWK.js} +59 -21
- package/dist/{chunk-SPE7P4GL.js → chunk-YWRPQZL7.js} +1 -1
- package/dist/{chunk-6NCREWWM.js → chunk-YXOPQEFZ.js} +3 -3
- package/dist/{chunk-2N4OENGE.js → chunk-YYFSFSB3.js} +1 -1
- package/dist/{chunk-ERILXQBP.js → chunk-Z4XWWNYX.js} +615 -433
- package/dist/{chunk-HMW3C5DP.js → chunk-ZU6T7W3U.js} +2 -2
- package/dist/{ci-workflow-XJN4UO3Q.js → ci-workflow-TFAA5BK7.js} +4 -4
- package/dist/{dist-OWHMNL4W.js → dist-DWBTZXR5.js} +1 -1
- package/dist/{dist-IPVFYGY2.js → dist-MCTEX5QH.js} +5 -3
- package/dist/{docs-RSFZTNPG.js → docs-BBMAN3CY.js} +5 -5
- package/dist/{engine-DJIHY4JT.js → engine-R2YH74AL.js} +4 -4
- package/dist/{entropy-EAEKJKRM.js → entropy-5UP5N6AF.js} +7 -4
- package/dist/{feedback-JT5X3DBC.js → feedback-6MDCCFZL.js} +1 -1
- package/dist/{generate-agent-definitions-CC6KED3E.js → generate-agent-definitions-KKAN5DB5.js} +5 -5
- package/dist/{glob-helper-GLZAURJC.js → glob-helper-VR6UCZZB.js} +1 -1
- package/dist/{graph-loader-HHXN5FLP.js → graph-loader-STFGYKZH.js} +1 -1
- package/dist/hooks/sentinel-pre.js +15 -138
- package/dist/index.d.ts +61 -0
- package/dist/index.js +27 -27
- package/dist/{loader-UWNVTYBY.js → loader-2WT2ZE2T.js} +4 -4
- package/dist/{mcp-TCLNK7HG.js → mcp-5V4LPMB3.js} +16 -16
- package/dist/{performance-R6O3N3UB.js → performance-2N3CFXLR.js} +5 -5
- package/dist/{review-pipeline-MOOWXWSQ.js → review-pipeline-XZIGBU3Q.js} +4 -4
- package/dist/{runtime-RIWQUKBQ.js → runtime-POME3GTR.js} +4 -4
- package/dist/{scan-P7YFKB77.js → scan-IYSVRPD2.js} +1 -1
- package/dist/{security-U76C54W6.js → security-QLJLMSIW.js} +1 -1
- package/dist/{state-events-F44CUUZG.js → state-events-YY5KBZTC.js} +4 -4
- package/dist/{validate-IUAV7MOU.js → validate-VZORVK43.js} +5 -5
- package/dist/{validate-cross-check-M2ZM6RFY.js → validate-cross-check-OYKEDCST.js} +4 -4
- package/package.json +5 -4
- package/dist/analyzer-V633GUHY-MBCQWKDU.js +0 -26
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveProjectConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OZSKLJQW.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-
|
|
52
|
+
const core = await import("./dist-MCTEX5QH.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-
|
|
71
|
+
const core = await import("./dist-MCTEX5QH.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);
|
|
@@ -33,7 +33,7 @@ var createSelfReviewDefinition = {
|
|
|
33
33
|
};
|
|
34
34
|
async function handleCreateSelfReview(input) {
|
|
35
35
|
try {
|
|
36
|
-
const { parseDiff, createSelfReview } = await import("./dist-
|
|
36
|
+
const { parseDiff, createSelfReview } = await import("./dist-MCTEX5QH.js");
|
|
37
37
|
const parseResult = parseDiff(input.diff);
|
|
38
38
|
if (!parseResult.ok) {
|
|
39
39
|
return resultToMcpResponse(parseResult);
|
|
@@ -53,11 +53,11 @@ async function handleCreateSelfReview(input) {
|
|
|
53
53
|
...input.maxFileCount !== void 0 ? { maxChangedFiles: input.maxFileCount } : {}
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
|
-
const { loadGraphStore } = await import("./graph-loader-
|
|
56
|
+
const { loadGraphStore } = await import("./graph-loader-STFGYKZH.js");
|
|
57
57
|
const store = await loadGraphStore(projectPath);
|
|
58
58
|
let graphData;
|
|
59
59
|
if (store) {
|
|
60
|
-
const { GraphFeedbackAdapter } = await import("./dist-
|
|
60
|
+
const { GraphFeedbackAdapter } = await import("./dist-DWBTZXR5.js");
|
|
61
61
|
const adapter = new GraphFeedbackAdapter(store);
|
|
62
62
|
const changedFiles = parseResult.value.files.map((f) => f.path);
|
|
63
63
|
const impact = adapter.computeImpactData(changedFiles);
|
|
@@ -119,7 +119,7 @@ var analyzeDiffDefinition = {
|
|
|
119
119
|
};
|
|
120
120
|
async function handleAnalyzeDiff(input) {
|
|
121
121
|
try {
|
|
122
|
-
const { parseDiff, analyzeDiff } = await import("./dist-
|
|
122
|
+
const { parseDiff, analyzeDiff } = await import("./dist-MCTEX5QH.js");
|
|
123
123
|
const parseResult = parseDiff(input.diff);
|
|
124
124
|
if (!parseResult.ok) {
|
|
125
125
|
return resultToMcpResponse(parseResult);
|
|
@@ -139,10 +139,10 @@ async function handleAnalyzeDiff(input) {
|
|
|
139
139
|
let graphImpactData;
|
|
140
140
|
if (input.path) {
|
|
141
141
|
try {
|
|
142
|
-
const { loadGraphStore } = await import("./graph-loader-
|
|
142
|
+
const { loadGraphStore } = await import("./graph-loader-STFGYKZH.js");
|
|
143
143
|
const store = await loadGraphStore(sanitizePath(input.path));
|
|
144
144
|
if (store) {
|
|
145
|
-
const { GraphFeedbackAdapter } = await import("./dist-
|
|
145
|
+
const { GraphFeedbackAdapter } = await import("./dist-DWBTZXR5.js");
|
|
146
146
|
const adapter = new GraphFeedbackAdapter(store);
|
|
147
147
|
const changedFiles = parseResult.value.files.map((f) => f.path);
|
|
148
148
|
const impact = adapter.computeImpactData(changedFiles);
|
|
@@ -195,7 +195,7 @@ var requestPeerReviewDefinition = {
|
|
|
195
195
|
};
|
|
196
196
|
async function handleRequestPeerReview(input) {
|
|
197
197
|
try {
|
|
198
|
-
const { parseDiff, requestPeerReview } = await import("./dist-
|
|
198
|
+
const { parseDiff, requestPeerReview } = await import("./dist-MCTEX5QH.js");
|
|
199
199
|
const parseResult = parseDiff(input.diff);
|
|
200
200
|
if (!parseResult.ok) {
|
|
201
201
|
return resultToMcpResponse(parseResult);
|
|
@@ -206,10 +206,10 @@ async function handleRequestPeerReview(input) {
|
|
|
206
206
|
...input.context ? { metadata: { context: input.context } } : {}
|
|
207
207
|
};
|
|
208
208
|
try {
|
|
209
|
-
const { loadGraphStore } = await import("./graph-loader-
|
|
209
|
+
const { loadGraphStore } = await import("./graph-loader-STFGYKZH.js");
|
|
210
210
|
const store = await loadGraphStore(sanitizePath(input.path));
|
|
211
211
|
if (store) {
|
|
212
|
-
const { GraphFeedbackAdapter } = await import("./dist-
|
|
212
|
+
const { GraphFeedbackAdapter } = await import("./dist-DWBTZXR5.js");
|
|
213
213
|
const adapter = new GraphFeedbackAdapter(store);
|
|
214
214
|
const changedFiles = parseResult.value.files.map((f) => f.path);
|
|
215
215
|
const impactData = adapter.computeImpactData(changedFiles);
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
findConfigFile,
|
|
9
9
|
loadConfig
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-Y5HPJMTM.js";
|
|
11
11
|
import {
|
|
12
12
|
init_dist
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-UACYZCW4.js";
|
|
14
14
|
import {
|
|
15
15
|
Ok
|
|
16
16
|
} from "./chunk-BDGTZRZ6.js";
|
|
@@ -50,18 +50,18 @@ 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-
|
|
53
|
+
const { validateKnowledgeMap } = await import("./dist-MCTEX5QH.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-
|
|
58
|
+
const { checkDocCoverage: checkDocCoverage2, validateKnowledgeMap } = await import("./dist-MCTEX5QH.js");
|
|
59
59
|
const domain2 = input.domain ?? "src";
|
|
60
|
-
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-
|
|
60
|
+
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-STFGYKZH.js");
|
|
61
61
|
const store2 = await loadGraphStore2(projectPath);
|
|
62
62
|
let graphCoverage2;
|
|
63
63
|
if (store2) {
|
|
64
|
-
const { Assembler } = await import("./dist-
|
|
64
|
+
const { Assembler } = await import("./dist-DWBTZXR5.js");
|
|
65
65
|
const assembler = new Assembler(store2);
|
|
66
66
|
const report = assembler.checkCoverage();
|
|
67
67
|
graphCoverage2 = {
|
|
@@ -94,13 +94,13 @@ async function handleCheckDocs(input) {
|
|
|
94
94
|
}
|
|
95
95
|
return resultToMcpResponse(Ok({ coverage, integrity }));
|
|
96
96
|
}
|
|
97
|
-
const { checkDocCoverage } = await import("./dist-
|
|
97
|
+
const { checkDocCoverage } = await import("./dist-MCTEX5QH.js");
|
|
98
98
|
const domain = input.domain ?? "src";
|
|
99
|
-
const { loadGraphStore } = await import("./graph-loader-
|
|
99
|
+
const { loadGraphStore } = await import("./graph-loader-STFGYKZH.js");
|
|
100
100
|
const store = await loadGraphStore(projectPath);
|
|
101
101
|
let graphCoverage;
|
|
102
102
|
if (store) {
|
|
103
|
-
const { Assembler } = await import("./dist-
|
|
103
|
+
const { Assembler } = await import("./dist-DWBTZXR5.js");
|
|
104
104
|
const assembler = new Assembler(store);
|
|
105
105
|
const report = assembler.checkCoverage();
|
|
106
106
|
graphCoverage = {
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
findConfigFile,
|
|
9
9
|
loadConfig
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-Y5HPJMTM.js";
|
|
11
11
|
import {
|
|
12
12
|
init_dist
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-UACYZCW4.js";
|
|
14
14
|
import {
|
|
15
15
|
Ok
|
|
16
16
|
} from "./chunk-BDGTZRZ6.js";
|
|
@@ -35,7 +35,7 @@ var checkPerformanceDefinition = {
|
|
|
35
35
|
};
|
|
36
36
|
async function handleCheckPerformance(input) {
|
|
37
37
|
try {
|
|
38
|
-
const { EntropyAnalyzer } = await import("./dist-
|
|
38
|
+
const { EntropyAnalyzer } = await import("./dist-MCTEX5QH.js");
|
|
39
39
|
const typeFilter = input.type ?? "all";
|
|
40
40
|
const projectPath = sanitizePath(input.path);
|
|
41
41
|
let entryPoints;
|
|
@@ -58,10 +58,10 @@ async function handleCheckPerformance(input) {
|
|
|
58
58
|
});
|
|
59
59
|
let graphOptions;
|
|
60
60
|
try {
|
|
61
|
-
const { loadGraphStore } = await import("./graph-loader-
|
|
61
|
+
const { loadGraphStore } = await import("./graph-loader-STFGYKZH.js");
|
|
62
62
|
const store = await loadGraphStore(projectPath);
|
|
63
63
|
if (store) {
|
|
64
|
-
const { GraphComplexityAdapter, GraphCouplingAdapter } = await import("./dist-
|
|
64
|
+
const { GraphComplexityAdapter, GraphCouplingAdapter } = await import("./dist-DWBTZXR5.js");
|
|
65
65
|
const complexityAdapter = new GraphComplexityAdapter(store);
|
|
66
66
|
const couplingAdapter = new GraphCouplingAdapter(store);
|
|
67
67
|
graphOptions = {
|
|
@@ -98,7 +98,7 @@ var getPerfBaselinesDefinition = {
|
|
|
98
98
|
};
|
|
99
99
|
async function handleGetPerfBaselines(input) {
|
|
100
100
|
try {
|
|
101
|
-
const { BaselineManager } = await import("./dist-
|
|
101
|
+
const { BaselineManager } = await import("./dist-MCTEX5QH.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-
|
|
149
|
+
const { BaselineManager } = await import("./dist-MCTEX5QH.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-
|
|
179
|
+
const { CriticalPathResolver } = await import("./dist-MCTEX5QH.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-
|
|
101
|
+
const { handleValidateProject } = await import("./validate-VZORVK43.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-
|
|
130
|
+
const { handleCheckDependencies } = await import("./architecture-RCHFDI7E.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-
|
|
158
|
+
const { handleCheckDocs } = await import("./docs-BBMAN3CY.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-
|
|
186
|
+
const { handleDetectEntropy } = await import("./entropy-5UP5N6AF.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-
|
|
217
|
+
const { handleRunSecurityScan } = await import("./security-QLJLMSIW.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-
|
|
250
|
+
const { handleCheckPerformance } = await import("./performance-2N3CFXLR.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
|
|
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
|