@harness-engineering/cli 1.11.0 → 1.12.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-md-ZFV6RR5J.js → agents-md-KIS2RSMG.js} +1 -1
- package/dist/{architecture-EXNUMH5R.js → architecture-AJAUDRQQ.js} +2 -2
- package/dist/bin/harness-mcp.js +10 -10
- package/dist/bin/harness.js +12 -12
- package/dist/{check-phase-gate-VZFOY2PO.js → check-phase-gate-K7QCSYRJ.js} +2 -2
- package/dist/{chunk-GSIVNYVJ.js → chunk-2SWJ4VO7.js} +4 -4
- package/dist/{chunk-I6JZYEGT.js → chunk-747VBPA4.js} +41 -41
- package/dist/{chunk-2YSQOUHO.js → chunk-AE2OWWDH.js} +72 -30
- package/dist/{chunk-ZWC3MN5E.js → chunk-B5SBNH4S.js} +705 -203
- package/dist/{chunk-NC6PXVWT.js → chunk-CTTFXXKJ.js} +3 -3
- package/dist/{chunk-X3MN5UQJ.js → chunk-EAURF4LH.js} +1 -1
- package/dist/{chunk-PA2XHK75.js → chunk-FLOEMHDF.js} +3 -3
- package/dist/{chunk-Z75JC6I2.js → chunk-JLXOEO5C.js} +2 -2
- package/dist/{chunk-TI4TGEX6.js → chunk-OIGVQF5V.js} +1 -1
- package/dist/{chunk-WUJTCNOU.js → chunk-TJVVU3HB.js} +1 -1
- package/dist/{chunk-WJZDO6OY.js → chunk-YXOG2277.js} +2 -2
- package/dist/{chunk-2NCIKJES.js → chunk-ZU2UBYBY.js} +1 -1
- package/dist/{ci-workflow-K5RCRNYR.js → ci-workflow-NBL4OT4A.js} +1 -1
- package/dist/{dist-JVZ2MKBC.js → dist-IJ4J4C5G.js} +3 -1
- package/dist/{docs-PWCUVYWU.js → docs-CPTMH3VY.js} +2 -2
- package/dist/{engine-6XUP6GAK.js → engine-BUWPAAGD.js} +1 -1
- package/dist/{entropy-4I6JEYAC.js → entropy-Z4FYVQ7L.js} +2 -2
- package/dist/{feedback-TNIW534S.js → feedback-TT6WF5YX.js} +1 -1
- package/dist/{generate-agent-definitions-MWKEA5NU.js → generate-agent-definitions-J5HANRNR.js} +1 -1
- package/dist/index.d.ts +39 -2
- package/dist/index.js +17 -13
- package/dist/{loader-4FIPIFII.js → loader-PCU5YWRH.js} +1 -1
- package/dist/{mcp-MOKLYNZL.js → mcp-YM6QLHLZ.js} +10 -10
- package/dist/{performance-BTOJCPXU.js → performance-YJVXOKIB.js} +2 -2
- package/dist/{review-pipeline-3YTW3463.js → review-pipeline-KGMIMLIE.js} +1 -1
- package/dist/{runtime-GO7K2PJE.js → runtime-F6R27LD6.js} +1 -1
- package/dist/{security-4P2GGFF6.js → security-MX5VVXBC.js} +1 -1
- package/dist/{validate-JN44D2Q7.js → validate-EFNMSFKD.js} +2 -2
- package/dist/{validate-cross-check-DB7RIFFF.js → validate-cross-check-LJX65SBS.js} +1 -1
- package/package.json +3 -3
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
checkDependenciesDefinition,
|
|
3
3
|
handleCheckDependencies
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-OIGVQF5V.js";
|
|
5
5
|
import "./chunk-K6XAPGML.js";
|
|
6
6
|
import "./chunk-IDZNPTYD.js";
|
|
7
7
|
import "./chunk-W6Y7ZW3Y.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-AE2OWWDH.js";
|
|
9
9
|
import "./chunk-MHBMTPW7.js";
|
|
10
10
|
export {
|
|
11
11
|
checkDependenciesDefinition,
|
package/dist/bin/harness-mcp.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
startServer
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-747VBPA4.js";
|
|
5
|
+
import "../chunk-JLXOEO5C.js";
|
|
6
|
+
import "../chunk-2SWJ4VO7.js";
|
|
7
|
+
import "../chunk-FLOEMHDF.js";
|
|
8
|
+
import "../chunk-EAURF4LH.js";
|
|
9
|
+
import "../chunk-TJVVU3HB.js";
|
|
10
10
|
import "../chunk-ZOAWBDWU.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-YXOG2277.js";
|
|
12
12
|
import "../chunk-2YPZKGAG.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-OIGVQF5V.js";
|
|
14
14
|
import "../chunk-K6XAPGML.js";
|
|
15
|
-
import "../chunk-
|
|
15
|
+
import "../chunk-CTTFXXKJ.js";
|
|
16
16
|
import "../chunk-IDZNPTYD.js";
|
|
17
17
|
import "../chunk-W6Y7ZW3Y.js";
|
|
18
18
|
import "../chunk-HD4IBGLA.js";
|
|
19
19
|
import "../chunk-3WGJMBKH.js";
|
|
20
20
|
import "../chunk-VRFZWGMS.js";
|
|
21
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-AE2OWWDH.js";
|
|
22
22
|
import "../chunk-MHBMTPW7.js";
|
|
23
23
|
|
|
24
24
|
// src/bin/harness-mcp.ts
|
package/dist/bin/harness.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
createProgram
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-B5SBNH4S.js";
|
|
5
5
|
import "../chunk-VUCPTQ6G.js";
|
|
6
6
|
import {
|
|
7
7
|
findConfigFile,
|
|
8
8
|
loadConfig
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-ZU2UBYBY.js";
|
|
10
10
|
import "../chunk-GNGELAXY.js";
|
|
11
11
|
import "../chunk-Q6AB7W5Z.js";
|
|
12
12
|
import "../chunk-TRAPF4IX.js";
|
|
@@ -18,18 +18,18 @@ import "../chunk-QPEH2QPG.js";
|
|
|
18
18
|
import "../chunk-JSTQ3AWB.js";
|
|
19
19
|
import "../chunk-KET4QQZB.js";
|
|
20
20
|
import "../chunk-NKDM3FMH.js";
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-747VBPA4.js";
|
|
22
|
+
import "../chunk-JLXOEO5C.js";
|
|
23
|
+
import "../chunk-2SWJ4VO7.js";
|
|
24
|
+
import "../chunk-FLOEMHDF.js";
|
|
25
|
+
import "../chunk-EAURF4LH.js";
|
|
26
|
+
import "../chunk-TJVVU3HB.js";
|
|
27
27
|
import "../chunk-ZOAWBDWU.js";
|
|
28
|
-
import "../chunk-
|
|
28
|
+
import "../chunk-YXOG2277.js";
|
|
29
29
|
import "../chunk-2YPZKGAG.js";
|
|
30
|
-
import "../chunk-
|
|
30
|
+
import "../chunk-OIGVQF5V.js";
|
|
31
31
|
import "../chunk-K6XAPGML.js";
|
|
32
|
-
import "../chunk-
|
|
32
|
+
import "../chunk-CTTFXXKJ.js";
|
|
33
33
|
import "../chunk-IDZNPTYD.js";
|
|
34
34
|
import "../chunk-W6Y7ZW3Y.js";
|
|
35
35
|
import "../chunk-HD4IBGLA.js";
|
|
@@ -48,7 +48,7 @@ import {
|
|
|
48
48
|
readCheckState,
|
|
49
49
|
shouldRunCheck,
|
|
50
50
|
spawnBackgroundCheck
|
|
51
|
-
} from "../chunk-
|
|
51
|
+
} from "../chunk-AE2OWWDH.js";
|
|
52
52
|
import "../chunk-MHBMTPW7.js";
|
|
53
53
|
|
|
54
54
|
// src/bin/update-check-hooks.ts
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createCheckPhaseGateCommand,
|
|
3
3
|
runCheckPhaseGate
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ZU2UBYBY.js";
|
|
5
5
|
import "./chunk-EBJQ6N4M.js";
|
|
6
6
|
import "./chunk-3WGJMBKH.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-AE2OWWDH.js";
|
|
8
8
|
import "./chunk-MHBMTPW7.js";
|
|
9
9
|
export {
|
|
10
10
|
createCheckPhaseGateCommand,
|
|
@@ -27,7 +27,7 @@ var checkPerformanceDefinition = {
|
|
|
27
27
|
};
|
|
28
28
|
async function handleCheckPerformance(input) {
|
|
29
29
|
try {
|
|
30
|
-
const { EntropyAnalyzer } = await import("./dist-
|
|
30
|
+
const { EntropyAnalyzer } = await import("./dist-IJ4J4C5G.js");
|
|
31
31
|
const typeFilter = input.type ?? "all";
|
|
32
32
|
const projectPath = sanitizePath(input.path);
|
|
33
33
|
const analyzer = new EntropyAnalyzer({
|
|
@@ -80,7 +80,7 @@ var getPerfBaselinesDefinition = {
|
|
|
80
80
|
};
|
|
81
81
|
async function handleGetPerfBaselines(input) {
|
|
82
82
|
try {
|
|
83
|
-
const { BaselineManager } = await import("./dist-
|
|
83
|
+
const { BaselineManager } = await import("./dist-IJ4J4C5G.js");
|
|
84
84
|
const manager = new BaselineManager(sanitizePath(input.path));
|
|
85
85
|
const baselines = manager.load();
|
|
86
86
|
return resultToMcpResponse(
|
|
@@ -128,7 +128,7 @@ var updatePerfBaselinesDefinition = {
|
|
|
128
128
|
};
|
|
129
129
|
async function handleUpdatePerfBaselines(input) {
|
|
130
130
|
try {
|
|
131
|
-
const { BaselineManager } = await import("./dist-
|
|
131
|
+
const { BaselineManager } = await import("./dist-IJ4J4C5G.js");
|
|
132
132
|
const manager = new BaselineManager(sanitizePath(input.path));
|
|
133
133
|
manager.save(input.results, input.commitHash);
|
|
134
134
|
const updated = manager.load();
|
|
@@ -158,7 +158,7 @@ var getCriticalPathsDefinition = {
|
|
|
158
158
|
};
|
|
159
159
|
async function handleGetCriticalPaths(input) {
|
|
160
160
|
try {
|
|
161
|
-
const { CriticalPathResolver } = await import("./dist-
|
|
161
|
+
const { CriticalPathResolver } = await import("./dist-IJ4J4C5G.js");
|
|
162
162
|
const resolver = new CriticalPathResolver(sanitizePath(input.path));
|
|
163
163
|
const result = await resolver.resolve();
|
|
164
164
|
return resultToMcpResponse(Ok(result));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
detectEntropyDefinition,
|
|
3
3
|
handleDetectEntropy
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JLXOEO5C.js";
|
|
5
5
|
import {
|
|
6
6
|
checkPerformanceDefinition,
|
|
7
7
|
getCriticalPathsDefinition,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
handleGetPerfBaselines,
|
|
12
12
|
handleUpdatePerfBaselines,
|
|
13
13
|
updatePerfBaselinesDefinition
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-2SWJ4VO7.js";
|
|
15
15
|
import {
|
|
16
16
|
analyzeDiffDefinition,
|
|
17
17
|
createSelfReviewDefinition,
|
|
@@ -19,15 +19,15 @@ import {
|
|
|
19
19
|
handleCreateSelfReview,
|
|
20
20
|
handleRequestPeerReview,
|
|
21
21
|
requestPeerReviewDefinition
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-FLOEMHDF.js";
|
|
23
23
|
import {
|
|
24
24
|
handleRunSecurityScan,
|
|
25
25
|
runSecurityScanDefinition
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-EAURF4LH.js";
|
|
27
27
|
import {
|
|
28
28
|
handleRunCodeReview,
|
|
29
29
|
runCodeReviewDefinition
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-TJVVU3HB.js";
|
|
31
31
|
import {
|
|
32
32
|
GENERATED_HEADER_CLAUDE,
|
|
33
33
|
GENERATED_HEADER_GEMINI,
|
|
@@ -38,21 +38,21 @@ import {
|
|
|
38
38
|
import {
|
|
39
39
|
handleValidateProject,
|
|
40
40
|
validateToolDefinition
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-YXOG2277.js";
|
|
42
42
|
import {
|
|
43
43
|
loadGraphStore
|
|
44
44
|
} from "./chunk-2YPZKGAG.js";
|
|
45
45
|
import {
|
|
46
46
|
checkDependenciesDefinition,
|
|
47
47
|
handleCheckDependencies
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-OIGVQF5V.js";
|
|
49
49
|
import {
|
|
50
50
|
resolveProjectConfig
|
|
51
51
|
} from "./chunk-K6XAPGML.js";
|
|
52
52
|
import {
|
|
53
53
|
checkDocsDefinition,
|
|
54
54
|
handleCheckDocs
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-CTTFXXKJ.js";
|
|
56
56
|
import {
|
|
57
57
|
resultToMcpResponse
|
|
58
58
|
} from "./chunk-IDZNPTYD.js";
|
|
@@ -180,7 +180,7 @@ var initProjectDefinition = {
|
|
|
180
180
|
};
|
|
181
181
|
async function handleInitProject(input) {
|
|
182
182
|
try {
|
|
183
|
-
const { TemplateEngine } = await import("./engine-
|
|
183
|
+
const { TemplateEngine } = await import("./engine-BUWPAAGD.js");
|
|
184
184
|
const templatesDir = resolveTemplatesDir();
|
|
185
185
|
const engine = new TemplateEngine(templatesDir);
|
|
186
186
|
const level = input.level ?? "basic";
|
|
@@ -218,7 +218,7 @@ var listPersonasDefinition = {
|
|
|
218
218
|
inputSchema: { type: "object", properties: {} }
|
|
219
219
|
};
|
|
220
220
|
async function handleListPersonas() {
|
|
221
|
-
const { listPersonas } = await import("./loader-
|
|
221
|
+
const { listPersonas } = await import("./loader-PCU5YWRH.js");
|
|
222
222
|
const result = listPersonas(resolvePersonasDir());
|
|
223
223
|
return resultToMcpResponse(result);
|
|
224
224
|
}
|
|
@@ -242,10 +242,10 @@ async function handleGeneratePersonaArtifacts(input) {
|
|
|
242
242
|
if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.name)) {
|
|
243
243
|
return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.name}`)));
|
|
244
244
|
}
|
|
245
|
-
const { loadPersona } = await import("./loader-
|
|
246
|
-
const { generateRuntime } = await import("./runtime-
|
|
247
|
-
const { generateAgentsMd } = await import("./agents-md-
|
|
248
|
-
const { generateCIWorkflow } = await import("./ci-workflow-
|
|
245
|
+
const { loadPersona } = await import("./loader-PCU5YWRH.js");
|
|
246
|
+
const { generateRuntime } = await import("./runtime-F6R27LD6.js");
|
|
247
|
+
const { generateAgentsMd } = await import("./agents-md-KIS2RSMG.js");
|
|
248
|
+
const { generateCIWorkflow } = await import("./ci-workflow-NBL4OT4A.js");
|
|
249
249
|
const personasDir = resolvePersonasDir();
|
|
250
250
|
const filePath = path2.join(personasDir, `${input.name}.yaml`);
|
|
251
251
|
if (!filePath.startsWith(personasDir)) {
|
|
@@ -300,7 +300,7 @@ async function handleRunPersona(input) {
|
|
|
300
300
|
if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.persona)) {
|
|
301
301
|
return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.persona}`)));
|
|
302
302
|
}
|
|
303
|
-
const { loadPersona } = await import("./loader-
|
|
303
|
+
const { loadPersona } = await import("./loader-PCU5YWRH.js");
|
|
304
304
|
const { runPersona } = await import("./runner-VMYLHWOC.js");
|
|
305
305
|
const { executeSkill } = await import("./skill-executor-RG45LUO5.js");
|
|
306
306
|
const personasDir = resolvePersonasDir();
|
|
@@ -705,7 +705,7 @@ async function handleManageState(input) {
|
|
|
705
705
|
archiveFailures,
|
|
706
706
|
runMechanicalGate,
|
|
707
707
|
DEFAULT_STATE
|
|
708
|
-
} = await import("./dist-
|
|
708
|
+
} = await import("./dist-IJ4J4C5G.js");
|
|
709
709
|
const projectPath = sanitizePath(input.path);
|
|
710
710
|
switch (input.action) {
|
|
711
711
|
case "show": {
|
|
@@ -784,7 +784,7 @@ async function handleManageState(input) {
|
|
|
784
784
|
isError: true
|
|
785
785
|
};
|
|
786
786
|
}
|
|
787
|
-
const { saveHandoff } = await import("./dist-
|
|
787
|
+
const { saveHandoff } = await import("./dist-IJ4J4C5G.js");
|
|
788
788
|
const result = await saveHandoff(
|
|
789
789
|
projectPath,
|
|
790
790
|
input.handoff,
|
|
@@ -793,7 +793,7 @@ async function handleManageState(input) {
|
|
|
793
793
|
return resultToMcpResponse(result.ok ? Ok({ saved: true }) : result);
|
|
794
794
|
}
|
|
795
795
|
case "load-handoff": {
|
|
796
|
-
const { loadHandoff } = await import("./dist-
|
|
796
|
+
const { loadHandoff } = await import("./dist-IJ4J4C5G.js");
|
|
797
797
|
const result = await loadHandoff(projectPath, input.stream);
|
|
798
798
|
return resultToMcpResponse(result);
|
|
799
799
|
}
|
|
@@ -829,7 +829,7 @@ var listStreamsDefinition = {
|
|
|
829
829
|
};
|
|
830
830
|
async function handleListStreams(input) {
|
|
831
831
|
try {
|
|
832
|
-
const { listStreams, loadStreamIndex } = await import("./dist-
|
|
832
|
+
const { listStreams, loadStreamIndex } = await import("./dist-IJ4J4C5G.js");
|
|
833
833
|
const projectPath = sanitizePath(input.path);
|
|
834
834
|
const indexResult = await loadStreamIndex(projectPath);
|
|
835
835
|
const streamsResult = await listStreams(projectPath);
|
|
@@ -867,7 +867,7 @@ var checkPhaseGateDefinition = {
|
|
|
867
867
|
};
|
|
868
868
|
async function handleCheckPhaseGate(input) {
|
|
869
869
|
try {
|
|
870
|
-
const { runCheckPhaseGate } = await import("./check-phase-gate-
|
|
870
|
+
const { runCheckPhaseGate } = await import("./check-phase-gate-K7QCSYRJ.js");
|
|
871
871
|
const result = await runCheckPhaseGate({ cwd: sanitizePath(input.path) });
|
|
872
872
|
if (result.ok) {
|
|
873
873
|
return { content: [{ type: "text", text: JSON.stringify(result.value) }] };
|
|
@@ -923,7 +923,7 @@ async function handleValidateCrossCheck(input) {
|
|
|
923
923
|
};
|
|
924
924
|
}
|
|
925
925
|
try {
|
|
926
|
-
const { runCrossCheck } = await import("./validate-cross-check-
|
|
926
|
+
const { runCrossCheck } = await import("./validate-cross-check-LJX65SBS.js");
|
|
927
927
|
const specsDir = path8.resolve(projectPath, input.specsDir ?? "docs/specs");
|
|
928
928
|
if (!specsDir.startsWith(projectPath)) {
|
|
929
929
|
return {
|
|
@@ -1418,7 +1418,7 @@ async function handleGenerateSlashCommands(input) {
|
|
|
1418
1418
|
// src/mcp/resources/state.ts
|
|
1419
1419
|
async function getStateResource(projectRoot) {
|
|
1420
1420
|
try {
|
|
1421
|
-
const { loadState, migrateToStreams } = await import("./dist-
|
|
1421
|
+
const { loadState, migrateToStreams } = await import("./dist-IJ4J4C5G.js");
|
|
1422
1422
|
await migrateToStreams(projectRoot);
|
|
1423
1423
|
const result = await loadState(projectRoot);
|
|
1424
1424
|
if (result.ok) {
|
|
@@ -2221,7 +2221,7 @@ var generateAgentDefinitionsDefinition = {
|
|
|
2221
2221
|
}
|
|
2222
2222
|
};
|
|
2223
2223
|
async function handleGenerateAgentDefinitions(input) {
|
|
2224
|
-
const { generateAgentDefinitions } = await import("./generate-agent-definitions-
|
|
2224
|
+
const { generateAgentDefinitions } = await import("./generate-agent-definitions-J5HANRNR.js");
|
|
2225
2225
|
const platforms = input.platform === "all" || !input.platform ? ["claude-code", "gemini-cli"] : [input.platform];
|
|
2226
2226
|
const results = generateAgentDefinitions({
|
|
2227
2227
|
platforms: [...platforms],
|
|
@@ -2306,7 +2306,7 @@ function writeRoadmapFile(projectRoot, content) {
|
|
|
2306
2306
|
}
|
|
2307
2307
|
async function handleManageRoadmap(input) {
|
|
2308
2308
|
try {
|
|
2309
|
-
const { parseRoadmap, serializeRoadmap, syncRoadmap } = await import("./dist-
|
|
2309
|
+
const { parseRoadmap, serializeRoadmap, syncRoadmap } = await import("./dist-IJ4J4C5G.js");
|
|
2310
2310
|
const { Ok: Ok2 } = await import("./dist-D4RYGUZE.js");
|
|
2311
2311
|
const projectPath = sanitizePath(input.path);
|
|
2312
2312
|
switch (input.action) {
|
|
@@ -3072,7 +3072,7 @@ async function handleEmitInteraction(input) {
|
|
|
3072
3072
|
const transition = transitionResult.data;
|
|
3073
3073
|
const prompt = renderTransition(transition);
|
|
3074
3074
|
try {
|
|
3075
|
-
const { saveHandoff } = await import("./dist-
|
|
3075
|
+
const { saveHandoff } = await import("./dist-IJ4J4C5G.js");
|
|
3076
3076
|
await saveHandoff(
|
|
3077
3077
|
projectPath,
|
|
3078
3078
|
{
|
|
@@ -3173,7 +3173,7 @@ async function handleEmitInteraction(input) {
|
|
|
3173
3173
|
}
|
|
3174
3174
|
async function recordInteraction(projectPath, id, type, decision, stream) {
|
|
3175
3175
|
try {
|
|
3176
|
-
const { loadState, saveState } = await import("./dist-
|
|
3176
|
+
const { loadState, saveState } = await import("./dist-IJ4J4C5G.js");
|
|
3177
3177
|
const stateResult = await loadState(projectPath, stream);
|
|
3178
3178
|
if (stateResult.ok) {
|
|
3179
3179
|
const state = stateResult.value;
|
|
@@ -3245,11 +3245,11 @@ async function handleGatherContext(input) {
|
|
|
3245
3245
|
input.include ?? ["state", "learnings", "handoff", "graph", "validation"]
|
|
3246
3246
|
);
|
|
3247
3247
|
const errors = [];
|
|
3248
|
-
const statePromise = includeSet.has("state") ? import("./dist-
|
|
3249
|
-
const learningsPromise = includeSet.has("learnings") ? import("./dist-
|
|
3248
|
+
const statePromise = includeSet.has("state") ? import("./dist-IJ4J4C5G.js").then((core) => core.loadState(projectPath)) : Promise.resolve(null);
|
|
3249
|
+
const learningsPromise = includeSet.has("learnings") ? import("./dist-IJ4J4C5G.js").then(
|
|
3250
3250
|
(core) => core.loadRelevantLearnings(projectPath, input.skill)
|
|
3251
3251
|
) : Promise.resolve(null);
|
|
3252
|
-
const handoffPromise = includeSet.has("handoff") ? import("./dist-
|
|
3252
|
+
const handoffPromise = includeSet.has("handoff") ? import("./dist-IJ4J4C5G.js").then((core) => core.loadHandoff(projectPath)) : Promise.resolve(null);
|
|
3253
3253
|
const graphPromise = includeSet.has("graph") ? (async () => {
|
|
3254
3254
|
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-KO4GJ5N2.js");
|
|
3255
3255
|
const store = await loadGraphStore2(projectPath);
|
|
@@ -3292,7 +3292,7 @@ async function handleGatherContext(input) {
|
|
|
3292
3292
|
};
|
|
3293
3293
|
})() : Promise.resolve(null);
|
|
3294
3294
|
const validationPromise = includeSet.has("validation") ? (async () => {
|
|
3295
|
-
const { handleValidateProject: handleValidateProject2 } = await import("./validate-
|
|
3295
|
+
const { handleValidateProject: handleValidateProject2 } = await import("./validate-EFNMSFKD.js");
|
|
3296
3296
|
const result = await handleValidateProject2({ path: projectPath });
|
|
3297
3297
|
const first = result.content[0];
|
|
3298
3298
|
return first ? JSON.parse(first.text) : null;
|
|
@@ -3425,7 +3425,7 @@ async function handleAssessProject(input) {
|
|
|
3425
3425
|
let validateResult = null;
|
|
3426
3426
|
if (checksToRun.has("validate")) {
|
|
3427
3427
|
try {
|
|
3428
|
-
const { handleValidateProject: handleValidateProject2 } = await import("./validate-
|
|
3428
|
+
const { handleValidateProject: handleValidateProject2 } = await import("./validate-EFNMSFKD.js");
|
|
3429
3429
|
const result = await handleValidateProject2({ path: projectPath });
|
|
3430
3430
|
const first = result.content[0];
|
|
3431
3431
|
const parsed = first ? JSON.parse(first.text) : {};
|
|
@@ -3450,7 +3450,7 @@ async function handleAssessProject(input) {
|
|
|
3450
3450
|
parallelChecks.push(
|
|
3451
3451
|
(async () => {
|
|
3452
3452
|
try {
|
|
3453
|
-
const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-
|
|
3453
|
+
const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-AJAUDRQQ.js");
|
|
3454
3454
|
const result = await handleCheckDependencies2({ path: projectPath });
|
|
3455
3455
|
const first = result.content[0];
|
|
3456
3456
|
const parsed = first ? JSON.parse(first.text) : {};
|
|
@@ -3477,7 +3477,7 @@ async function handleAssessProject(input) {
|
|
|
3477
3477
|
parallelChecks.push(
|
|
3478
3478
|
(async () => {
|
|
3479
3479
|
try {
|
|
3480
|
-
const { handleCheckDocs: handleCheckDocs2 } = await import("./docs-
|
|
3480
|
+
const { handleCheckDocs: handleCheckDocs2 } = await import("./docs-CPTMH3VY.js");
|
|
3481
3481
|
const result = await handleCheckDocs2({ path: projectPath, scope: "coverage" });
|
|
3482
3482
|
const first = result.content[0];
|
|
3483
3483
|
const parsed = first ? JSON.parse(first.text) : {};
|
|
@@ -3504,7 +3504,7 @@ async function handleAssessProject(input) {
|
|
|
3504
3504
|
parallelChecks.push(
|
|
3505
3505
|
(async () => {
|
|
3506
3506
|
try {
|
|
3507
|
-
const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-
|
|
3507
|
+
const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-Z4FYVQ7L.js");
|
|
3508
3508
|
const result = await handleDetectEntropy2({ path: projectPath, type: "all" });
|
|
3509
3509
|
const first = result.content[0];
|
|
3510
3510
|
const parsed = first ? JSON.parse(first.text) : {};
|
|
@@ -3531,7 +3531,7 @@ async function handleAssessProject(input) {
|
|
|
3531
3531
|
parallelChecks.push(
|
|
3532
3532
|
(async () => {
|
|
3533
3533
|
try {
|
|
3534
|
-
const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-
|
|
3534
|
+
const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-MX5VVXBC.js");
|
|
3535
3535
|
const result = await handleRunSecurityScan2({ path: projectPath });
|
|
3536
3536
|
const first = result.content[0];
|
|
3537
3537
|
const parsed = first ? JSON.parse(first.text) : {};
|
|
@@ -3563,7 +3563,7 @@ async function handleAssessProject(input) {
|
|
|
3563
3563
|
parallelChecks.push(
|
|
3564
3564
|
(async () => {
|
|
3565
3565
|
try {
|
|
3566
|
-
const { handleCheckPerformance: handleCheckPerformance2 } = await import("./performance-
|
|
3566
|
+
const { handleCheckPerformance: handleCheckPerformance2 } = await import("./performance-YJVXOKIB.js");
|
|
3567
3567
|
const result = await handleCheckPerformance2({ path: projectPath });
|
|
3568
3568
|
const first = result.content[0];
|
|
3569
3569
|
const parsed = first ? JSON.parse(first.text) : {};
|
|
@@ -3738,7 +3738,7 @@ async function handleReviewChanges(input) {
|
|
|
3738
3738
|
}
|
|
3739
3739
|
try {
|
|
3740
3740
|
if (effectiveDepth === "quick") {
|
|
3741
|
-
const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-
|
|
3741
|
+
const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-TT6WF5YX.js");
|
|
3742
3742
|
const result2 = await handleAnalyzeDiff2({ diff, path: projectPath });
|
|
3743
3743
|
const firstContent = result2.content[0];
|
|
3744
3744
|
if (!firstContent) throw new Error("Empty analyze_diff response");
|
|
@@ -3760,7 +3760,7 @@ async function handleReviewChanges(input) {
|
|
|
3760
3760
|
};
|
|
3761
3761
|
}
|
|
3762
3762
|
if (effectiveDepth === "standard") {
|
|
3763
|
-
const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-
|
|
3763
|
+
const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-TT6WF5YX.js");
|
|
3764
3764
|
const [diffResult, reviewResult] = await Promise.all([
|
|
3765
3765
|
handleAnalyzeDiff2({ diff, path: projectPath }),
|
|
3766
3766
|
handleCreateSelfReview2({ path: projectPath, diff })
|
|
@@ -3791,7 +3791,7 @@ async function handleReviewChanges(input) {
|
|
|
3791
3791
|
]
|
|
3792
3792
|
};
|
|
3793
3793
|
}
|
|
3794
|
-
const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-
|
|
3794
|
+
const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-KGMIMLIE.js");
|
|
3795
3795
|
const result = await handleRunCodeReview2({ path: projectPath, diff });
|
|
3796
3796
|
const deepContent = result.content[0];
|
|
3797
3797
|
if (!deepContent) throw new Error("Empty code review response");
|
|
@@ -4083,7 +4083,7 @@ async function handleDetectStaleConstraints(input) {
|
|
|
4083
4083
|
]
|
|
4084
4084
|
};
|
|
4085
4085
|
}
|
|
4086
|
-
const { detectStaleConstraints } = await import("./dist-
|
|
4086
|
+
const { detectStaleConstraints } = await import("./dist-IJ4J4C5G.js");
|
|
4087
4087
|
const result = detectStaleConstraints(
|
|
4088
4088
|
store,
|
|
4089
4089
|
windowDays,
|
|
@@ -4294,7 +4294,7 @@ function createHarnessServer(projectRoot) {
|
|
|
4294
4294
|
shouldRunCheck,
|
|
4295
4295
|
readCheckState,
|
|
4296
4296
|
spawnBackgroundCheck
|
|
4297
|
-
} = await import("./dist-
|
|
4297
|
+
} = await import("./dist-IJ4J4C5G.js");
|
|
4298
4298
|
const { CLI_VERSION: version } = await import("./version-KFFPOQAX.js");
|
|
4299
4299
|
let CLI_VERSION = version;
|
|
4300
4300
|
let configInterval;
|
|
@@ -2854,8 +2854,6 @@ function deepMergeConstraints(localConfig, bundleConstraints, _existingContribut
|
|
|
2854
2854
|
}
|
|
2855
2855
|
if (bundleConstraints.architecture) {
|
|
2856
2856
|
const localArch = localConfig.architecture ?? {
|
|
2857
|
-
enabled: true,
|
|
2858
|
-
baselinePath: ".harness/arch/baselines.json",
|
|
2859
2857
|
thresholds: {},
|
|
2860
2858
|
modules: {}
|
|
2861
2859
|
};
|
|
@@ -2975,7 +2973,7 @@ async function readLockfile(lockfilePath) {
|
|
|
2975
2973
|
return { ok: true, value: result.data };
|
|
2976
2974
|
}
|
|
2977
2975
|
async function writeLockfile(lockfilePath, lockfile) {
|
|
2978
|
-
|
|
2976
|
+
return writeConfig(lockfilePath, lockfile);
|
|
2979
2977
|
}
|
|
2980
2978
|
function addProvenance(lockfile, packageName, entry) {
|
|
2981
2979
|
return {
|
|
@@ -3003,6 +3001,75 @@ function removeProvenance(lockfile, packageName) {
|
|
|
3003
3001
|
function isNodeError(err) {
|
|
3004
3002
|
return err instanceof Error && "code" in err;
|
|
3005
3003
|
}
|
|
3004
|
+
function removeContributions(config, contributions) {
|
|
3005
|
+
const result = { ...config };
|
|
3006
|
+
const layerNames = contributions.layers;
|
|
3007
|
+
if (layerNames && layerNames.length > 0 && Array.isArray(result.layers)) {
|
|
3008
|
+
const nameSet = new Set(layerNames);
|
|
3009
|
+
result.layers = result.layers.filter((l) => !nameSet.has(l.name));
|
|
3010
|
+
}
|
|
3011
|
+
const fromKeys = contributions.forbiddenImports;
|
|
3012
|
+
if (fromKeys && fromKeys.length > 0 && Array.isArray(result.forbiddenImports)) {
|
|
3013
|
+
const fromSet = new Set(fromKeys);
|
|
3014
|
+
result.forbiddenImports = result.forbiddenImports.filter(
|
|
3015
|
+
(r) => !fromSet.has(r.from)
|
|
3016
|
+
);
|
|
3017
|
+
}
|
|
3018
|
+
const boundarySchemas = contributions.boundaries;
|
|
3019
|
+
if (boundarySchemas && boundarySchemas.length > 0 && result.boundaries) {
|
|
3020
|
+
const boundaries = result.boundaries;
|
|
3021
|
+
if (boundaries.requireSchema) {
|
|
3022
|
+
const schemaSet = new Set(boundarySchemas);
|
|
3023
|
+
result.boundaries = {
|
|
3024
|
+
...boundaries,
|
|
3025
|
+
requireSchema: boundaries.requireSchema.filter((s) => !schemaSet.has(s))
|
|
3026
|
+
};
|
|
3027
|
+
}
|
|
3028
|
+
}
|
|
3029
|
+
const thresholdKeys = contributions["architecture.thresholds"];
|
|
3030
|
+
if (thresholdKeys && thresholdKeys.length > 0 && result.architecture) {
|
|
3031
|
+
const arch = { ...result.architecture };
|
|
3032
|
+
const thresholds = { ...arch.thresholds };
|
|
3033
|
+
for (const key of thresholdKeys) {
|
|
3034
|
+
delete thresholds[key];
|
|
3035
|
+
}
|
|
3036
|
+
arch.thresholds = thresholds;
|
|
3037
|
+
result.architecture = arch;
|
|
3038
|
+
}
|
|
3039
|
+
const moduleKeys = contributions["architecture.modules"];
|
|
3040
|
+
if (moduleKeys && moduleKeys.length > 0 && result.architecture) {
|
|
3041
|
+
const arch = { ...result.architecture };
|
|
3042
|
+
const modules = { ...arch.modules };
|
|
3043
|
+
for (const key of moduleKeys) {
|
|
3044
|
+
const colonIdx = key.indexOf(":");
|
|
3045
|
+
if (colonIdx === -1) continue;
|
|
3046
|
+
const modulePath = key.substring(0, colonIdx);
|
|
3047
|
+
const category = key.substring(colonIdx + 1);
|
|
3048
|
+
if (modules[modulePath]) {
|
|
3049
|
+
const moduleCategories = { ...modules[modulePath] };
|
|
3050
|
+
delete moduleCategories[category];
|
|
3051
|
+
if (Object.keys(moduleCategories).length === 0) {
|
|
3052
|
+
delete modules[modulePath];
|
|
3053
|
+
} else {
|
|
3054
|
+
modules[modulePath] = moduleCategories;
|
|
3055
|
+
}
|
|
3056
|
+
}
|
|
3057
|
+
}
|
|
3058
|
+
arch.modules = modules;
|
|
3059
|
+
result.architecture = arch;
|
|
3060
|
+
}
|
|
3061
|
+
const ruleIds = contributions["security.rules"];
|
|
3062
|
+
if (ruleIds && ruleIds.length > 0 && result.security) {
|
|
3063
|
+
const security = { ...result.security };
|
|
3064
|
+
const rules = { ...security.rules };
|
|
3065
|
+
for (const id of ruleIds) {
|
|
3066
|
+
delete rules[id];
|
|
3067
|
+
}
|
|
3068
|
+
security.rules = rules;
|
|
3069
|
+
result.security = security;
|
|
3070
|
+
}
|
|
3071
|
+
return result;
|
|
3072
|
+
}
|
|
3006
3073
|
function createParseError(code, message, details = {}, suggestions = []) {
|
|
3007
3074
|
return { code, message, details, suggestions };
|
|
3008
3075
|
}
|
|
@@ -9839,16 +9906,6 @@ var SHELL_TEMPLATE = `
|
|
|
9839
9906
|
<div class="content">
|
|
9840
9907
|
<h3>Code Translation</h3>
|
|
9841
9908
|
<div class="translation"><%- module.content.codeTranslation %></div>
|
|
9842
|
-
<h3>Knowledge Check</h3>
|
|
9843
|
-
<div class="quiz">
|
|
9844
|
-
<% module.content.quiz.questions.forEach((q, i) => { %>
|
|
9845
|
-
<div class="question">
|
|
9846
|
-
<p><%= q.question %></p>
|
|
9847
|
-
<button onclick="reveal(this)">Reveal Answer</button>
|
|
9848
|
-
<p class="answer" style="display:none;"><%= q.answer %></p>
|
|
9849
|
-
</div>
|
|
9850
|
-
<% }) %>
|
|
9851
|
-
</div>
|
|
9852
9909
|
</div>
|
|
9853
9910
|
</article>
|
|
9854
9911
|
|
|
@@ -9867,10 +9924,6 @@ header { border-bottom: 2px solid #eee; margin-bottom: 20px; padding-bottom: 10p
|
|
|
9867
9924
|
.module h2 { margin-top: 0; color: #0066cc; }
|
|
9868
9925
|
`;
|
|
9869
9926
|
var SCRIPTS = `
|
|
9870
|
-
function reveal(btn) {
|
|
9871
|
-
btn.nextElementSibling.style.display = 'block';
|
|
9872
|
-
btn.style.display = 'none';
|
|
9873
|
-
}
|
|
9874
9927
|
console.log('Blueprint player initialized.');
|
|
9875
9928
|
`;
|
|
9876
9929
|
var MockLLMService = class {
|
|
@@ -9885,20 +9938,8 @@ var ContentPipeline = class {
|
|
|
9885
9938
|
const translation = await llmService.generate(
|
|
9886
9939
|
`You are a technical educator. Explain the following code clearly and concisely: ${codeContext}`
|
|
9887
9940
|
);
|
|
9888
|
-
const quizJson = await llmService.generate(
|
|
9889
|
-
`Create 3 technical quiz questions for this code. Return ONLY valid JSON in this format: { "questions": [{ "question": "...", "answer": "..." }] }. Code: ${codeContext}`
|
|
9890
|
-
);
|
|
9891
|
-
let quiz;
|
|
9892
|
-
try {
|
|
9893
|
-
const cleanJson = quizJson.replace(/```json/g, "").replace(/```/g, "").trim();
|
|
9894
|
-
quiz = JSON.parse(cleanJson);
|
|
9895
|
-
} catch (e) {
|
|
9896
|
-
console.error("Failed to parse quiz JSON", e);
|
|
9897
|
-
quiz = { questions: [{ question: "Failed to generate quiz", answer: "N/A" }] };
|
|
9898
|
-
}
|
|
9899
9941
|
return {
|
|
9900
|
-
codeTranslation: translation
|
|
9901
|
-
quiz
|
|
9942
|
+
codeTranslation: translation
|
|
9902
9943
|
};
|
|
9903
9944
|
}
|
|
9904
9945
|
};
|
|
@@ -10074,6 +10115,7 @@ export {
|
|
|
10074
10115
|
writeLockfile,
|
|
10075
10116
|
addProvenance,
|
|
10076
10117
|
removeProvenance,
|
|
10118
|
+
removeContributions,
|
|
10077
10119
|
createParseError,
|
|
10078
10120
|
TypeScriptParser,
|
|
10079
10121
|
buildSnapshot,
|