@harness-engineering/cli 1.22.0 → 1.23.1

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 (61) hide show
  1. package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +2 -2
  2. package/dist/agents/skills/claude-code/harness-brainstorming/SKILL.md +1 -1
  3. package/dist/agents/skills/claude-code/harness-execution/SKILL.md +1 -1
  4. package/dist/agents/skills/claude-code/harness-roadmap/SKILL.md +5 -5
  5. package/dist/agents/skills/claude-code/harness-roadmap-pilot/SKILL.md +18 -14
  6. package/dist/agents/skills/codex/harness-autopilot/SKILL.md +2 -2
  7. package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +1 -1
  8. package/dist/agents/skills/codex/harness-execution/SKILL.md +1 -1
  9. package/dist/agents/skills/codex/harness-roadmap/SKILL.md +5 -5
  10. package/dist/agents/skills/codex/harness-roadmap-pilot/SKILL.md +18 -14
  11. package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +2 -2
  12. package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +1 -1
  13. package/dist/agents/skills/cursor/harness-execution/SKILL.md +1 -1
  14. package/dist/agents/skills/cursor/harness-roadmap/SKILL.md +5 -5
  15. package/dist/agents/skills/cursor/harness-roadmap-pilot/SKILL.md +18 -14
  16. package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +2 -2
  17. package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +1 -1
  18. package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +1 -1
  19. package/dist/agents/skills/gemini-cli/harness-roadmap/SKILL.md +5 -5
  20. package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/SKILL.md +18 -14
  21. package/dist/{agents-md-PM7LO74M.js → agents-md-FJXDMZPJ.js} +2 -2
  22. package/dist/{architecture-OVOCDTI6.js → architecture-FVERI7BQ.js} +3 -3
  23. package/dist/{assess-project-R2OZIDDS.js → assess-project-UGL5KLBV.js} +1 -1
  24. package/dist/bin/harness-mcp.js +14 -14
  25. package/dist/bin/harness.js +16 -16
  26. package/dist/{check-phase-gate-7JQ6EW5R.js → check-phase-gate-C7JPPKMX.js} +4 -4
  27. package/dist/{chunk-B4WHXHF7.js → chunk-7DMF3VT5.js} +1 -1
  28. package/dist/{chunk-ASS5TD2Y.js → chunk-7V5Y2L67.js} +1 -1
  29. package/dist/{chunk-J7W4LTRK.js → chunk-7XZSHTYZ.js} +2 -2
  30. package/dist/{chunk-GRJ7A4WT.js → chunk-AQN7GFKU.js} +1 -1
  31. package/dist/{chunk-5FBWWMY2.js → chunk-CZEPCYVX.js} +6 -6
  32. package/dist/{chunk-TEZI27SA.js → chunk-EUCASOD7.js} +2 -2
  33. package/dist/{chunk-FSLFBLYW.js → chunk-FNVAW5NG.js} +7 -7
  34. package/dist/{chunk-5QTWFO24.js → chunk-HRUCT5YX.js} +8 -8
  35. package/dist/{chunk-DXYOAQQC.js → chunk-KIR5PQX5.js} +1 -1
  36. package/dist/{chunk-DJEBBENF.js → chunk-L57RL7MC.js} +95 -81
  37. package/dist/{chunk-ZEIEUCZL.js → chunk-LAKMOIU6.js} +9 -9
  38. package/dist/{chunk-U44JNY3Y.js → chunk-QBATHQXU.js} +64 -36
  39. package/dist/{chunk-W6MPLFXU.js → chunk-RQ3AKUJB.js} +3 -3
  40. package/dist/{chunk-SOTTK27D.js → chunk-UJHNGRS6.js} +19 -19
  41. package/dist/{chunk-PUOMFNRO.js → chunk-WKLLNUAT.js} +1 -1
  42. package/dist/{chunk-IK5GSLW6.js → chunk-ZLTFDTK7.js} +4 -4
  43. package/dist/{ci-workflow-OTTEERPF.js → ci-workflow-S7VY625R.js} +2 -2
  44. package/dist/{dist-IA6XYKNO.js → dist-K56VJ4UJ.js} +1 -1
  45. package/dist/{dist-LCR2IO7U.js → dist-LPGVPYOZ.js} +2 -2
  46. package/dist/{docs-CHAYSGOP.js → docs-CGUBALYL.js} +4 -4
  47. package/dist/{engine-4MY2U5RZ.js → engine-PEHFAFOT.js} +2 -2
  48. package/dist/{entropy-AKSZG7G5.js → entropy-H5OOCI57.js} +3 -3
  49. package/dist/{feedback-QGCSW7SB.js → feedback-XTDR7E3R.js} +1 -1
  50. package/dist/{generate-agent-definitions-KU6X2UQN.js → generate-agent-definitions-RBI7Z4RY.js} +2 -2
  51. package/dist/{graph-loader-FJN4H7Y4.js → graph-loader-GRXDUWXO.js} +1 -1
  52. package/dist/index.js +16 -16
  53. package/dist/{loader-AV5XEMER.js → loader-IOC5L7NL.js} +2 -2
  54. package/dist/{mcp-LWHVQRG7.js → mcp-7RPKBGIR.js} +14 -14
  55. package/dist/{performance-ETZVXXGQ.js → performance-FSXEQJYB.js} +4 -4
  56. package/dist/{review-pipeline-3ZS3GJSP.js → review-pipeline-VLKL7NV2.js} +1 -1
  57. package/dist/{runtime-KQTJRK3H.js → runtime-3X2MV6R4.js} +2 -2
  58. package/dist/{security-LJCLZES6.js → security-B76X5RL7.js} +1 -1
  59. package/dist/{validate-4IA5RPEX.js → validate-KN6A2GN3.js} +3 -3
  60. package/dist/{validate-cross-check-VX2BAHQI.js → validate-cross-check-LITTM24O.js} +2 -2
  61. package/package.json +3 -3
@@ -33,7 +33,7 @@ var createSelfReviewDefinition = {
33
33
  };
34
34
  async function handleCreateSelfReview(input) {
35
35
  try {
36
- const { parseDiff, createSelfReview } = await import("./dist-LCR2IO7U.js");
36
+ const { parseDiff, createSelfReview } = await import("./dist-LPGVPYOZ.js");
37
37
  const parseResult = parseDiff(input.diff);
38
38
  if (!parseResult.ok) {
39
39
  return resultToMcpResponse(parseResult);
@@ -53,11 +53,11 @@ async function handleCreateSelfReview(input) {
53
53
  ...input.maxFileCount !== void 0 ? { maxChangedFiles: input.maxFileCount } : {}
54
54
  }
55
55
  };
56
- const { loadGraphStore } = await import("./graph-loader-FJN4H7Y4.js");
56
+ const { loadGraphStore } = await import("./graph-loader-GRXDUWXO.js");
57
57
  const store = await loadGraphStore(projectPath);
58
58
  let graphData;
59
59
  if (store) {
60
- const { GraphFeedbackAdapter } = await import("./dist-IA6XYKNO.js");
60
+ const { GraphFeedbackAdapter } = await import("./dist-K56VJ4UJ.js");
61
61
  const adapter = new GraphFeedbackAdapter(store);
62
62
  const changedFiles = parseResult.value.files.map((f) => f.path);
63
63
  const impact = adapter.computeImpactData(changedFiles);
@@ -119,7 +119,7 @@ var analyzeDiffDefinition = {
119
119
  };
120
120
  async function handleAnalyzeDiff(input) {
121
121
  try {
122
- const { parseDiff, analyzeDiff } = await import("./dist-LCR2IO7U.js");
122
+ const { parseDiff, analyzeDiff } = await import("./dist-LPGVPYOZ.js");
123
123
  const parseResult = parseDiff(input.diff);
124
124
  if (!parseResult.ok) {
125
125
  return resultToMcpResponse(parseResult);
@@ -139,10 +139,10 @@ async function handleAnalyzeDiff(input) {
139
139
  let graphImpactData;
140
140
  if (input.path) {
141
141
  try {
142
- const { loadGraphStore } = await import("./graph-loader-FJN4H7Y4.js");
142
+ const { loadGraphStore } = await import("./graph-loader-GRXDUWXO.js");
143
143
  const store = await loadGraphStore(sanitizePath(input.path));
144
144
  if (store) {
145
- const { GraphFeedbackAdapter } = await import("./dist-IA6XYKNO.js");
145
+ const { GraphFeedbackAdapter } = await import("./dist-K56VJ4UJ.js");
146
146
  const adapter = new GraphFeedbackAdapter(store);
147
147
  const changedFiles = parseResult.value.files.map((f) => f.path);
148
148
  const impact = adapter.computeImpactData(changedFiles);
@@ -195,7 +195,7 @@ var requestPeerReviewDefinition = {
195
195
  };
196
196
  async function handleRequestPeerReview(input) {
197
197
  try {
198
- const { parseDiff, requestPeerReview } = await import("./dist-LCR2IO7U.js");
198
+ const { parseDiff, requestPeerReview } = await import("./dist-LPGVPYOZ.js");
199
199
  const parseResult = parseDiff(input.diff);
200
200
  if (!parseResult.ok) {
201
201
  return resultToMcpResponse(parseResult);
@@ -206,10 +206,10 @@ async function handleRequestPeerReview(input) {
206
206
  ...input.context ? { metadata: { context: input.context } } : {}
207
207
  };
208
208
  try {
209
- const { loadGraphStore } = await import("./graph-loader-FJN4H7Y4.js");
209
+ const { loadGraphStore } = await import("./graph-loader-GRXDUWXO.js");
210
210
  const store = await loadGraphStore(sanitizePath(input.path));
211
211
  if (store) {
212
- const { GraphFeedbackAdapter } = await import("./dist-IA6XYKNO.js");
212
+ const { GraphFeedbackAdapter } = await import("./dist-K56VJ4UJ.js");
213
213
  const adapter = new GraphFeedbackAdapter(store);
214
214
  const changedFiles = parseResult.value.files.map((f) => f.path);
215
215
  const impactData = adapter.computeImpactData(changedFiles);
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  GraphStore,
8
8
  queryTraceability
9
- } from "./chunk-TEZI27SA.js";
9
+ } from "./chunk-EUCASOD7.js";
10
10
 
11
11
  // ../core/dist/chunk-BQUWXBGR.mjs
12
12
  import { z } from "zod";
@@ -13135,6 +13135,7 @@ var GitHubIssuesSyncAdapter = class {
13135
13135
  const data = await response.json();
13136
13136
  return Ok({
13137
13137
  externalId,
13138
+ title: data.title,
13138
13139
  status: data.state,
13139
13140
  labels: data.labels.map((l) => l.name),
13140
13141
  assignee: data.assignee ? `@${data.assignee.login}` : null
@@ -13169,6 +13170,7 @@ var GitHubIssuesSyncAdapter = class {
13169
13170
  for (const issue of issues) {
13170
13171
  tickets.push({
13171
13172
  externalId: buildExternalId(this.owner, this.repo, issue.number),
13173
+ title: issue.title,
13172
13174
  status: issue.state,
13173
13175
  labels: issue.labels.map((l) => l.name),
13174
13176
  assignee: issue.assignee ? `@${issue.assignee.login}` : null
@@ -13210,43 +13212,61 @@ var GitHubIssuesSyncAdapter = class {
13210
13212
  function emptySyncResult() {
13211
13213
  return { created: [], updated: [], assignmentChanges: [], errors: [] };
13212
13214
  }
13213
- async function syncToExternal(roadmap, adapter, _config) {
13214
- const result = emptySyncResult();
13215
- let defaultAssignee = null;
13216
- const userResult = await adapter.getAuthenticatedUser();
13217
- if (userResult.ok) {
13218
- defaultAssignee = userResult.value;
13215
+ function buildDedupIndex(tickets, config) {
13216
+ const index = /* @__PURE__ */ new Map();
13217
+ if (!tickets) return index;
13218
+ const configLabels = new Set((config.labels ?? []).map((l) => l.toLowerCase()));
13219
+ for (const ticket of tickets) {
13220
+ const hasConfigLabels = configLabels.size === 0 || ticket.labels.some((l) => configLabels.has(l.toLowerCase()));
13221
+ if (!hasConfigLabels) continue;
13222
+ const key = ticket.title.toLowerCase();
13223
+ const prev = index.get(key);
13224
+ if (!prev || prev.status === "closed" && ticket.status === "open") {
13225
+ index.set(key, ticket);
13226
+ }
13227
+ }
13228
+ return index;
13229
+ }
13230
+ async function resolveExternalId(feature, milestone, adapter, dedupIndex, result) {
13231
+ if (feature.externalId) return true;
13232
+ const existing = dedupIndex.get(feature.name.toLowerCase());
13233
+ if (existing) {
13234
+ feature.externalId = existing.externalId;
13235
+ return true;
13219
13236
  }
13237
+ const createResult = await adapter.createTicket(feature, milestone);
13238
+ if (createResult.ok) {
13239
+ feature.externalId = createResult.value.externalId;
13240
+ result.created.push(createResult.value);
13241
+ } else {
13242
+ result.errors.push({ featureOrId: feature.name, error: createResult.error });
13243
+ }
13244
+ return false;
13245
+ }
13246
+ async function syncToExternal(roadmap, adapter, config, prefetchedTickets) {
13247
+ const result = emptySyncResult();
13248
+ const dedupIndex = buildDedupIndex(prefetchedTickets, config);
13220
13249
  for (const milestone of roadmap.milestones) {
13221
13250
  for (const feature of milestone.features) {
13222
- if (!feature.assignee && defaultAssignee) {
13223
- feature.assignee = defaultAssignee;
13224
- }
13225
- if (!feature.externalId) {
13226
- const createResult = await adapter.createTicket(feature, milestone.name);
13227
- if (createResult.ok) {
13228
- feature.externalId = createResult.value.externalId;
13229
- result.created.push(createResult.value);
13230
- } else {
13231
- result.errors.push({ featureOrId: feature.name, error: createResult.error });
13232
- }
13251
+ const shouldUpdate = await resolveExternalId(
13252
+ feature,
13253
+ milestone.name,
13254
+ adapter,
13255
+ dedupIndex,
13256
+ result
13257
+ );
13258
+ if (!shouldUpdate) continue;
13259
+ const updateResult = await adapter.updateTicket(feature.externalId, feature, milestone.name);
13260
+ if (updateResult.ok) {
13261
+ result.updated.push(feature.externalId);
13233
13262
  } else {
13234
- const updateResult = await adapter.updateTicket(
13235
- feature.externalId,
13236
- feature,
13237
- milestone.name
13238
- );
13239
- if (updateResult.ok) {
13240
- result.updated.push(feature.externalId);
13241
- } else {
13242
- result.errors.push({ featureOrId: feature.externalId, error: updateResult.error });
13243
- }
13263
+ result.errors.push({ featureOrId: feature.externalId, error: updateResult.error });
13244
13264
  }
13245
13265
  }
13246
13266
  }
13247
13267
  return result;
13248
13268
  }
13249
- async function syncFromExternal(roadmap, adapter, config, options) {
13269
+ async function syncFromExternal(roadmap, adapter, config, options, prefetchedTickets) {
13250
13270
  const result = emptySyncResult();
13251
13271
  const forceSync = options?.forceSync ?? false;
13252
13272
  const featureByExternalId = /* @__PURE__ */ new Map();
@@ -13258,12 +13278,18 @@ async function syncFromExternal(roadmap, adapter, config, options) {
13258
13278
  }
13259
13279
  }
13260
13280
  if (featureByExternalId.size === 0) return result;
13261
- const fetchResult = await adapter.fetchAllTickets();
13262
- if (!fetchResult.ok) {
13263
- result.errors.push({ featureOrId: "*", error: fetchResult.error });
13264
- return result;
13281
+ let tickets;
13282
+ if (prefetchedTickets) {
13283
+ tickets = prefetchedTickets;
13284
+ } else {
13285
+ const fetchResult = await adapter.fetchAllTickets();
13286
+ if (!fetchResult.ok) {
13287
+ result.errors.push({ featureOrId: "*", error: fetchResult.error });
13288
+ return result;
13289
+ }
13290
+ tickets = fetchResult.value;
13265
13291
  }
13266
- for (const ticketState of fetchResult.value) {
13292
+ for (const ticketState of tickets) {
13267
13293
  const feature = featureByExternalId.get(ticketState.externalId);
13268
13294
  if (!feature) continue;
13269
13295
  if (ticketState.assignee !== feature.assignee) {
@@ -13303,8 +13329,10 @@ async function fullSync(roadmapPath, adapter, config, options) {
13303
13329
  };
13304
13330
  }
13305
13331
  const roadmap = parseResult.value;
13306
- const pushResult = await syncToExternal(roadmap, adapter, config);
13307
- const pullResult = await syncFromExternal(roadmap, adapter, config, options);
13332
+ const fetchResult = await adapter.fetchAllTickets();
13333
+ const tickets = fetchResult.ok ? fetchResult.value : void 0;
13334
+ const pushResult = await syncToExternal(roadmap, adapter, config, tickets);
13335
+ const pullResult = await syncFromExternal(roadmap, adapter, config, options, tickets);
13308
13336
  fs22.writeFileSync(roadmapPath, serializeRoadmap(roadmap), "utf-8");
13309
13337
  return {
13310
13338
  created: pushResult.created,
@@ -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-LCR2IO7U.js");
41
+ const { validateDependencies, TypeScriptParser } = await import("./dist-LPGVPYOZ.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-FJN4H7Y4.js");
50
+ const { loadGraphStore } = await import("./graph-loader-GRXDUWXO.js");
51
51
  const store = await loadGraphStore(projectPath);
52
52
  let graphDependencyData;
53
53
  if (store) {
54
- const { GraphConstraintAdapter } = await import("./dist-IA6XYKNO.js");
54
+ const { GraphConstraintAdapter } = await import("./dist-K56VJ4UJ.js");
55
55
  const adapter = new GraphConstraintAdapter(store);
56
56
  const graphData = adapter.computeDependencyGraph();
57
57
  graphDependencyData = {
@@ -9,7 +9,7 @@ import {
9
9
  OutputMode,
10
10
  createCheckPhaseGateCommand,
11
11
  findFiles
12
- } from "./chunk-PUOMFNRO.js";
12
+ } from "./chunk-WKLLNUAT.js";
13
13
  import {
14
14
  createGenerateAgentDefinitionsCommand,
15
15
  generateAgentDefinitions
@@ -58,14 +58,14 @@ import {
58
58
  loadOrRebuildIndex,
59
59
  persistToolingConfig,
60
60
  recommend
61
- } from "./chunk-DJEBBENF.js";
61
+ } from "./chunk-L57RL7MC.js";
62
62
  import {
63
63
  VALID_PLATFORMS
64
64
  } from "./chunk-CJDVBBPB.js";
65
65
  import {
66
66
  findConfigFile,
67
67
  resolveConfig
68
- } from "./chunk-GRJ7A4WT.js";
68
+ } from "./chunk-AQN7GFKU.js";
69
69
  import {
70
70
  resolveGlobalSkillsDir,
71
71
  resolvePersonasDir,
@@ -143,7 +143,7 @@ import {
143
143
  validateKnowledgeMap,
144
144
  writeConfig,
145
145
  writeLockfile
146
- } from "./chunk-U44JNY3Y.js";
146
+ } from "./chunk-QBATHQXU.js";
147
147
  import {
148
148
  Err,
149
149
  Ok
@@ -229,7 +229,7 @@ function createValidateCommand() {
229
229
  process.exit(result.error.exitCode);
230
230
  }
231
231
  if (opts.crossCheck) {
232
- const { runCrossCheck: runCrossCheck2 } = await import("./validate-cross-check-VX2BAHQI.js");
232
+ const { runCrossCheck: runCrossCheck2 } = await import("./validate-cross-check-LITTM24O.js");
233
233
  const cwd = process.cwd();
234
234
  const specsDir = path.join(cwd, "docs", "specs");
235
235
  const plansDir = path.join(cwd, "docs", "plans");
@@ -586,7 +586,7 @@ function registerBenchCommand(perf) {
586
586
  perf.command("bench [glob]").description("Run benchmarks via vitest bench").action(async (glob, _opts, cmd) => {
587
587
  const globalOpts = cmd.optsWithGlobals();
588
588
  const cwd = process.cwd();
589
- const { BenchmarkRunner } = await import("./dist-LCR2IO7U.js");
589
+ const { BenchmarkRunner } = await import("./dist-LPGVPYOZ.js");
590
590
  const runner = new BenchmarkRunner();
591
591
  const benchFiles = runner.discover(cwd, glob);
592
592
  if (benchFiles.length === 0) {
@@ -654,7 +654,7 @@ function registerBaselinesCommands(perf) {
654
654
  baselines.command("update").description("Update baselines from latest benchmark run").action(async (_opts, cmd) => {
655
655
  const globalOpts = cmd.optsWithGlobals();
656
656
  const cwd = process.cwd();
657
- const { BenchmarkRunner } = await import("./dist-LCR2IO7U.js");
657
+ const { BenchmarkRunner } = await import("./dist-LPGVPYOZ.js");
658
658
  const runner = new BenchmarkRunner();
659
659
  const manager = new BaselineManager(cwd);
660
660
  logger.info("Running benchmarks to update baselines...");
@@ -687,7 +687,7 @@ function registerReportCommand(perf) {
687
687
  perf.command("report").description("Full performance report with metrics, trends, and hotspots").action(async (_opts, cmd) => {
688
688
  const globalOpts = cmd.optsWithGlobals();
689
689
  const cwd = process.cwd();
690
- const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./dist-LCR2IO7U.js");
690
+ const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./dist-LPGVPYOZ.js");
691
691
  const analyzer = new EntropyAnalyzer2({
692
692
  rootDir: path5.resolve(cwd),
693
693
  analyze: { complexity: true, coupling: true }
@@ -4767,7 +4767,7 @@ function createGenerateCommand3() {
4767
4767
  import { Command as Command46 } from "commander";
4768
4768
  import * as path38 from "path";
4769
4769
  async function runScan(projectPath) {
4770
- const { GraphStore, CodeIngestor, TopologicalLinker, KnowledgeIngestor, GitIngestor } = await import("./dist-IA6XYKNO.js");
4770
+ const { GraphStore, CodeIngestor, TopologicalLinker, KnowledgeIngestor, GitIngestor } = await import("./dist-K56VJ4UJ.js");
4771
4771
  const store = new GraphStore();
4772
4772
  const start = Date.now();
4773
4773
  await new CodeIngestor(store).ingest(projectPath);
@@ -4848,7 +4848,7 @@ async function runIngest(projectPath, source, opts) {
4848
4848
  SyncManager,
4849
4849
  JiraConnector,
4850
4850
  SlackConnector
4851
- } = await import("./dist-IA6XYKNO.js");
4851
+ } = await import("./dist-K56VJ4UJ.js");
4852
4852
  const graphDir = path39.join(projectPath, ".harness", "graph");
4853
4853
  const store = new GraphStore();
4854
4854
  await store.load(graphDir);
@@ -4941,7 +4941,7 @@ function createIngestCommand() {
4941
4941
  import { Command as Command48 } from "commander";
4942
4942
  import * as path40 from "path";
4943
4943
  async function runQuery(projectPath, rootNodeId, opts) {
4944
- const { GraphStore, ContextQL } = await import("./dist-IA6XYKNO.js");
4944
+ const { GraphStore, ContextQL } = await import("./dist-K56VJ4UJ.js");
4945
4945
  const store = new GraphStore();
4946
4946
  const graphDir = path40.join(projectPath, ".harness", "graph");
4947
4947
  const loaded = await store.load(graphDir);
@@ -4990,7 +4990,7 @@ import { Command as Command49 } from "commander";
4990
4990
  // src/commands/graph/status.ts
4991
4991
  import * as path41 from "path";
4992
4992
  async function runGraphStatus(projectPath) {
4993
- const { GraphStore } = await import("./dist-IA6XYKNO.js");
4993
+ const { GraphStore } = await import("./dist-K56VJ4UJ.js");
4994
4994
  const graphDir = path41.join(projectPath, ".harness", "graph");
4995
4995
  const store = new GraphStore();
4996
4996
  const loaded = await store.load(graphDir);
@@ -5030,7 +5030,7 @@ async function runGraphStatus(projectPath) {
5030
5030
  // src/commands/graph/export.ts
5031
5031
  import * as path42 from "path";
5032
5032
  async function runGraphExport(projectPath, format) {
5033
- const { GraphStore } = await import("./dist-IA6XYKNO.js");
5033
+ const { GraphStore } = await import("./dist-K56VJ4UJ.js");
5034
5034
  const graphDir = path42.join(projectPath, ".harness", "graph");
5035
5035
  const store = new GraphStore();
5036
5036
  const loaded = await store.load(graphDir);
@@ -5109,7 +5109,7 @@ function createGraphCommand() {
5109
5109
  import { Command as Command50 } from "commander";
5110
5110
  function createMcpCommand() {
5111
5111
  return new Command50("mcp").description("Start the MCP (Model Context Protocol) server on stdio").option("--tools <tools...>", "Only register the specified tools (used by Cursor integration)").action(async (opts) => {
5112
- const { startServer: startServer2 } = await import("./mcp-LWHVQRG7.js");
5112
+ const { startServer: startServer2 } = await import("./mcp-7RPKBGIR.js");
5113
5113
  await startServer2(opts.tools);
5114
5114
  });
5115
5115
  }
@@ -6608,7 +6608,7 @@ function createIntegrationsCommand() {
6608
6608
  // src/commands/usage.ts
6609
6609
  import { Command as Command67 } from "commander";
6610
6610
  async function loadAndPriceRecords(cwd, includeClaudeSessions = false) {
6611
- const { readCostRecords, loadPricingData, calculateCost, parseCCRecords } = await import("./dist-LCR2IO7U.js");
6611
+ const { readCostRecords, loadPricingData, calculateCost, parseCCRecords } = await import("./dist-LPGVPYOZ.js");
6612
6612
  const records = readCostRecords(cwd);
6613
6613
  if (includeClaudeSessions) {
6614
6614
  const ccRecords = parseCCRecords();
@@ -6652,7 +6652,7 @@ function registerDailyCommand(usage) {
6652
6652
  }
6653
6653
  return;
6654
6654
  }
6655
- const { aggregateByDay } = await import("./dist-LCR2IO7U.js");
6655
+ const { aggregateByDay } = await import("./dist-LPGVPYOZ.js");
6656
6656
  const dailyData = aggregateByDay(records);
6657
6657
  const limited = dailyData.slice(0, days);
6658
6658
  if (globalOpts.json) {
@@ -6688,7 +6688,7 @@ function registerSessionsCommand(usage) {
6688
6688
  }
6689
6689
  return;
6690
6690
  }
6691
- const { aggregateBySession } = await import("./dist-LCR2IO7U.js");
6691
+ const { aggregateBySession } = await import("./dist-LPGVPYOZ.js");
6692
6692
  const sessionData = aggregateBySession(records);
6693
6693
  const limited = sessionData.slice(0, limit);
6694
6694
  if (globalOpts.json) {
@@ -6717,7 +6717,7 @@ function registerSessionCommand(usage) {
6717
6717
  const globalOpts = cmd.optsWithGlobals();
6718
6718
  const cwd = process.cwd();
6719
6719
  const records = await loadAndPriceRecords(cwd, globalOpts.includeClaudeSessions);
6720
- const { aggregateBySession } = await import("./dist-LCR2IO7U.js");
6720
+ const { aggregateBySession } = await import("./dist-LPGVPYOZ.js");
6721
6721
  const sessionData = aggregateBySession(records);
6722
6722
  const match = sessionData.find((s) => s.sessionId === id);
6723
6723
  if (!match) {
@@ -6783,7 +6783,7 @@ function registerLatestCommand(usage) {
6783
6783
  }
6784
6784
  return;
6785
6785
  }
6786
- const { aggregateBySession } = await import("./dist-LCR2IO7U.js");
6786
+ const { aggregateBySession } = await import("./dist-LPGVPYOZ.js");
6787
6787
  const sessionData = aggregateBySession(records);
6788
6788
  const latest = sessionData[0];
6789
6789
  if (!latest) {
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-EBJQ6N4M.js";
4
4
  import {
5
5
  resolveConfig
6
- } from "./chunk-GRJ7A4WT.js";
6
+ } from "./chunk-AQN7GFKU.js";
7
7
  import {
8
8
  ExitCode
9
9
  } from "./chunk-3WGJMBKH.js";
@@ -10,10 +10,10 @@ import {
10
10
 
11
11
  // src/mcp/tools/entropy.ts
12
12
  async function loadEntropyGraphOptions(projectPath) {
13
- const { loadGraphStore } = await import("./graph-loader-FJN4H7Y4.js");
13
+ const { loadGraphStore } = await import("./graph-loader-GRXDUWXO.js");
14
14
  const store = await loadGraphStore(projectPath);
15
15
  if (!store) return void 0;
16
- const { GraphEntropyAdapter } = await import("./dist-IA6XYKNO.js");
16
+ const { GraphEntropyAdapter } = await import("./dist-K56VJ4UJ.js");
17
17
  const adapter = new GraphEntropyAdapter(store);
18
18
  const driftData = adapter.computeDriftData();
19
19
  const deadCodeData = adapter.computeDeadCodeData();
@@ -123,7 +123,7 @@ function buildSummaryResponse(report) {
123
123
  }
124
124
  async function handleDetectEntropy(input) {
125
125
  try {
126
- const { EntropyAnalyzer } = await import("./dist-LCR2IO7U.js");
126
+ const { EntropyAnalyzer } = await import("./dist-LPGVPYOZ.js");
127
127
  const typeFilter = input.type ?? "all";
128
128
  const analyzer = new EntropyAnalyzer({
129
129
  rootDir: sanitizePath(input.path),
@@ -142,7 +142,7 @@ async function handleDetectEntropy(input) {
142
142
  return resultToMcpResponse(result);
143
143
  }
144
144
  if (!result.ok) return resultToMcpResponse(result);
145
- const { createFixes, applyFixes, generateSuggestions } = await import("./dist-LCR2IO7U.js");
145
+ const { createFixes, applyFixes, generateSuggestions } = await import("./dist-LPGVPYOZ.js");
146
146
  const report = result.value;
147
147
  const deadCode = report.deadCode;
148
148
  const fixTypesConfig = input.fixTypes ? { fixTypes: input.fixTypes } : void 0;
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  generateCIWorkflow
3
3
  } from "./chunk-SD3SQOZ2.js";
4
- import "./chunk-U44JNY3Y.js";
4
+ import "./chunk-QBATHQXU.js";
5
5
  import "./chunk-ERS5EVUZ.js";
6
- import "./chunk-TEZI27SA.js";
6
+ import "./chunk-EUCASOD7.js";
7
7
  export {
8
8
  generateCIWorkflow
9
9
  };
@@ -43,7 +43,7 @@ import {
43
43
  project,
44
44
  queryTraceability,
45
45
  saveGraph
46
- } from "./chunk-TEZI27SA.js";
46
+ } from "./chunk-EUCASOD7.js";
47
47
  export {
48
48
  Assembler,
49
49
  CIConnector,
@@ -317,7 +317,7 @@ import {
317
317
  writeSessionSummary,
318
318
  writeTaint,
319
319
  xssRules
320
- } from "./chunk-U44JNY3Y.js";
320
+ } from "./chunk-QBATHQXU.js";
321
321
  import {
322
322
  Err,
323
323
  Ok,
@@ -326,7 +326,7 @@ import {
326
326
  isErr,
327
327
  isOk
328
328
  } from "./chunk-ERS5EVUZ.js";
329
- import "./chunk-TEZI27SA.js";
329
+ import "./chunk-EUCASOD7.js";
330
330
  export {
331
331
  AGENT_DESCRIPTORS,
332
332
  ARCHITECTURE_DESCRIPTOR,
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  checkDocsDefinition,
3
3
  handleCheckDocs
4
- } from "./chunk-5QTWFO24.js";
5
- import "./chunk-GRJ7A4WT.js";
4
+ } from "./chunk-HRUCT5YX.js";
5
+ import "./chunk-AQN7GFKU.js";
6
6
  import "./chunk-IDZNPTYD.js";
7
7
  import "./chunk-W6Y7ZW3Y.js";
8
8
  import "./chunk-3WGJMBKH.js";
9
- import "./chunk-U44JNY3Y.js";
9
+ import "./chunk-QBATHQXU.js";
10
10
  import "./chunk-ERS5EVUZ.js";
11
- import "./chunk-TEZI27SA.js";
11
+ import "./chunk-EUCASOD7.js";
12
12
  export {
13
13
  checkDocsDefinition,
14
14
  handleCheckDocs
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  TemplateEngine
3
3
  } from "./chunk-YLN34N65.js";
4
- import "./chunk-U44JNY3Y.js";
4
+ import "./chunk-QBATHQXU.js";
5
5
  import "./chunk-ERS5EVUZ.js";
6
- import "./chunk-TEZI27SA.js";
6
+ import "./chunk-EUCASOD7.js";
7
7
  export {
8
8
  TemplateEngine
9
9
  };
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  detectEntropyDefinition,
3
3
  handleDetectEntropy
4
- } from "./chunk-IK5GSLW6.js";
4
+ } from "./chunk-ZLTFDTK7.js";
5
5
  import "./chunk-IDZNPTYD.js";
6
6
  import "./chunk-W6Y7ZW3Y.js";
7
- import "./chunk-U44JNY3Y.js";
7
+ import "./chunk-QBATHQXU.js";
8
8
  import "./chunk-ERS5EVUZ.js";
9
- import "./chunk-TEZI27SA.js";
9
+ import "./chunk-EUCASOD7.js";
10
10
  export {
11
11
  detectEntropyDefinition,
12
12
  handleDetectEntropy
@@ -5,7 +5,7 @@ import {
5
5
  handleCreateSelfReview,
6
6
  handleRequestPeerReview,
7
7
  requestPeerReviewDefinition
8
- } from "./chunk-ZEIEUCZL.js";
8
+ } from "./chunk-LAKMOIU6.js";
9
9
  import "./chunk-IDZNPTYD.js";
10
10
  import "./chunk-W6Y7ZW3Y.js";
11
11
  export {
@@ -7,9 +7,9 @@ import "./chunk-KET4QQZB.js";
7
7
  import "./chunk-CJDVBBPB.js";
8
8
  import "./chunk-N5G5QMS3.js";
9
9
  import "./chunk-3WGJMBKH.js";
10
- import "./chunk-U44JNY3Y.js";
10
+ import "./chunk-QBATHQXU.js";
11
11
  import "./chunk-ERS5EVUZ.js";
12
- import "./chunk-TEZI27SA.js";
12
+ import "./chunk-EUCASOD7.js";
13
13
  export {
14
14
  createGenerateAgentDefinitionsCommand,
15
15
  generateAgentDefinitions
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  clearGraphStoreCache,
3
3
  loadGraphStore
4
- } from "./chunk-ASS5TD2Y.js";
4
+ } from "./chunk-7V5Y2L67.js";
5
5
  export {
6
6
  clearGraphStoreCache,
7
7
  loadGraphStore
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  runSnapshotCapture,
14
14
  runUninstall,
15
15
  runUninstallConstraints
16
- } from "./chunk-SOTTK27D.js";
16
+ } from "./chunk-UJHNGRS6.js";
17
17
  import {
18
18
  generateAgentsMd
19
19
  } from "./chunk-OD3S2NHN.js";
@@ -24,7 +24,7 @@ import {
24
24
  OutputFormatter,
25
25
  OutputMode,
26
26
  runCheckPhaseGate
27
- } from "./chunk-PUOMFNRO.js";
27
+ } from "./chunk-WKLLNUAT.js";
28
28
  import {
29
29
  AGENT_DESCRIPTIONS,
30
30
  DEFAULT_TOOLS,
@@ -67,24 +67,24 @@ import {
67
67
  generateSlashCommands,
68
68
  getToolDefinitions,
69
69
  startServer
70
- } from "./chunk-DJEBBENF.js";
71
- import "./chunk-IK5GSLW6.js";
72
- import "./chunk-FSLFBLYW.js";
73
- import "./chunk-ZEIEUCZL.js";
74
- import "./chunk-DXYOAQQC.js";
75
- import "./chunk-B4WHXHF7.js";
76
- import "./chunk-5FBWWMY2.js";
70
+ } from "./chunk-L57RL7MC.js";
71
+ import "./chunk-ZLTFDTK7.js";
72
+ import "./chunk-FNVAW5NG.js";
73
+ import "./chunk-LAKMOIU6.js";
74
+ import "./chunk-KIR5PQX5.js";
75
+ import "./chunk-7DMF3VT5.js";
76
+ import "./chunk-CZEPCYVX.js";
77
77
  import "./chunk-CJDVBBPB.js";
78
- import "./chunk-J7W4LTRK.js";
79
- import "./chunk-ASS5TD2Y.js";
80
- import "./chunk-W6MPLFXU.js";
78
+ import "./chunk-7XZSHTYZ.js";
79
+ import "./chunk-7V5Y2L67.js";
80
+ import "./chunk-RQ3AKUJB.js";
81
81
  import "./chunk-H7Y5CKTM.js";
82
- import "./chunk-5QTWFO24.js";
82
+ import "./chunk-HRUCT5YX.js";
83
83
  import {
84
84
  findConfigFile,
85
85
  loadConfig,
86
86
  resolveConfig
87
- } from "./chunk-GRJ7A4WT.js";
87
+ } from "./chunk-AQN7GFKU.js";
88
88
  import "./chunk-IDZNPTYD.js";
89
89
  import "./chunk-W6Y7ZW3Y.js";
90
90
  import "./chunk-N5G5QMS3.js";
@@ -98,9 +98,9 @@ import "./chunk-BM3PWGXQ.js";
98
98
  import {
99
99
  runCrossCheck
100
100
  } from "./chunk-GZKSBLQL.js";
101
- import "./chunk-U44JNY3Y.js";
101
+ import "./chunk-QBATHQXU.js";
102
102
  import "./chunk-ERS5EVUZ.js";
103
- import "./chunk-TEZI27SA.js";
103
+ import "./chunk-EUCASOD7.js";
104
104
  export {
105
105
  AGENT_DESCRIPTIONS,
106
106
  ALLOWED_PERSONA_COMMANDS,
@@ -2,9 +2,9 @@ import {
2
2
  listPersonas,
3
3
  loadPersona
4
4
  } from "./chunk-YQ6KC6TE.js";
5
- import "./chunk-U44JNY3Y.js";
5
+ import "./chunk-QBATHQXU.js";
6
6
  import "./chunk-ERS5EVUZ.js";
7
- import "./chunk-TEZI27SA.js";
7
+ import "./chunk-EUCASOD7.js";
8
8
  export {
9
9
  listPersonas,
10
10
  loadPersona