@harness-engineering/cli 2.2.0 → 2.3.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 (51) hide show
  1. package/dist/agents/skills/claude-code/harness-roadmap-pilot/SKILL.md +13 -7
  2. package/dist/agents/skills/codex/harness-roadmap-pilot/SKILL.md +13 -7
  3. package/dist/agents/skills/cursor/harness-roadmap-pilot/SKILL.md +13 -7
  4. package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/SKILL.md +13 -7
  5. package/dist/{agents-md-L4X4MOWT.js → agents-md-N7YBQPE3.js} +2 -2
  6. package/dist/{architecture-WJRIYQ45.js → architecture-PP7WERSV.js} +3 -3
  7. package/dist/{assess-project-PHC2HO3V.js → assess-project-WXFCJQTX.js} +1 -1
  8. package/dist/bin/harness-mcp.js +13 -13
  9. package/dist/bin/harness.js +22 -22
  10. package/dist/{check-phase-gate-646KY67H.js → check-phase-gate-R3KQFBAH.js} +3 -3
  11. package/dist/{chunk-GOOTYTTV.js → chunk-35FI23SO.js} +855 -428
  12. package/dist/{chunk-L2IDE7WS.js → chunk-3LPOTTPX.js} +255 -89
  13. package/dist/{chunk-K4WRQTEF.js → chunk-4DWOMGUM.js} +1661 -434
  14. package/dist/{chunk-W4AFGFFB.js → chunk-4NFV5UZO.js} +2 -2
  15. package/dist/{chunk-224XKVLP.js → chunk-5KTTKXQN.js} +1 -1
  16. package/dist/{chunk-KV7A5OZT.js → chunk-5PPV4WYY.js} +3 -3
  17. package/dist/{chunk-CPYL6LJR.js → chunk-6CHNY3NJ.js} +1 -1
  18. package/dist/{chunk-VKDBM3RX.js → chunk-7PGYJO3L.js} +3 -3
  19. package/dist/{chunk-E7W3YOXL.js → chunk-D2LZUJLP.js} +2 -2
  20. package/dist/{chunk-4HKVZO7R.js → chunk-DLBMYLYR.js} +1 -1
  21. package/dist/{chunk-YWD6WXXM.js → chunk-EJPR5VCT.js} +6 -6
  22. package/dist/{chunk-2ZURBWEV.js → chunk-GTXUUGFG.js} +3 -3
  23. package/dist/{chunk-OJMO4JBQ.js → chunk-GUIX2TMZ.js} +1 -1
  24. package/dist/{chunk-TNZYQTEE.js → chunk-KUVPSUG4.js} +1 -1
  25. package/dist/{chunk-YLTRFZAT.js → chunk-KWD6FF7M.js} +6 -6
  26. package/dist/{chunk-VJQLUS5I.js → chunk-L3CEN42B.js} +1 -1
  27. package/dist/{chunk-YLOAQZLA.js → chunk-LM4F5KBK.js} +2 -2
  28. package/dist/{chunk-JPWICLXQ.js → chunk-MKPRB4PL.js} +1 -1
  29. package/dist/{chunk-2QPHCR22.js → chunk-MT2MMBUA.js} +5 -5
  30. package/dist/{chunk-QTUPHTTK.js → chunk-NP2ZI6E3.js} +1 -1
  31. package/dist/{chunk-LO7ZLV7S.js → chunk-PW3U4YJV.js} +4 -2
  32. package/dist/{chunk-36X7TRUI.js → chunk-YEBUFRTT.js} +2 -2
  33. package/dist/{ci-workflow-TOS5X527.js → ci-workflow-GFCXFJ4G.js} +2 -2
  34. package/dist/{dist-6RT2AVYU.js → dist-I4LWG3IN.js} +23 -1
  35. package/dist/{docs-HOJMQYDZ.js → docs-UXKDKPJF.js} +3 -3
  36. package/dist/{engine-D6UYH6DB.js → engine-A63FRDLF.js} +2 -2
  37. package/dist/{entropy-LZ4IDGZR.js → entropy-IFIP4ZP4.js} +2 -2
  38. package/dist/{feedback-WV7EQVK7.js → feedback-W36DSJQA.js} +1 -1
  39. package/dist/{generate-agent-definitions-GFNXJCBY.js → generate-agent-definitions-F4YMKQLP.js} +3 -3
  40. package/dist/hooks/block-no-verify.js +19 -1
  41. package/dist/index.d.ts +15 -9
  42. package/dist/index.js +22 -22
  43. package/dist/{loader-Z23JTXIZ.js → loader-4UAOGUSS.js} +2 -2
  44. package/dist/{mcp-JDJGELGD.js → mcp-YW7PLXVQ.js} +13 -13
  45. package/dist/{performance-7ATLHTQU.js → performance-AZ5UYPOQ.js} +3 -3
  46. package/dist/{review-pipeline-COBGGXHJ.js → review-pipeline-OLQVGBWJ.js} +2 -2
  47. package/dist/{runtime-KCBNQUXK.js → runtime-GG3U5HH5.js} +2 -2
  48. package/dist/{security-MAPRIFQT.js → security-MYTRFSR7.js} +1 -1
  49. package/dist/{validate-74XTQR7Q.js → validate-QI4V4JY6.js} +3 -3
  50. package/dist/{validate-cross-check-MI5MZ7MB.js → validate-cross-check-XRSSAXJP.js} +2 -2
  51. package/package.json +4 -4
@@ -27,7 +27,7 @@ var runSecurityScanDefinition = {
27
27
  };
28
28
  async function handleRunSecurityScan(input) {
29
29
  try {
30
- const core = await import("./dist-6RT2AVYU.js");
30
+ const core = await import("./dist-I4LWG3IN.js");
31
31
  const projectRoot = sanitizePath(input.path);
32
32
  let configData = {};
33
33
  try {
@@ -114,7 +114,7 @@ var getSecurityTrendsDefinition = {
114
114
  };
115
115
  async function handleGetSecurityTrends(input) {
116
116
  try {
117
- const core = await import("./dist-6RT2AVYU.js");
117
+ const core = await import("./dist-I4LWG3IN.js");
118
118
  const projectRoot = sanitizePath(input.path);
119
119
  const manager = new core.SecurityTimelineManager(projectRoot);
120
120
  const trendOptions = {};
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-K4WRQTEF.js";
3
+ } from "./chunk-4DWOMGUM.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-W6Y7ZW3Y.js";
7
7
  import {
8
8
  init_dist
9
- } from "./chunk-K4WRQTEF.js";
9
+ } from "./chunk-4DWOMGUM.js";
10
10
  import {
11
11
  Ok
12
12
  } from "./chunk-RL4VMEXL.js";
@@ -127,7 +127,7 @@ function buildSummaryResponse(report) {
127
127
  }
128
128
  async function handleDetectEntropy(input) {
129
129
  try {
130
- const { EntropyAnalyzer } = await import("./dist-6RT2AVYU.js");
130
+ const { EntropyAnalyzer } = await import("./dist-I4LWG3IN.js");
131
131
  const typeFilter = input.type ?? "all";
132
132
  const analyzer = new EntropyAnalyzer({
133
133
  rootDir: sanitizePath(input.path),
@@ -146,7 +146,7 @@ async function handleDetectEntropy(input) {
146
146
  return resultToMcpResponse(result);
147
147
  }
148
148
  if (!result.ok) return resultToMcpResponse(result);
149
- const { createFixes, applyFixes, generateSuggestions } = await import("./dist-6RT2AVYU.js");
149
+ const { createFixes, applyFixes, generateSuggestions } = await import("./dist-I4LWG3IN.js");
150
150
  const report = result.value;
151
151
  const deadCode = report.deadCode;
152
152
  const fixTypesConfig = input.fixTypes ? { fixTypes: input.fixTypes } : void 0;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-K4WRQTEF.js";
3
+ } from "./chunk-4DWOMGUM.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveProjectConfig
3
- } from "./chunk-CPYL6LJR.js";
3
+ } from "./chunk-6CHNY3NJ.js";
4
4
  import {
5
5
  sanitizePath
6
6
  } from "./chunk-W6Y7ZW3Y.js";
@@ -49,7 +49,7 @@ async function handleValidateProject(input) {
49
49
  checks.config = "pass";
50
50
  const config = configResult.value;
51
51
  try {
52
- const core = await import("./dist-6RT2AVYU.js");
52
+ const core = await import("./dist-I4LWG3IN.js");
53
53
  if (typeof core.validateFileStructure === "function" && Array.isArray(config.conventions)) {
54
54
  const conventions = config.conventions;
55
55
  const structureResult = await core.validateFileStructure(projectPath, conventions);
@@ -68,7 +68,7 @@ async function handleValidateProject(input) {
68
68
  } catch {
69
69
  }
70
70
  try {
71
- const core = await import("./dist-6RT2AVYU.js");
71
+ const core = await import("./dist-I4LWG3IN.js");
72
72
  if (typeof core.validateAgentsMap === "function") {
73
73
  const agentsMapPath = path.join(projectPath, "AGENTS.md");
74
74
  const agentsResult = await core.validateAgentsMap(agentsMapPath);
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  resolveConfig
3
- } from "./chunk-LO7ZLV7S.js";
3
+ } from "./chunk-PW3U4YJV.js";
4
4
  import {
5
5
  init_dist
6
- } from "./chunk-K4WRQTEF.js";
6
+ } from "./chunk-4DWOMGUM.js";
7
7
  import {
8
8
  Ok
9
9
  } from "./chunk-RL4VMEXL.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-K4WRQTEF.js";
3
+ } from "./chunk-4DWOMGUM.js";
4
4
  import {
5
5
  Err,
6
6
  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-74XTQR7Q.js");
53
+ const { handleValidateProject } = await import("./validate-QI4V4JY6.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-WJRIYQ45.js");
78
+ const { handleCheckDependencies } = await import("./architecture-PP7WERSV.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-HOJMQYDZ.js");
105
+ const { handleCheckDocs } = await import("./docs-UXKDKPJF.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-LZ4IDGZR.js");
132
+ const { handleDetectEntropy } = await import("./entropy-IFIP4ZP4.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-MAPRIFQT.js");
159
+ const { handleRunSecurityScan } = await import("./security-MYTRFSR7.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-7ATLHTQU.js");
191
+ const { handleCheckPerformance } = await import("./performance-AZ5UYPOQ.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";
@@ -33,7 +33,7 @@ var createSelfReviewDefinition = {
33
33
  };
34
34
  async function handleCreateSelfReview(input) {
35
35
  try {
36
- const { parseDiff, createSelfReview } = await import("./dist-6RT2AVYU.js");
36
+ const { parseDiff, createSelfReview } = await import("./dist-I4LWG3IN.js");
37
37
  const parseResult = parseDiff(input.diff);
38
38
  if (!parseResult.ok) {
39
39
  return resultToMcpResponse(parseResult);
@@ -119,7 +119,7 @@ var analyzeDiffDefinition = {
119
119
  };
120
120
  async function handleAnalyzeDiff(input) {
121
121
  try {
122
- const { parseDiff, analyzeDiff } = await import("./dist-6RT2AVYU.js");
122
+ const { parseDiff, analyzeDiff } = await import("./dist-I4LWG3IN.js");
123
123
  const parseResult = parseDiff(input.diff);
124
124
  if (!parseResult.ok) {
125
125
  return resultToMcpResponse(parseResult);
@@ -195,7 +195,7 @@ var requestPeerReviewDefinition = {
195
195
  };
196
196
  async function handleRequestPeerReview(input) {
197
197
  try {
198
- const { parseDiff, requestPeerReview } = await import("./dist-6RT2AVYU.js");
198
+ const { parseDiff, requestPeerReview } = await import("./dist-I4LWG3IN.js");
199
199
  const parseResult = parseDiff(input.diff);
200
200
  if (!parseResult.ok) {
201
201
  return resultToMcpResponse(parseResult);
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  listPersonas,
6
6
  loadPersona
7
- } from "./chunk-VJQLUS5I.js";
7
+ } from "./chunk-L3CEN42B.js";
8
8
  import {
9
9
  GENERATED_HEADER_AGENT,
10
10
  VALID_PLATFORMS,
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-KET4QQZB.js";
4
4
  import {
5
5
  init_dist
6
- } from "./chunk-K4WRQTEF.js";
6
+ } from "./chunk-4DWOMGUM.js";
7
7
  import {
8
8
  Err,
9
9
  Ok
@@ -7,10 +7,10 @@ import {
7
7
  import {
8
8
  findConfigFile,
9
9
  loadConfig
10
- } from "./chunk-LO7ZLV7S.js";
10
+ } from "./chunk-PW3U4YJV.js";
11
11
  import {
12
12
  init_dist
13
- } from "./chunk-K4WRQTEF.js";
13
+ } from "./chunk-4DWOMGUM.js";
14
14
  import {
15
15
  Ok
16
16
  } from "./chunk-RL4VMEXL.js";
@@ -35,7 +35,7 @@ var checkPerformanceDefinition = {
35
35
  };
36
36
  async function handleCheckPerformance(input) {
37
37
  try {
38
- const { EntropyAnalyzer } = await import("./dist-6RT2AVYU.js");
38
+ const { EntropyAnalyzer } = await import("./dist-I4LWG3IN.js");
39
39
  const typeFilter = input.type ?? "all";
40
40
  const projectPath = sanitizePath(input.path);
41
41
  let entryPoints;
@@ -98,7 +98,7 @@ var getPerfBaselinesDefinition = {
98
98
  };
99
99
  async function handleGetPerfBaselines(input) {
100
100
  try {
101
- const { BaselineManager } = await import("./dist-6RT2AVYU.js");
101
+ const { BaselineManager } = await import("./dist-I4LWG3IN.js");
102
102
  const manager = new BaselineManager(sanitizePath(input.path));
103
103
  const baselines = manager.load();
104
104
  return resultToMcpResponse(
@@ -146,7 +146,7 @@ var updatePerfBaselinesDefinition = {
146
146
  };
147
147
  async function handleUpdatePerfBaselines(input) {
148
148
  try {
149
- const { BaselineManager } = await import("./dist-6RT2AVYU.js");
149
+ const { BaselineManager } = await import("./dist-I4LWG3IN.js");
150
150
  const manager = new BaselineManager(sanitizePath(input.path));
151
151
  manager.save(input.results, input.commitHash);
152
152
  const updated = manager.load();
@@ -176,7 +176,7 @@ var getCriticalPathsDefinition = {
176
176
  };
177
177
  async function handleGetCriticalPaths(input) {
178
178
  try {
179
- const { CriticalPathResolver } = await import("./dist-6RT2AVYU.js");
179
+ const { CriticalPathResolver } = await import("./dist-I4LWG3IN.js");
180
180
  const resolver = new CriticalPathResolver(sanitizePath(input.path));
181
181
  const result = await resolver.resolve();
182
182
  return resultToMcpResponse(Ok(result));
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-K4WRQTEF.js";
3
+ } from "./chunk-4DWOMGUM.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveProjectConfig
3
- } from "./chunk-CPYL6LJR.js";
3
+ } from "./chunk-6CHNY3NJ.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-6RT2AVYU.js");
41
+ const { validateDependencies, TypeScriptParser } = await import("./dist-I4LWG3IN.js");
42
42
  const config = configResult.value;
43
43
  const rawLayers = Array.isArray(config.layers) ? config.layers : [];
44
44
  const layers = rawLayers.map((l) => ({
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-K4WRQTEF.js";
3
+ } from "./chunk-4DWOMGUM.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
@@ -7,10 +7,10 @@ import {
7
7
  import {
8
8
  findConfigFile,
9
9
  loadConfig
10
- } from "./chunk-LO7ZLV7S.js";
10
+ } from "./chunk-PW3U4YJV.js";
11
11
  import {
12
12
  init_dist
13
- } from "./chunk-K4WRQTEF.js";
13
+ } from "./chunk-4DWOMGUM.js";
14
14
  import {
15
15
  Ok
16
16
  } from "./chunk-RL4VMEXL.js";
@@ -50,12 +50,12 @@ async function handleCheckDocs(input) {
50
50
  const projectPath = sanitizePath(input.path);
51
51
  const scope = input.scope ?? "coverage";
52
52
  if (scope === "integrity") {
53
- const { validateKnowledgeMap } = await import("./dist-6RT2AVYU.js");
53
+ const { validateKnowledgeMap } = await import("./dist-I4LWG3IN.js");
54
54
  const result2 = await validateKnowledgeMap(projectPath);
55
55
  return resultToMcpResponse(result2);
56
56
  }
57
57
  if (scope === "all") {
58
- const { checkDocCoverage: checkDocCoverage2, validateKnowledgeMap } = await import("./dist-6RT2AVYU.js");
58
+ const { checkDocCoverage: checkDocCoverage2, validateKnowledgeMap } = await import("./dist-I4LWG3IN.js");
59
59
  const domain2 = input.domain ?? "src";
60
60
  const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-5MKHAJJF.js");
61
61
  const store2 = await loadGraphStore2(projectPath);
@@ -94,7 +94,7 @@ async function handleCheckDocs(input) {
94
94
  }
95
95
  return resultToMcpResponse(Ok({ coverage, integrity }));
96
96
  }
97
- const { checkDocCoverage } = await import("./dist-6RT2AVYU.js");
97
+ const { checkDocCoverage } = await import("./dist-I4LWG3IN.js");
98
98
  const domain = input.domain ?? "src";
99
99
  const { loadGraphStore } = await import("./graph-loader-5MKHAJJF.js");
100
100
  const store = await loadGraphStore(projectPath);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-K4WRQTEF.js";
3
+ } from "./chunk-4DWOMGUM.js";
4
4
  import {
5
5
  Ok
6
6
  } from "./chunk-RL4VMEXL.js";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  ArchConfigSchema,
6
6
  init_dist
7
- } from "./chunk-K4WRQTEF.js";
7
+ } from "./chunk-4DWOMGUM.js";
8
8
  import {
9
9
  Err,
10
10
  Ok
@@ -188,7 +188,7 @@ var IntegrationsConfigSchema = z.object({
188
188
  dismissed: z.array(z.string()).default([])
189
189
  });
190
190
  var TrackerConfigSchema = z.object({
191
- /** Tracker kind — currently only 'github' is supported */
191
+ /** Tracker kind — currently only 'github' is supported for `roadmap.tracker`. */
192
192
  kind: z.literal("github"),
193
193
  /** Repository in "owner/repo" format */
194
194
  repo: z.string().optional(),
@@ -203,6 +203,8 @@ var TrackerConfigSchema = z.object({
203
203
  reverseStatusMap: z.record(z.string(), z.string()).optional()
204
204
  });
205
205
  var RoadmapConfigSchema = z.object({
206
+ /** Roadmap storage mode. Defaults to `"file-backed"` (today's behavior). */
207
+ mode: z.enum(["file-backed", "file-less"]).default("file-backed"),
206
208
  /** External tracker sync settings */
207
209
  tracker: TrackerConfigSchema.optional()
208
210
  });
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  init_dist,
6
6
  paginate
7
- } from "./chunk-K4WRQTEF.js";
7
+ } from "./chunk-4DWOMGUM.js";
8
8
 
9
9
  // src/mcp/tools/review-pipeline.ts
10
10
  init_dist();
@@ -79,7 +79,7 @@ var runCodeReviewDefinition = {
79
79
  };
80
80
  async function handleRunCodeReview(input) {
81
81
  try {
82
- const { parseDiff, runReviewPipeline } = await import("./dist-6RT2AVYU.js");
82
+ const { parseDiff, runReviewPipeline } = await import("./dist-I4LWG3IN.js");
83
83
  const parseResult = parseDiff(input.diff);
84
84
  if (!parseResult.ok) {
85
85
  return {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateCIWorkflow
3
- } from "./chunk-JPWICLXQ.js";
4
- import "./chunk-K4WRQTEF.js";
3
+ } from "./chunk-MKPRB4PL.js";
4
+ import "./chunk-4DWOMGUM.js";
5
5
  import "./chunk-RL4VMEXL.js";
6
6
  import "./chunk-BMM3GXV6.js";
7
7
  import "./chunk-KFQGP6VL.js";
@@ -34,6 +34,7 @@ import {
34
34
  CompoundLockHeldError,
35
35
  ConfidenceTierSchema,
36
36
  ConfirmationSchema,
37
+ ConflictError,
37
38
  ConsoleSink,
38
39
  ConstraintRuleSchema,
39
40
  ContributingFeatureSchema,
@@ -53,6 +54,7 @@ import {
53
54
  DirectionSchema,
54
55
  DirectionSchema2,
55
56
  EMPTY_SUPPLY_CHAIN,
57
+ ETagStore,
56
58
  EVIDENCE_SATURATION,
57
59
  EXTENSION_MAP,
58
60
  EmergenceConfidenceSchema,
@@ -219,6 +221,7 @@ import {
219
221
  createRegionMap,
220
222
  createSelfReview,
221
223
  createStream,
224
+ createTrackerClient,
222
225
  crossReferenceUndocumentedFixes,
223
226
  cryptoRules,
224
227
  deduplicateCleanupFindings,
@@ -279,6 +282,7 @@ import {
279
282
  getParser,
280
283
  getPhaseCategories,
281
284
  getPulseAdapter,
285
+ getRoadmapMode,
282
286
  getStreamForBranch,
283
287
  getTaintFilePath,
284
288
  getTrustLevel,
@@ -304,18 +308,22 @@ import {
304
308
  loadHandoff,
305
309
  loadIndexEntries,
306
310
  loadPricingData,
311
+ loadProjectRoadmapMode,
307
312
  loadRelevantLearnings,
308
313
  loadSessionSummary,
309
314
  loadState,
310
315
  loadStreamIndex,
316
+ loadTrackerClientConfigFromProject,
311
317
  loadTrackerSyncConfig,
312
318
  logAgentAction,
319
+ makeTrackerConflictBody,
313
320
  mapInjectionFindings,
314
321
  mapSecurityFindings,
315
322
  mapSecuritySeverity,
316
323
  markProtectedFindings,
317
324
  mcpRules,
318
325
  migrateToStreams,
326
+ migrate_exports,
319
327
  networkRules,
320
328
  nodeRules,
321
329
  normalizeLearningContent,
@@ -386,6 +394,8 @@ import {
386
394
  scanForInjection,
387
395
  scopeContext,
388
396
  scoreRoadmapCandidates,
397
+ scoreRoadmapCandidatesFileLess,
398
+ scoreRoadmapCandidatesForMode,
389
399
  searchSymbols,
390
400
  secretRules,
391
401
  securityFindingId,
@@ -423,6 +433,7 @@ import {
423
433
  validateKnowledgeMap,
424
434
  validatePatternConfig,
425
435
  validatePulseConfig,
436
+ validateRoadmapMode,
426
437
  validateSolutionsDir,
427
438
  violationId,
428
439
  weeksUntilThreshold,
@@ -433,7 +444,7 @@ import {
433
444
  writeSessionSummary,
434
445
  writeTaint,
435
446
  xssRules
436
- } from "./chunk-K4WRQTEF.js";
447
+ } from "./chunk-4DWOMGUM.js";
437
448
  import {
438
449
  DEFAULT_SKILL_CONTEXT_BUDGET,
439
450
  Err,
@@ -482,6 +493,7 @@ export {
482
493
  CompoundLockHeldError,
483
494
  ConfidenceTierSchema,
484
495
  ConfirmationSchema,
496
+ ConflictError,
485
497
  ConsoleSink,
486
498
  ConstraintRuleSchema,
487
499
  ContributingFeatureSchema,
@@ -501,6 +513,7 @@ export {
501
513
  DepDepthCollector,
502
514
  DirectionSchema,
503
515
  EMPTY_SUPPLY_CHAIN,
516
+ ETagStore,
504
517
  EVIDENCE_SATURATION,
505
518
  EXTENSION_MAP,
506
519
  EmergenceConfidenceSchema,
@@ -672,6 +685,7 @@ export {
672
685
  createRegionMap,
673
686
  createSelfReview,
674
687
  createStream,
688
+ createTrackerClient,
675
689
  crossReferenceUndocumentedFixes,
676
690
  cryptoRules,
677
691
  deduplicateCleanupFindings,
@@ -732,6 +746,7 @@ export {
732
746
  getParser,
733
747
  getPhaseCategories,
734
748
  getPulseAdapter,
749
+ getRoadmapMode,
735
750
  getStreamForBranch,
736
751
  getTaintFilePath,
737
752
  getTrustLevel,
@@ -758,17 +773,21 @@ export {
758
773
  loadHandoff,
759
774
  loadIndexEntries,
760
775
  loadPricingData,
776
+ loadProjectRoadmapMode,
761
777
  loadRelevantLearnings,
762
778
  loadSessionSummary,
763
779
  loadState,
764
780
  loadStreamIndex,
781
+ loadTrackerClientConfigFromProject,
765
782
  loadTrackerSyncConfig,
766
783
  logAgentAction,
784
+ makeTrackerConflictBody,
767
785
  mapInjectionFindings,
768
786
  mapSecurityFindings,
769
787
  mapSecuritySeverity,
770
788
  markProtectedFindings,
771
789
  mcpRules,
790
+ migrate_exports as migrate,
772
791
  migrateToStreams,
773
792
  networkRules,
774
793
  nodeRules,
@@ -840,6 +859,8 @@ export {
840
859
  scanForInjection,
841
860
  scopeContext,
842
861
  scoreRoadmapCandidates,
862
+ scoreRoadmapCandidatesFileLess,
863
+ scoreRoadmapCandidatesForMode,
843
864
  searchSymbols,
844
865
  secretRules,
845
866
  securityFindingId,
@@ -877,6 +898,7 @@ export {
877
898
  validateKnowledgeMap,
878
899
  validatePatternConfig,
879
900
  validatePulseConfig,
901
+ validateRoadmapMode,
880
902
  validateSolutionsDir,
881
903
  violationId,
882
904
  weeksUntilThreshold,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  checkDocsDefinition,
3
3
  handleCheckDocs
4
- } from "./chunk-2QPHCR22.js";
4
+ } from "./chunk-MT2MMBUA.js";
5
5
  import "./chunk-EPUKTTJZ.js";
6
6
  import "./chunk-W6Y7ZW3Y.js";
7
- import "./chunk-LO7ZLV7S.js";
7
+ import "./chunk-PW3U4YJV.js";
8
8
  import "./chunk-ZCZD7FHU.js";
9
- import "./chunk-K4WRQTEF.js";
9
+ import "./chunk-4DWOMGUM.js";
10
10
  import "./chunk-RL4VMEXL.js";
11
11
  import "./chunk-BMM3GXV6.js";
12
12
  import "./chunk-3WGJMBKH.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  TemplateEngine
3
- } from "./chunk-224XKVLP.js";
4
- import "./chunk-K4WRQTEF.js";
3
+ } from "./chunk-5KTTKXQN.js";
4
+ import "./chunk-4DWOMGUM.js";
5
5
  import "./chunk-RL4VMEXL.js";
6
6
  import "./chunk-BMM3GXV6.js";
7
7
  import "./chunk-KFQGP6VL.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  detectEntropyDefinition,
3
3
  handleDetectEntropy
4
- } from "./chunk-KV7A5OZT.js";
4
+ } from "./chunk-5PPV4WYY.js";
5
5
  import "./chunk-EPUKTTJZ.js";
6
6
  import "./chunk-W6Y7ZW3Y.js";
7
- import "./chunk-K4WRQTEF.js";
7
+ import "./chunk-4DWOMGUM.js";
8
8
  import "./chunk-RL4VMEXL.js";
9
9
  import "./chunk-BMM3GXV6.js";
10
10
  import "./chunk-KFQGP6VL.js";
@@ -5,7 +5,7 @@ import {
5
5
  handleCreateSelfReview,
6
6
  handleRequestPeerReview,
7
7
  requestPeerReviewDefinition
8
- } from "./chunk-2ZURBWEV.js";
8
+ } from "./chunk-GTXUUGFG.js";
9
9
  import "./chunk-EPUKTTJZ.js";
10
10
  import "./chunk-W6Y7ZW3Y.js";
11
11
  import "./chunk-KFQGP6VL.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createGenerateAgentDefinitionsCommand,
3
3
  generateAgentDefinitions
4
- } from "./chunk-OJMO4JBQ.js";
4
+ } from "./chunk-GUIX2TMZ.js";
5
5
  import "./chunk-KET4QQZB.js";
6
- import "./chunk-VJQLUS5I.js";
6
+ import "./chunk-L3CEN42B.js";
7
7
  import "./chunk-3ISINLYT.js";
8
8
  import "./chunk-6B6UN6SG.js";
9
- import "./chunk-K4WRQTEF.js";
9
+ import "./chunk-4DWOMGUM.js";
10
10
  import "./chunk-RL4VMEXL.js";
11
11
  import "./chunk-BMM3GXV6.js";
12
12
  import "./chunk-3WGJMBKH.js";
@@ -33,7 +33,7 @@ function main() {
33
33
  process.exit(0);
34
34
  }
35
35
 
36
- if (/--no-verify/.test(command) || /\bgit\b.*\bcommit\b.*\s-n\b/.test(command)) {
36
+ if (containsHookBypass(command)) {
37
37
  process.stderr.write(
38
38
  'BLOCKED: --no-verify flag detected. Hooks must not be bypassed.\n'
39
39
  );
@@ -47,4 +47,22 @@ function main() {
47
47
  }
48
48
  }
49
49
 
50
+ // Strip heredoc bodies, quoted strings, and shell comments so flag detection
51
+ // runs against argv tokens only — not text the user is just talking about.
52
+ function stripStringsAndComments(cmd) {
53
+ let s = cmd;
54
+ s = s.replace(/<<-?\s*['"]?(\w+)['"]?[\s\S]*?\n\s*\1\b/g, ' ');
55
+ s = s.replace(/'[^']*'/g, ' ');
56
+ s = s.replace(/"(?:[^"\\]|\\.)*"/g, ' ');
57
+ s = s.replace(/(^|[\s;&|`(])#[^\n]*/g, '$1');
58
+ return s;
59
+ }
60
+
61
+ function containsHookBypass(command) {
62
+ const stripped = stripStringsAndComments(command);
63
+ if (/(?:^|\s)--no-verify(?=\s|$)/.test(stripped)) return true;
64
+ if (/\bgit\s+(?:[\w-]+\s+)*?commit\b[^\n]*?(?:^|\s)-n(?=\s|$)/.test(stripped)) return true;
65
+ return false;
66
+ }
67
+
50
68
  main();