@harness-engineering/cli 1.25.6 → 1.25.7

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 (52) hide show
  1. package/dist/{agents-md-2PYJM2MK.js → agents-md-QPO3H5HX.js} +3 -3
  2. package/dist/{architecture-VCLB7A23.js → architecture-IJLXRHZA.js} +4 -4
  3. package/dist/{assess-project-64C6LIKN.js → assess-project-QU6XIVJK.js} +1 -1
  4. package/dist/bin/harness-mcp.js +15 -15
  5. package/dist/bin/harness.js +25 -25
  6. package/dist/{check-phase-gate-RT6PGEHY.js → check-phase-gate-TNY64AOS.js} +4 -4
  7. package/dist/{chunk-ZAKUCM7O.js → chunk-2DF6OZLG.js} +2 -2
  8. package/dist/{chunk-XLO4AXXM.js → chunk-AS5DQT4S.js} +9 -9
  9. package/dist/{chunk-CBZECDCW.js → chunk-D3XL2FLX.js} +5 -5
  10. package/dist/{chunk-R2BI5UPK.js → chunk-E5Z6NTTQ.js} +1 -1
  11. package/dist/{chunk-VELT5VAG.js → chunk-FRDS4XGD.js} +1 -1
  12. package/dist/{chunk-EY6F2QXW.js → chunk-G5SNXUIK.js} +1 -1
  13. package/dist/{chunk-KJC4SE7C.js → chunk-GVNT2YC7.js} +9 -9
  14. package/dist/{chunk-XMEEYMGE.js → chunk-IQO7IINR.js} +1 -1
  15. package/dist/{chunk-7BAGSY5Q.js → chunk-IT2KORSK.js} +1 -1
  16. package/dist/{chunk-43VBX44J.js → chunk-JJQ3TW2E.js} +97 -91
  17. package/dist/{chunk-SMY35HJM.js → chunk-JPZY7ZQX.js} +1 -1
  18. package/dist/{chunk-FL6A72LV.js → chunk-K35D7HF3.js} +1 -1
  19. package/dist/{chunk-BUJOMC3O.js → chunk-K533WNZG.js} +38 -2
  20. package/dist/{chunk-RKZW3FDF.js → chunk-KVJZQ2MV.js} +1 -1
  21. package/dist/{chunk-WEOGCL7B.js → chunk-LTCEV7VF.js} +3 -3
  22. package/dist/{chunk-Y5JA4J2M.js → chunk-LXPRO2FH.js} +2 -2
  23. package/dist/{chunk-U2OMWI7Z.js → chunk-MCDCZMKN.js} +1 -1
  24. package/dist/{chunk-4YEBV2FT.js → chunk-MLOGYWLY.js} +2 -2
  25. package/dist/{chunk-RDQGCHKD.js → chunk-NKQEMWGT.js} +83 -66
  26. package/dist/{chunk-X2JJ3CPG.js → chunk-PCOU2UXU.js} +8 -8
  27. package/dist/{chunk-R7P2FMJT.js → chunk-SZ3Q4XEO.js} +36 -34
  28. package/dist/{chunk-JUXFYB2K.js → chunk-TQRCODRJ.js} +1 -1
  29. package/dist/{chunk-SZZ5UQL7.js → chunk-XVJRFP7W.js} +6 -6
  30. package/dist/{chunk-JQCS75DY.js → chunk-YRBNAHH4.js} +4 -4
  31. package/dist/{chunk-42ZZLMYD.js → chunk-ZIYLIYN4.js} +1 -1
  32. package/dist/{ci-workflow-SZL3KVUK.js → ci-workflow-FJYRFZYQ.js} +3 -3
  33. package/dist/{dist-GRW3X2ZQ.js → dist-HPWNWCT6.js} +1 -1
  34. package/dist/{dist-T3DGV5UN.js → dist-ZV6GO6FA.js} +2 -2
  35. package/dist/{docs-WDLJORLK.js → docs-7DW3DI4Z.js} +4 -4
  36. package/dist/{engine-2YWYRCKK.js → engine-P7EE2IWO.js} +3 -3
  37. package/dist/{entropy-PJGTOORX.js → entropy-HCXRTDFU.js} +3 -3
  38. package/dist/{feedback-M5KCJKL2.js → feedback-Y4FYN3NR.js} +1 -1
  39. package/dist/{generate-agent-definitions-MFDW6LZT.js → generate-agent-definitions-3EHPIWBO.js} +4 -4
  40. package/dist/{graph-loader-QMKXT454.js → graph-loader-KXVS3YK3.js} +1 -1
  41. package/dist/index.d.ts +14 -8
  42. package/dist/index.js +25 -25
  43. package/dist/{loader-6O52FYHE.js → loader-SKHF3JVV.js} +3 -3
  44. package/dist/{mcp-GGNFWKVC.js → mcp-MWYIPDQU.js} +15 -15
  45. package/dist/{performance-337U5URQ.js → performance-ADWH5NJY.js} +4 -4
  46. package/dist/{review-pipeline-DB5RD4SN.js → review-pipeline-TLKE5OQD.js} +3 -3
  47. package/dist/{runtime-B74EN2WD.js → runtime-7LYAW7GU.js} +3 -3
  48. package/dist/{scan-DXQUHGTT.js → scan-BGJ7TLLV.js} +1 -1
  49. package/dist/{security-3AYN6FVU.js → security-5XWINYVB.js} +1 -1
  50. package/dist/{validate-35CD7VWN.js → validate-BFFHYHY7.js} +4 -4
  51. package/dist/{validate-cross-check-LJKXBQYH.js → validate-cross-check-GQX7OVCR.js} +3 -3
  52. package/package.json +4 -4
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  generateAgentsMd
3
- } from "./chunk-7BAGSY5Q.js";
3
+ } from "./chunk-IT2KORSK.js";
4
4
  import {
5
5
  generateCIWorkflow
6
- } from "./chunk-RKZW3FDF.js";
6
+ } from "./chunk-KVJZQ2MV.js";
7
7
  import {
8
8
  TemplateEngine
9
- } from "./chunk-BUJOMC3O.js";
9
+ } from "./chunk-K533WNZG.js";
10
10
  import {
11
11
  generate,
12
12
  validate
13
13
  } from "./chunk-CQ553GZO.js";
14
14
  import {
15
15
  generateRuntime
16
- } from "./chunk-FL6A72LV.js";
16
+ } from "./chunk-K35D7HF3.js";
17
17
  import {
18
18
  runPersona
19
19
  } from "./chunk-GISMXMVL.js";
@@ -28,21 +28,21 @@ import {
28
28
  OutputMode,
29
29
  createCheckPhaseGateCommand,
30
30
  findFiles
31
- } from "./chunk-Y5JA4J2M.js";
31
+ } from "./chunk-LXPRO2FH.js";
32
32
  import {
33
33
  createGenerateAgentDefinitionsCommand,
34
34
  generateAgentDefinitions
35
- } from "./chunk-U2OMWI7Z.js";
35
+ } from "./chunk-MCDCZMKN.js";
36
36
  import {
37
37
  toKebabCase
38
38
  } from "./chunk-KET4QQZB.js";
39
39
  import {
40
40
  listPersonas,
41
41
  loadPersona
42
- } from "./chunk-VELT5VAG.js";
42
+ } from "./chunk-FRDS4XGD.js";
43
43
  import {
44
44
  createScanCommand
45
- } from "./chunk-R2BI5UPK.js";
45
+ } from "./chunk-E5Z6NTTQ.js";
46
46
  import {
47
47
  appendFrameworkAgents,
48
48
  captureHealthSnapshot,
@@ -56,11 +56,11 @@ import {
56
56
  loadOrRebuildIndex,
57
57
  persistToolingConfig,
58
58
  recommend
59
- } from "./chunk-43VBX44J.js";
59
+ } from "./chunk-JJQ3TW2E.js";
60
60
  import {
61
61
  findConfigFile,
62
62
  resolveConfig
63
- } from "./chunk-JUXFYB2K.js";
63
+ } from "./chunk-TQRCODRJ.js";
64
64
  import {
65
65
  VALID_PLATFORMS
66
66
  } from "./chunk-3ISINLYT.js";
@@ -74,7 +74,7 @@ import {
74
74
  } from "./chunk-6B6UN6SG.js";
75
75
  import {
76
76
  loadGraphStore
77
- } from "./chunk-SMY35HJM.js";
77
+ } from "./chunk-JPZY7ZQX.js";
78
78
  import {
79
79
  CLI_VERSION
80
80
  } from "./chunk-BM3PWGXQ.js";
@@ -148,7 +148,7 @@ import {
148
148
  validateKnowledgeMap,
149
149
  writeConfig,
150
150
  writeLockfile
151
- } from "./chunk-42ZZLMYD.js";
151
+ } from "./chunk-ZIYLIYN4.js";
152
152
  import {
153
153
  Err,
154
154
  Ok
@@ -362,7 +362,7 @@ function registerSkillsCommand(adoption) {
362
362
  const globalOpts = cmd.optsWithGlobals();
363
363
  const limit = Math.max(parseInt(opts.limit, 10) || 20, 1);
364
364
  const cwd = process.cwd();
365
- const { readAdoptionRecords, aggregateBySkill } = await import("./dist-T3DGV5UN.js");
365
+ const { readAdoptionRecords, aggregateBySkill } = await import("./dist-ZV6GO6FA.js");
366
366
  const records = readAdoptionRecords(cwd);
367
367
  if (records.length === 0) {
368
368
  if (globalOpts.json) {
@@ -398,7 +398,7 @@ function registerRecentCommand(adoption) {
398
398
  const globalOpts = cmd.optsWithGlobals();
399
399
  const limit = Math.max(parseInt(opts.limit, 10) || 20, 1);
400
400
  const cwd = process.cwd();
401
- const { readAdoptionRecords } = await import("./dist-T3DGV5UN.js");
401
+ const { readAdoptionRecords } = await import("./dist-ZV6GO6FA.js");
402
402
  const records = readAdoptionRecords(cwd);
403
403
  if (records.length === 0) {
404
404
  if (globalOpts.json) {
@@ -476,7 +476,7 @@ function registerSkillCommand(adoption) {
476
476
  adoption.command("skill <name>").description("Show detail for a specific skill").action(async (name, _opts, cmd) => {
477
477
  const globalOpts = cmd.optsWithGlobals();
478
478
  const cwd = process.cwd();
479
- const { readAdoptionRecords, aggregateBySkill } = await import("./dist-T3DGV5UN.js");
479
+ const { readAdoptionRecords, aggregateBySkill } = await import("./dist-ZV6GO6FA.js");
480
480
  const records = readAdoptionRecords(cwd);
481
481
  const skillRecords = records.filter((r) => r.skill === name);
482
482
  if (skillRecords.length === 0) {
@@ -2765,7 +2765,7 @@ import { Command as Command25 } from "commander";
2765
2765
  // src/commands/graph/status.ts
2766
2766
  import * as path15 from "path";
2767
2767
  async function runGraphStatus(projectPath) {
2768
- const { GraphStore } = await import("./dist-GRW3X2ZQ.js");
2768
+ const { GraphStore } = await import("./dist-HPWNWCT6.js");
2769
2769
  const graphDir = path15.join(projectPath, ".harness", "graph");
2770
2770
  const store = new GraphStore();
2771
2771
  const loaded = await store.load(graphDir);
@@ -2805,7 +2805,7 @@ async function runGraphStatus(projectPath) {
2805
2805
  // src/commands/graph/export.ts
2806
2806
  import * as path16 from "path";
2807
2807
  async function runGraphExport(projectPath, format) {
2808
- const { GraphStore } = await import("./dist-GRW3X2ZQ.js");
2808
+ const { GraphStore } = await import("./dist-HPWNWCT6.js");
2809
2809
  const graphDir = path16.join(projectPath, ".harness", "graph");
2810
2810
  const store = new GraphStore();
2811
2811
  const loaded = await store.load(graphDir);
@@ -2841,7 +2841,7 @@ import * as path19 from "path";
2841
2841
  import { Command as Command23 } from "commander";
2842
2842
  import * as path17 from "path";
2843
2843
  async function runQuery(projectPath, rootNodeId, opts) {
2844
- const { GraphStore, ContextQL } = await import("./dist-GRW3X2ZQ.js");
2844
+ const { GraphStore, ContextQL } = await import("./dist-HPWNWCT6.js");
2845
2845
  const store = new GraphStore();
2846
2846
  const graphDir = path17.join(projectPath, ".harness", "graph");
2847
2847
  const loaded = await store.load(graphDir);
@@ -2935,7 +2935,7 @@ async function runIngest(projectPath, source, opts) {
2935
2935
  SlackConnector,
2936
2936
  CIConnector,
2937
2937
  ConfluenceConnector
2938
- } = await import("./dist-GRW3X2ZQ.js");
2938
+ } = await import("./dist-HPWNWCT6.js");
2939
2939
  const graphDir = path18.join(projectPath, ".harness", "graph");
2940
2940
  const store = new GraphStore();
2941
2941
  await store.load(graphDir);
@@ -4071,9 +4071,11 @@ function scaffoldProject(engine, ctx) {
4071
4071
  ...language !== void 0 && { language }
4072
4072
  });
4073
4073
  if (!renderResult.ok) return Err(new CLIError(renderResult.error.message, ExitCode.ERROR));
4074
+ const existingProject = !force && engine.isExistingProject(cwd);
4074
4075
  const writeResult = engine.write(renderResult.value, cwd, {
4075
4076
  overwrite: force,
4076
- ...language !== void 0 && { language }
4077
+ ...language !== void 0 && { language },
4078
+ existingProject
4077
4079
  });
4078
4080
  if (!writeResult.ok) return Err(new CLIError(writeResult.error.message, ExitCode.ERROR));
4079
4081
  if (writeResult.value.skippedConfigs.length > 0) {
@@ -5436,7 +5438,7 @@ function createMcpCommand() {
5436
5438
  parseBudget
5437
5439
  ).action(async (opts) => {
5438
5440
  const [{ startServer: startServer2, getToolDefinitions: getToolDefinitions2 }, { selectTier }] = await Promise.all([
5439
- import("./mcp-GGNFWKVC.js"),
5441
+ import("./mcp-MWYIPDQU.js"),
5440
5442
  import("./tool-tiers-7QGZ3FKY.js")
5441
5443
  ]);
5442
5444
  if (opts.tools && opts.tools.length > 0) {
@@ -5502,7 +5504,7 @@ function registerBenchCommand(perf) {
5502
5504
  perf.command("bench [glob]").description("Run benchmarks via vitest bench").action(async (glob2, _opts, cmd) => {
5503
5505
  const globalOpts = cmd.optsWithGlobals();
5504
5506
  const cwd = process.cwd();
5505
- const { BenchmarkRunner } = await import("./dist-T3DGV5UN.js");
5507
+ const { BenchmarkRunner } = await import("./dist-ZV6GO6FA.js");
5506
5508
  const runner = new BenchmarkRunner();
5507
5509
  const benchFiles = runner.discover(cwd, glob2);
5508
5510
  if (benchFiles.length === 0) {
@@ -5566,7 +5568,7 @@ async function runBaselinesShow(globalOpts) {
5566
5568
  }
5567
5569
  async function runBaselinesUpdate(globalOpts) {
5568
5570
  const cwd = process.cwd();
5569
- const { BenchmarkRunner } = await import("./dist-T3DGV5UN.js");
5571
+ const { BenchmarkRunner } = await import("./dist-ZV6GO6FA.js");
5570
5572
  const runner = new BenchmarkRunner();
5571
5573
  const manager = new BaselineManager(cwd);
5572
5574
  logger.info("Running benchmarks to update baselines...");
@@ -5607,7 +5609,7 @@ function registerReportCommand(perf) {
5607
5609
  perf.command("report").description("Full performance report with metrics, trends, and hotspots").action(async (_opts, cmd) => {
5608
5610
  const globalOpts = cmd.optsWithGlobals();
5609
5611
  const cwd = process.cwd();
5610
- const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./dist-T3DGV5UN.js");
5612
+ const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./dist-ZV6GO6FA.js");
5611
5613
  const analyzer = new EntropyAnalyzer2({
5612
5614
  rootDir: path40.resolve(cwd),
5613
5615
  analyze: { complexity: true, coupling: true }
@@ -5998,7 +6000,7 @@ async function runPublishAnalyses(opts) {
5998
6000
  const nameToExternalId = buildNameToExternalIdMap(projectPath);
5999
6001
  if (!nameToExternalId) return process.exit(1);
6000
6002
  const { AnalysisArchive } = await import("@harness-engineering/orchestrator");
6001
- const { GitHubIssuesSyncAdapter: GitHubIssuesSyncAdapter2 } = await import("./dist-T3DGV5UN.js");
6003
+ const { GitHubIssuesSyncAdapter: GitHubIssuesSyncAdapter2 } = await import("./dist-ZV6GO6FA.js");
6002
6004
  const archive = new AnalysisArchive(path42.join(projectPath, ".harness", "analyses"));
6003
6005
  const analyses = await archive.list();
6004
6006
  if (analyses.length === 0) {
@@ -6524,7 +6526,7 @@ function ensureHooks(cwd) {
6524
6526
  }
6525
6527
  async function runInitialGraphScan(cwd) {
6526
6528
  try {
6527
- const { runScan: runScan2 } = await import("./scan-DXQUHGTT.js");
6529
+ const { runScan: runScan2 } = await import("./scan-BGJ7TLLV.js");
6528
6530
  const result = await runScan2(cwd);
6529
6531
  return {
6530
6532
  status: "pass",
@@ -8027,7 +8029,7 @@ async function runSyncAnalyses(opts) {
8027
8029
  return;
8028
8030
  }
8029
8031
  const { AnalysisArchive, loadPublishedIndex: loadPublishedIndex2, savePublishedIndex: savePublishedIndex2 } = await import("@harness-engineering/orchestrator");
8030
- const { GitHubIssuesSyncAdapter: GitHubIssuesSyncAdapter2 } = await import("./dist-T3DGV5UN.js");
8032
+ const { GitHubIssuesSyncAdapter: GitHubIssuesSyncAdapter2 } = await import("./dist-ZV6GO6FA.js");
8031
8033
  const adapter = new GitHubIssuesSyncAdapter2({ token, config: trackerConfig });
8032
8034
  const archive = new AnalysisArchive(path58.join(projectPath, ".harness", "analyses"));
8033
8035
  const publishedIndex = loadPublishedIndex2(projectPath);
@@ -8554,7 +8556,7 @@ async function runTraceability(options) {
8554
8556
  const projectPath = process.cwd();
8555
8557
  const store = await loadGraphStore(projectPath);
8556
8558
  if (!store) handleNoStore(mode);
8557
- const graphModule = await import("./dist-GRW3X2ZQ.js");
8559
+ const graphModule = await import("./dist-HPWNWCT6.js");
8558
8560
  const filterOptions = buildFilterOptions(options);
8559
8561
  const results = graphModule.queryTraceability(store, filterOptions);
8560
8562
  if (results.length === 0) handleEmptyResults(mode);
@@ -8968,7 +8970,7 @@ function createUpdateCommand() {
8968
8970
  // src/commands/usage.ts
8969
8971
  import { Command as Command82 } from "commander";
8970
8972
  async function loadAndPriceRecords(cwd, includeClaudeSessions = false) {
8971
- const { readCostRecords, loadPricingData, calculateCost, parseCCRecords } = await import("./dist-T3DGV5UN.js");
8973
+ const { readCostRecords, loadPricingData, calculateCost, parseCCRecords } = await import("./dist-ZV6GO6FA.js");
8972
8974
  const records = readCostRecords(cwd);
8973
8975
  if (includeClaudeSessions) {
8974
8976
  const ccRecords = parseCCRecords();
@@ -9061,7 +9063,7 @@ function registerDailyCommand(usage) {
9061
9063
  else logger.info("No usage data found. Run some harness sessions first.");
9062
9064
  return;
9063
9065
  }
9064
- const { aggregateByDay } = await import("./dist-T3DGV5UN.js");
9066
+ const { aggregateByDay } = await import("./dist-ZV6GO6FA.js");
9065
9067
  const limited = aggregateByDay(records).slice(0, days);
9066
9068
  if (globalOpts.json) {
9067
9069
  console.log(
@@ -9090,7 +9092,7 @@ function registerSessionsCommand(usage) {
9090
9092
  }
9091
9093
  return;
9092
9094
  }
9093
- const { aggregateBySession } = await import("./dist-T3DGV5UN.js");
9095
+ const { aggregateBySession } = await import("./dist-ZV6GO6FA.js");
9094
9096
  const sessionData = aggregateBySession(records);
9095
9097
  const limited = sessionData.slice(0, limit);
9096
9098
  if (globalOpts.json) {
@@ -9170,7 +9172,7 @@ function registerSessionCommand(usage) {
9170
9172
  cwd,
9171
9173
  globalOpts.includeClaudeSessions
9172
9174
  );
9173
- const { aggregateBySession } = await import("./dist-T3DGV5UN.js");
9175
+ const { aggregateBySession } = await import("./dist-ZV6GO6FA.js");
9174
9176
  const sessionData = aggregateBySession(records);
9175
9177
  const match = sessionData.find((s) => s.sessionId === id);
9176
9178
  if (!match) {
@@ -9205,7 +9207,7 @@ function registerLatestCommand(usage) {
9205
9207
  }
9206
9208
  return;
9207
9209
  }
9208
- const { aggregateBySession } = await import("./dist-T3DGV5UN.js");
9210
+ const { aggregateBySession } = await import("./dist-ZV6GO6FA.js");
9209
9211
  const sessionData = aggregateBySession(records);
9210
9212
  const latest = sessionData[0];
9211
9213
  if (!latest) {
@@ -9329,7 +9331,7 @@ function resolveValidateMode(globalOpts) {
9329
9331
  return OutputMode.TEXT;
9330
9332
  }
9331
9333
  async function printCrossCheckWarnings(mode) {
9332
- const { runCrossCheck: runCrossCheck2 } = await import("./validate-cross-check-LJKXBQYH.js");
9334
+ const { runCrossCheck: runCrossCheck2 } = await import("./validate-cross-check-GQX7OVCR.js");
9333
9335
  const cwd = process.cwd();
9334
9336
  const crossResult = await runCrossCheck2({
9335
9337
  specsDir: path62.join(cwd, "docs", "specs"),
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ArchConfigSchema,
3
3
  init_dist
4
- } from "./chunk-42ZZLMYD.js";
4
+ } from "./chunk-ZIYLIYN4.js";
5
5
  import {
6
6
  Err,
7
7
  Ok
@@ -50,7 +50,7 @@ async function handleAssessProject(input) {
50
50
  let validateResult = null;
51
51
  if (checksToRun.has("validate")) {
52
52
  try {
53
- const { handleValidateProject } = await import("./validate-35CD7VWN.js");
53
+ const { handleValidateProject } = await import("./validate-BFFHYHY7.js");
54
54
  const result = await handleValidateProject({ path: projectPath });
55
55
  const first = result.content[0];
56
56
  const parsed = first ? JSON.parse(first.text) : {};
@@ -75,7 +75,7 @@ async function handleAssessProject(input) {
75
75
  parallelChecks.push(
76
76
  (async () => {
77
77
  try {
78
- const { handleCheckDependencies } = await import("./architecture-VCLB7A23.js");
78
+ const { handleCheckDependencies } = await import("./architecture-IJLXRHZA.js");
79
79
  const result = await handleCheckDependencies({ path: projectPath });
80
80
  const first = result.content[0];
81
81
  const parsed = first ? JSON.parse(first.text) : {};
@@ -102,7 +102,7 @@ async function handleAssessProject(input) {
102
102
  parallelChecks.push(
103
103
  (async () => {
104
104
  try {
105
- const { handleCheckDocs } = await import("./docs-WDLJORLK.js");
105
+ const { handleCheckDocs } = await import("./docs-7DW3DI4Z.js");
106
106
  const result = await handleCheckDocs({ path: projectPath, scope: "coverage" });
107
107
  const first = result.content[0];
108
108
  const parsed = first ? JSON.parse(first.text) : {};
@@ -129,7 +129,7 @@ async function handleAssessProject(input) {
129
129
  parallelChecks.push(
130
130
  (async () => {
131
131
  try {
132
- const { handleDetectEntropy } = await import("./entropy-PJGTOORX.js");
132
+ const { handleDetectEntropy } = await import("./entropy-HCXRTDFU.js");
133
133
  const result = await handleDetectEntropy({ path: projectPath, type: "all" });
134
134
  const first = result.content[0];
135
135
  const parsed = first ? JSON.parse(first.text) : {};
@@ -156,7 +156,7 @@ async function handleAssessProject(input) {
156
156
  parallelChecks.push(
157
157
  (async () => {
158
158
  try {
159
- const { handleRunSecurityScan } = await import("./security-3AYN6FVU.js");
159
+ const { handleRunSecurityScan } = await import("./security-5XWINYVB.js");
160
160
  const result = await handleRunSecurityScan({ path: projectPath });
161
161
  const first = result.content[0];
162
162
  const parsed = first ? JSON.parse(first.text) : {};
@@ -188,7 +188,7 @@ async function handleAssessProject(input) {
188
188
  parallelChecks.push(
189
189
  (async () => {
190
190
  try {
191
- const { handleCheckPerformance } = await import("./performance-337U5URQ.js");
191
+ const { handleCheckPerformance } = await import("./performance-ADWH5NJY.js");
192
192
  const result = await handleCheckPerformance({ path: projectPath });
193
193
  if ("isError" in result && result.isError) {
194
194
  const msg = result.content[0]?.text ?? "Performance check failed";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveProjectConfig
3
- } from "./chunk-XMEEYMGE.js";
3
+ } from "./chunk-IQO7IINR.js";
4
4
  import {
5
5
  resultToMcpResponse
6
6
  } from "./chunk-EPUKTTJZ.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-T3DGV5UN.js");
41
+ const { validateDependencies, TypeScriptParser } = await import("./dist-ZV6GO6FA.js");
42
42
  const config = configResult.value;
43
43
  const rawLayers = Array.isArray(config.layers) ? config.layers : [];
44
44
  const layers = rawLayers.map((l) => ({
@@ -47,11 +47,11 @@ async function handleCheckDependencies(input) {
47
47
  allowedDependencies: l.allowedDependencies
48
48
  }));
49
49
  const parser = new TypeScriptParser();
50
- const { loadGraphStore } = await import("./graph-loader-QMKXT454.js");
50
+ const { loadGraphStore } = await import("./graph-loader-KXVS3YK3.js");
51
51
  const store = await loadGraphStore(projectPath);
52
52
  let graphDependencyData;
53
53
  if (store) {
54
- const { GraphConstraintAdapter } = await import("./dist-GRW3X2ZQ.js");
54
+ const { GraphConstraintAdapter } = await import("./dist-HPWNWCT6.js");
55
55
  const adapter = new GraphConstraintAdapter(store);
56
56
  const graphData = adapter.computeDependencyGraph();
57
57
  graphDependencyData = {
@@ -13,7 +13,7 @@ import {
13
13
  NODE_STABILITY,
14
14
  init_dist as init_dist2,
15
15
  queryTraceability
16
- } from "./chunk-RDQGCHKD.js";
16
+ } from "./chunk-NKQEMWGT.js";
17
17
  import {
18
18
  __esm,
19
19
  __export
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  generateCIWorkflow
3
- } from "./chunk-RKZW3FDF.js";
4
- import "./chunk-42ZZLMYD.js";
3
+ } from "./chunk-KVJZQ2MV.js";
4
+ import "./chunk-ZIYLIYN4.js";
5
5
  import "./chunk-RL4VMEXL.js";
6
- import "./chunk-RDQGCHKD.js";
6
+ import "./chunk-NKQEMWGT.js";
7
7
  import "./chunk-KFQGP6VL.js";
8
8
  export {
9
9
  generateCIWorkflow
@@ -51,7 +51,7 @@ import {
51
51
  project,
52
52
  queryTraceability,
53
53
  saveGraph
54
- } from "./chunk-RDQGCHKD.js";
54
+ } from "./chunk-NKQEMWGT.js";
55
55
  import "./chunk-KFQGP6VL.js";
56
56
  init_dist();
57
57
  export {
@@ -395,7 +395,7 @@ import {
395
395
  writeSessionSummary,
396
396
  writeTaint,
397
397
  xssRules
398
- } from "./chunk-42ZZLMYD.js";
398
+ } from "./chunk-ZIYLIYN4.js";
399
399
  import {
400
400
  DEFAULT_SKILL_CONTEXT_BUDGET,
401
401
  Err,
@@ -405,7 +405,7 @@ import {
405
405
  isErr,
406
406
  isOk
407
407
  } from "./chunk-RL4VMEXL.js";
408
- import "./chunk-RDQGCHKD.js";
408
+ import "./chunk-NKQEMWGT.js";
409
409
  import "./chunk-KFQGP6VL.js";
410
410
  init_dist();
411
411
  export {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  checkDocsDefinition,
3
3
  handleCheckDocs
4
- } from "./chunk-XLO4AXXM.js";
4
+ } from "./chunk-AS5DQT4S.js";
5
5
  import "./chunk-EPUKTTJZ.js";
6
6
  import "./chunk-W6Y7ZW3Y.js";
7
- import "./chunk-JUXFYB2K.js";
8
- import "./chunk-42ZZLMYD.js";
7
+ import "./chunk-TQRCODRJ.js";
8
+ import "./chunk-ZIYLIYN4.js";
9
9
  import "./chunk-RL4VMEXL.js";
10
- import "./chunk-RDQGCHKD.js";
10
+ import "./chunk-NKQEMWGT.js";
11
11
  import "./chunk-3WGJMBKH.js";
12
12
  import "./chunk-KFQGP6VL.js";
13
13
  export {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  TemplateEngine
3
- } from "./chunk-BUJOMC3O.js";
4
- import "./chunk-42ZZLMYD.js";
3
+ } from "./chunk-K533WNZG.js";
4
+ import "./chunk-ZIYLIYN4.js";
5
5
  import "./chunk-RL4VMEXL.js";
6
- import "./chunk-RDQGCHKD.js";
6
+ import "./chunk-NKQEMWGT.js";
7
7
  import "./chunk-KFQGP6VL.js";
8
8
  export {
9
9
  TemplateEngine
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  detectEntropyDefinition,
3
3
  handleDetectEntropy
4
- } from "./chunk-CBZECDCW.js";
4
+ } from "./chunk-D3XL2FLX.js";
5
5
  import "./chunk-EPUKTTJZ.js";
6
6
  import "./chunk-W6Y7ZW3Y.js";
7
- import "./chunk-42ZZLMYD.js";
7
+ import "./chunk-ZIYLIYN4.js";
8
8
  import "./chunk-RL4VMEXL.js";
9
- import "./chunk-RDQGCHKD.js";
9
+ import "./chunk-NKQEMWGT.js";
10
10
  import "./chunk-KFQGP6VL.js";
11
11
  export {
12
12
  detectEntropyDefinition,
@@ -5,7 +5,7 @@ import {
5
5
  handleCreateSelfReview,
6
6
  handleRequestPeerReview,
7
7
  requestPeerReviewDefinition
8
- } from "./chunk-KJC4SE7C.js";
8
+ } from "./chunk-GVNT2YC7.js";
9
9
  import "./chunk-EPUKTTJZ.js";
10
10
  import "./chunk-W6Y7ZW3Y.js";
11
11
  import "./chunk-KFQGP6VL.js";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  createGenerateAgentDefinitionsCommand,
3
3
  generateAgentDefinitions
4
- } from "./chunk-U2OMWI7Z.js";
4
+ } from "./chunk-MCDCZMKN.js";
5
5
  import "./chunk-KET4QQZB.js";
6
- import "./chunk-VELT5VAG.js";
6
+ import "./chunk-FRDS4XGD.js";
7
7
  import "./chunk-3ISINLYT.js";
8
8
  import "./chunk-6B6UN6SG.js";
9
- import "./chunk-42ZZLMYD.js";
9
+ import "./chunk-ZIYLIYN4.js";
10
10
  import "./chunk-RL4VMEXL.js";
11
- import "./chunk-RDQGCHKD.js";
11
+ import "./chunk-NKQEMWGT.js";
12
12
  import "./chunk-3WGJMBKH.js";
13
13
  import "./chunk-KFQGP6VL.js";
14
14
  export {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  clearGraphStoreCache,
3
3
  loadGraphStore
4
- } from "./chunk-SMY35HJM.js";
4
+ } from "./chunk-JPZY7ZQX.js";
5
5
  import "./chunk-KFQGP6VL.js";
6
6
  export {
7
7
  clearGraphStoreCache,
package/dist/index.d.ts CHANGED
@@ -732,15 +732,15 @@ declare const HarnessConfigSchema: z.ZodObject<{
732
732
  thresholds: z.ZodDefault<z.ZodRecord<z.ZodEnum<["circular-deps", "layer-violations", "complexity", "coupling", "forbidden-imports", "module-size", "dependency-depth"]>, z.ZodUnion<[z.ZodNumber, z.ZodRecord<z.ZodString, z.ZodNumber>]>>>;
733
733
  modules: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodEnum<["circular-deps", "layer-violations", "complexity", "coupling", "forbidden-imports", "module-size", "dependency-depth"]>, z.ZodUnion<[z.ZodNumber, z.ZodRecord<z.ZodString, z.ZodNumber>]>>>>;
734
734
  }, "strip", z.ZodTypeAny, {
735
- thresholds: Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>;
736
- modules: Record<string, Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>>;
737
735
  enabled: boolean;
738
736
  baselinePath: string;
737
+ thresholds: Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>;
738
+ modules: Record<string, Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>>;
739
739
  }, {
740
- thresholds?: Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>> | undefined;
741
- modules?: Record<string, Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>> | undefined;
742
740
  enabled?: boolean | undefined;
743
741
  baselinePath?: string | undefined;
742
+ thresholds?: Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>> | undefined;
743
+ modules?: Record<string, Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>> | undefined;
744
744
  }>>;
745
745
  /** Skill loading, suggestion, and tier override settings */
746
746
  skills: z.ZodOptional<z.ZodObject<{
@@ -964,10 +964,10 @@ declare const HarnessConfigSchema: z.ZodObject<{
964
964
  dismissed: string[];
965
965
  } | undefined;
966
966
  architecture?: {
967
- thresholds: Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>;
968
- modules: Record<string, Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>>;
969
967
  enabled: boolean;
970
968
  baselinePath: string;
969
+ thresholds: Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>;
970
+ modules: Record<string, Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>>;
971
971
  } | undefined;
972
972
  traceability?: {
973
973
  enabled: boolean;
@@ -1108,10 +1108,10 @@ declare const HarnessConfigSchema: z.ZodObject<{
1108
1108
  dismissed?: string[] | undefined;
1109
1109
  } | undefined;
1110
1110
  architecture?: {
1111
- thresholds?: Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>> | undefined;
1112
- modules?: Record<string, Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>> | undefined;
1113
1111
  enabled?: boolean | undefined;
1114
1112
  baselinePath?: string | undefined;
1113
+ thresholds?: Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>> | undefined;
1114
+ modules?: Record<string, Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>> | undefined;
1115
1115
  } | undefined;
1116
1116
  traceability?: {
1117
1117
  enabled?: boolean | undefined;
@@ -1304,6 +1304,7 @@ interface DetectedFramework {
1304
1304
  interface WriteOptions {
1305
1305
  overwrite: boolean;
1306
1306
  language?: string;
1307
+ existingProject?: boolean;
1307
1308
  }
1308
1309
  interface WriteResult {
1309
1310
  written: string[];
@@ -1317,6 +1318,11 @@ declare class TemplateEngine {
1317
1318
  render(template: ResolvedTemplate, context: TemplateContext): Result<RenderedFiles, Error>;
1318
1319
  private renderFile;
1319
1320
  write(files: RenderedFiles, targetDir: string, options: WriteOptions): Result<WriteResult, Error>;
1321
+ /**
1322
+ * Check whether the target directory already contains a project by looking for
1323
+ * common build/package configuration files. Returns true if any marker is found.
1324
+ */
1325
+ isExistingProject(targetDir: string): boolean;
1320
1326
  detectFramework(targetDir: string): Result<DetectedFramework[], Error>;
1321
1327
  private resolveLanguageTemplate;
1322
1328
  private findTemplateDir;