@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.
Files changed (35) hide show
  1. package/dist/{agents-md-ZFV6RR5J.js → agents-md-KIS2RSMG.js} +1 -1
  2. package/dist/{architecture-EXNUMH5R.js → architecture-AJAUDRQQ.js} +2 -2
  3. package/dist/bin/harness-mcp.js +10 -10
  4. package/dist/bin/harness.js +12 -12
  5. package/dist/{check-phase-gate-VZFOY2PO.js → check-phase-gate-K7QCSYRJ.js} +2 -2
  6. package/dist/{chunk-GSIVNYVJ.js → chunk-2SWJ4VO7.js} +4 -4
  7. package/dist/{chunk-I6JZYEGT.js → chunk-747VBPA4.js} +41 -41
  8. package/dist/{chunk-2YSQOUHO.js → chunk-AE2OWWDH.js} +72 -30
  9. package/dist/{chunk-ZWC3MN5E.js → chunk-B5SBNH4S.js} +705 -203
  10. package/dist/{chunk-NC6PXVWT.js → chunk-CTTFXXKJ.js} +3 -3
  11. package/dist/{chunk-X3MN5UQJ.js → chunk-EAURF4LH.js} +1 -1
  12. package/dist/{chunk-PA2XHK75.js → chunk-FLOEMHDF.js} +3 -3
  13. package/dist/{chunk-Z75JC6I2.js → chunk-JLXOEO5C.js} +2 -2
  14. package/dist/{chunk-TI4TGEX6.js → chunk-OIGVQF5V.js} +1 -1
  15. package/dist/{chunk-WUJTCNOU.js → chunk-TJVVU3HB.js} +1 -1
  16. package/dist/{chunk-WJZDO6OY.js → chunk-YXOG2277.js} +2 -2
  17. package/dist/{chunk-2NCIKJES.js → chunk-ZU2UBYBY.js} +1 -1
  18. package/dist/{ci-workflow-K5RCRNYR.js → ci-workflow-NBL4OT4A.js} +1 -1
  19. package/dist/{dist-JVZ2MKBC.js → dist-IJ4J4C5G.js} +3 -1
  20. package/dist/{docs-PWCUVYWU.js → docs-CPTMH3VY.js} +2 -2
  21. package/dist/{engine-6XUP6GAK.js → engine-BUWPAAGD.js} +1 -1
  22. package/dist/{entropy-4I6JEYAC.js → entropy-Z4FYVQ7L.js} +2 -2
  23. package/dist/{feedback-TNIW534S.js → feedback-TT6WF5YX.js} +1 -1
  24. package/dist/{generate-agent-definitions-MWKEA5NU.js → generate-agent-definitions-J5HANRNR.js} +1 -1
  25. package/dist/index.d.ts +39 -2
  26. package/dist/index.js +17 -13
  27. package/dist/{loader-4FIPIFII.js → loader-PCU5YWRH.js} +1 -1
  28. package/dist/{mcp-MOKLYNZL.js → mcp-YM6QLHLZ.js} +10 -10
  29. package/dist/{performance-BTOJCPXU.js → performance-YJVXOKIB.js} +2 -2
  30. package/dist/{review-pipeline-3YTW3463.js → review-pipeline-KGMIMLIE.js} +1 -1
  31. package/dist/{runtime-GO7K2PJE.js → runtime-F6R27LD6.js} +1 -1
  32. package/dist/{security-4P2GGFF6.js → security-MX5VVXBC.js} +1 -1
  33. package/dist/{validate-JN44D2Q7.js → validate-EFNMSFKD.js} +2 -2
  34. package/dist/{validate-cross-check-DB7RIFFF.js → validate-cross-check-LJX65SBS.js} +1 -1
  35. package/package.json +3 -3
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateAgentsMd
3
3
  } from "./chunk-NKDM3FMH.js";
4
- import "./chunk-2YSQOUHO.js";
4
+ import "./chunk-AE2OWWDH.js";
5
5
  import "./chunk-MHBMTPW7.js";
6
6
  export {
7
7
  generateAgentsMd
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  checkDependenciesDefinition,
3
3
  handleCheckDependencies
4
- } from "./chunk-TI4TGEX6.js";
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-2YSQOUHO.js";
8
+ import "./chunk-AE2OWWDH.js";
9
9
  import "./chunk-MHBMTPW7.js";
10
10
  export {
11
11
  checkDependenciesDefinition,
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  startServer
4
- } from "../chunk-I6JZYEGT.js";
5
- import "../chunk-Z75JC6I2.js";
6
- import "../chunk-GSIVNYVJ.js";
7
- import "../chunk-PA2XHK75.js";
8
- import "../chunk-X3MN5UQJ.js";
9
- import "../chunk-WUJTCNOU.js";
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-WJZDO6OY.js";
11
+ import "../chunk-YXOG2277.js";
12
12
  import "../chunk-2YPZKGAG.js";
13
- import "../chunk-TI4TGEX6.js";
13
+ import "../chunk-OIGVQF5V.js";
14
14
  import "../chunk-K6XAPGML.js";
15
- import "../chunk-NC6PXVWT.js";
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-2YSQOUHO.js";
21
+ import "../chunk-AE2OWWDH.js";
22
22
  import "../chunk-MHBMTPW7.js";
23
23
 
24
24
  // src/bin/harness-mcp.ts
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  createProgram
4
- } from "../chunk-ZWC3MN5E.js";
4
+ } from "../chunk-B5SBNH4S.js";
5
5
  import "../chunk-VUCPTQ6G.js";
6
6
  import {
7
7
  findConfigFile,
8
8
  loadConfig
9
- } from "../chunk-2NCIKJES.js";
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-I6JZYEGT.js";
22
- import "../chunk-Z75JC6I2.js";
23
- import "../chunk-GSIVNYVJ.js";
24
- import "../chunk-PA2XHK75.js";
25
- import "../chunk-X3MN5UQJ.js";
26
- import "../chunk-WUJTCNOU.js";
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-WJZDO6OY.js";
28
+ import "../chunk-YXOG2277.js";
29
29
  import "../chunk-2YPZKGAG.js";
30
- import "../chunk-TI4TGEX6.js";
30
+ import "../chunk-OIGVQF5V.js";
31
31
  import "../chunk-K6XAPGML.js";
32
- import "../chunk-NC6PXVWT.js";
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-2YSQOUHO.js";
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-2NCIKJES.js";
4
+ } from "./chunk-ZU2UBYBY.js";
5
5
  import "./chunk-EBJQ6N4M.js";
6
6
  import "./chunk-3WGJMBKH.js";
7
- import "./chunk-2YSQOUHO.js";
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-JVZ2MKBC.js");
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-JVZ2MKBC.js");
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-JVZ2MKBC.js");
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-JVZ2MKBC.js");
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-Z75JC6I2.js";
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-GSIVNYVJ.js";
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-PA2XHK75.js";
22
+ } from "./chunk-FLOEMHDF.js";
23
23
  import {
24
24
  handleRunSecurityScan,
25
25
  runSecurityScanDefinition
26
- } from "./chunk-X3MN5UQJ.js";
26
+ } from "./chunk-EAURF4LH.js";
27
27
  import {
28
28
  handleRunCodeReview,
29
29
  runCodeReviewDefinition
30
- } from "./chunk-WUJTCNOU.js";
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-WJZDO6OY.js";
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-TI4TGEX6.js";
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-NC6PXVWT.js";
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-6XUP6GAK.js");
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-4FIPIFII.js");
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-4FIPIFII.js");
246
- const { generateRuntime } = await import("./runtime-GO7K2PJE.js");
247
- const { generateAgentsMd } = await import("./agents-md-ZFV6RR5J.js");
248
- const { generateCIWorkflow } = await import("./ci-workflow-K5RCRNYR.js");
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-4FIPIFII.js");
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-JVZ2MKBC.js");
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-JVZ2MKBC.js");
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-JVZ2MKBC.js");
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-JVZ2MKBC.js");
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-VZFOY2PO.js");
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-DB7RIFFF.js");
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-JVZ2MKBC.js");
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-MWKEA5NU.js");
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-JVZ2MKBC.js");
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-JVZ2MKBC.js");
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-JVZ2MKBC.js");
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-JVZ2MKBC.js").then((core) => core.loadState(projectPath)) : Promise.resolve(null);
3249
- const learningsPromise = includeSet.has("learnings") ? import("./dist-JVZ2MKBC.js").then(
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-JVZ2MKBC.js").then((core) => core.loadHandoff(projectPath)) : Promise.resolve(null);
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-JN44D2Q7.js");
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-JN44D2Q7.js");
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-EXNUMH5R.js");
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-PWCUVYWU.js");
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-4I6JEYAC.js");
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-4P2GGFF6.js");
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-BTOJCPXU.js");
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-TNIW534S.js");
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-TNIW534S.js");
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-3YTW3463.js");
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-JVZ2MKBC.js");
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-JVZ2MKBC.js");
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
- await writeConfig(lockfilePath, lockfile);
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,