@harness-engineering/cli 4.3.3 → 6.0.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 (81) hide show
  1. package/dist/agents/skills/claude-code/harness-brainstorming/SKILL.md +3 -1
  2. package/dist/agents/skills/claude-code/harness-roadmap-pilot/SKILL.md +5 -0
  3. package/dist/agents/skills/claude-code/harness-rollback/SKILL.md +124 -0
  4. package/dist/agents/skills/claude-code/harness-rollback/skill.yaml +52 -0
  5. package/dist/agents/skills/claude-code/product-requirements/SKILL.md +150 -0
  6. package/dist/agents/skills/claude-code/product-requirements/skill.yaml +70 -0
  7. package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +3 -1
  8. package/dist/agents/skills/codex/harness-roadmap-pilot/SKILL.md +5 -0
  9. package/dist/agents/skills/codex/harness-rollback/SKILL.md +124 -0
  10. package/dist/agents/skills/codex/harness-rollback/skill.yaml +52 -0
  11. package/dist/agents/skills/codex/product-requirements/SKILL.md +150 -0
  12. package/dist/agents/skills/codex/product-requirements/skill.yaml +70 -0
  13. package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +3 -1
  14. package/dist/agents/skills/cursor/harness-roadmap-pilot/SKILL.md +5 -0
  15. package/dist/agents/skills/cursor/harness-rollback/SKILL.md +124 -0
  16. package/dist/agents/skills/cursor/harness-rollback/skill.yaml +52 -0
  17. package/dist/agents/skills/cursor/product-requirements/SKILL.md +150 -0
  18. package/dist/agents/skills/cursor/product-requirements/skill.yaml +70 -0
  19. package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +3 -1
  20. package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/SKILL.md +5 -0
  21. package/dist/agents/skills/gemini-cli/harness-rollback/SKILL.md +124 -0
  22. package/dist/agents/skills/gemini-cli/harness-rollback/skill.yaml +52 -0
  23. package/dist/agents/skills/gemini-cli/product-requirements/SKILL.md +150 -0
  24. package/dist/agents/skills/gemini-cli/product-requirements/skill.yaml +70 -0
  25. package/dist/{agents-md-N4ULMUAK.js → agents-md-OTKZE5HH.js} +4 -4
  26. package/dist/{analyzer-XRCV63KC-WGRHW2ZM.js → analyzer-XRCV63KC-FALMS3MO.js} +2 -2
  27. package/dist/{architecture-OIMIBDJC.js → architecture-3VYDN7MQ.js} +5 -5
  28. package/dist/{assess-project-ITSB6W4L.js → assess-project-27X2FSZZ.js} +1 -1
  29. package/dist/bin/harness-mcp.js +15 -15
  30. package/dist/bin/harness.js +25 -25
  31. package/dist/{check-phase-gate-GN4X7HT6.js → check-phase-gate-IXLFZ6YH.js} +5 -5
  32. package/dist/{chunk-MEDRUIRO.js → chunk-354MCPT3.js} +3 -3
  33. package/dist/{chunk-5BUHPOCP.js → chunk-3H7JA24B.js} +7 -7
  34. package/dist/{chunk-PT65VY4S.js → chunk-3MKQKNY3.js} +6 -6
  35. package/dist/{chunk-LP764MGR.js → chunk-6Y6M3AZA.js} +3 -3
  36. package/dist/{chunk-D7A5JR7M.js → chunk-BMNHLKBA.js} +2 -2
  37. package/dist/{chunk-CRHQYBDA.js → chunk-CTMHHMHQ.js} +101 -4
  38. package/dist/{chunk-MIZQY35D.js → chunk-D7QXGI6E.js} +2 -2
  39. package/dist/{chunk-F3GNBRGL.js → chunk-EFWRZHZ7.js} +101 -97
  40. package/dist/{chunk-LTYVAKWK.js → chunk-IOJGLIEQ.js} +20 -2
  41. package/dist/{chunk-CMU4DNLY.js → chunk-IXGYIQSR.js} +1 -1
  42. package/dist/{chunk-6NEJPS7W.js → chunk-JJLOWMGC.js} +2 -2
  43. package/dist/{chunk-73QZ43DF.js → chunk-KPBGAB35.js} +2 -2
  44. package/dist/{chunk-HJYAXAYQ.js → chunk-L5UKNGC5.js} +2 -2
  45. package/dist/{chunk-VJDSB7CI.js → chunk-LHWBQD7F.js} +24 -1
  46. package/dist/{chunk-JZL2O3RC.js → chunk-LISEPDVT.js} +5 -5
  47. package/dist/{chunk-NEMB36N4.js → chunk-MEIUXTFY.js} +2 -2
  48. package/dist/{chunk-7RH2NTLA.js → chunk-NZ5AXKRA.js} +1 -1
  49. package/dist/{chunk-H5GN7R43.js → chunk-QHFXVVUY.js} +2 -2
  50. package/dist/{chunk-U2NOOATF.js → chunk-S2ETJDQJ.js} +6 -6
  51. package/dist/{chunk-574JCBYH.js → chunk-TM4KFUWP.js} +2 -2
  52. package/dist/{chunk-YVI7ZV73.js → chunk-VGDZAWCJ.js} +803 -214
  53. package/dist/{chunk-TKPAOB2T.js → chunk-VRA64HYI.js} +2 -2
  54. package/dist/{chunk-T46G6YNI.js → chunk-WAFTJFT3.js} +3 -3
  55. package/dist/{chunk-GTHL3TRZ.js → chunk-XF6RE3JQ.js} +2 -2
  56. package/dist/{chunk-XKILFNRK.js → chunk-XNHKXELN.js} +2 -2
  57. package/dist/{ci-workflow-PA3WL6WK.js → ci-workflow-Y5GBKNZP.js} +4 -4
  58. package/dist/{dist-BWFFVKEW.js → dist-4CZLCE33.js} +7 -3
  59. package/dist/{dist-ISDDHDOR.js → dist-S3KCRI7X.js} +3 -1
  60. package/dist/{docs-HOTWQJQF.js → docs-3MWDPK4S.js} +5 -5
  61. package/dist/{engine-MVG2SPGD.js → engine-RJXQ5DHK.js} +4 -4
  62. package/dist/{entropy-3B4U2BTF.js → entropy-OX5LSM4S.js} +5 -5
  63. package/dist/{feedback-WIWWDVUC.js → feedback-OODAP2G2.js} +1 -1
  64. package/dist/{generate-agent-definitions-KPRHY6X3.js → generate-agent-definitions-CCREQZEA.js} +5 -5
  65. package/dist/hooks/adoption-tracker.js +41 -25
  66. package/dist/hooks/pre-compact-state.js +45 -27
  67. package/dist/hooks/sentinel-post.js +125 -102
  68. package/dist/hooks/sentinel-pre.js +70 -53
  69. package/dist/hooks/telemetry-reporter.js +44 -25
  70. package/dist/index.d.ts +66 -0
  71. package/dist/index.js +25 -25
  72. package/dist/{loader-SPJ2ZGYW.js → loader-ZICOJBVX.js} +4 -4
  73. package/dist/{mcp-VSSIWTII.js → mcp-XX6EIBLL.js} +15 -15
  74. package/dist/{performance-JYFS27B3.js → performance-OLZVGMAY.js} +5 -5
  75. package/dist/{review-pipeline-BDT6Y6QV.js → review-pipeline-3QPHMWPC.js} +4 -4
  76. package/dist/{runtime-ZEPHPPQJ.js → runtime-ZFFIH76Z.js} +4 -4
  77. package/dist/{security-FWSDTTEW.js → security-7YW3UK2C.js} +1 -1
  78. package/dist/{state-events-PBDNQPXT.js → state-events-PTWAEGJ2.js} +4 -4
  79. package/dist/{validate-XIMNCIKR.js → validate-H5SB7X3Z.js} +5 -5
  80. package/dist/{validate-cross-check-H2OUHTID.js → validate-cross-check-YYVYMSPA.js} +4 -4
  81. package/package.json +8 -8
@@ -3,40 +3,40 @@ import {
3
3
  createProgram,
4
4
  installCommandTelemetry,
5
5
  printFirstRunWelcome
6
- } from "../chunk-YVI7ZV73.js";
7
- import "../chunk-574JCBYH.js";
8
- import "../chunk-TKPAOB2T.js";
9
- import "../chunk-GTHL3TRZ.js";
10
- import "../chunk-NEMB36N4.js";
11
- import "../chunk-MIZQY35D.js";
12
- import "../chunk-CMU4DNLY.js";
6
+ } from "../chunk-VGDZAWCJ.js";
7
+ import "../chunk-TM4KFUWP.js";
8
+ import "../chunk-VRA64HYI.js";
9
+ import "../chunk-XF6RE3JQ.js";
10
+ import "../chunk-MEIUXTFY.js";
11
+ import "../chunk-D7QXGI6E.js";
12
+ import "../chunk-IXGYIQSR.js";
13
13
  import "../chunk-KET4QQZB.js";
14
14
  import "../chunk-YYFSFSB3.js";
15
- import "../chunk-6NEJPS7W.js";
15
+ import "../chunk-JJLOWMGC.js";
16
16
  import "../chunk-CQ553GZO.js";
17
17
  import "../chunk-ZP5E7YET.js";
18
- import "../chunk-73QZ43DF.js";
18
+ import "../chunk-KPBGAB35.js";
19
19
  import "../chunk-GISMXMVL.js";
20
20
  import "../chunk-V3ZQUCRH.js";
21
21
  import "../chunk-TEFCFC4H.js";
22
- import "../chunk-LP764MGR.js";
22
+ import "../chunk-6Y6M3AZA.js";
23
23
  import {
24
24
  dispatchSkillsFromGit
25
- } from "../chunk-F3GNBRGL.js";
26
- import "../chunk-MEDRUIRO.js";
27
- import "../chunk-HJYAXAYQ.js";
28
- import "../chunk-H5GN7R43.js";
29
- import "../chunk-U2NOOATF.js";
30
- import "../chunk-PT65VY4S.js";
31
- import "../chunk-JZL2O3RC.js";
32
- import "../chunk-5BUHPOCP.js";
25
+ } from "../chunk-EFWRZHZ7.js";
26
+ import "../chunk-354MCPT3.js";
27
+ import "../chunk-L5UKNGC5.js";
28
+ import "../chunk-QHFXVVUY.js";
29
+ import "../chunk-S2ETJDQJ.js";
30
+ import "../chunk-3MKQKNY3.js";
31
+ import "../chunk-LISEPDVT.js";
32
+ import "../chunk-3H7JA24B.js";
33
33
  import "../chunk-IOW3MW2K.js";
34
34
  import "../chunk-3ISINLYT.js";
35
35
  import "../chunk-4U5LDFCY.js";
36
- import "../chunk-T46G6YNI.js";
37
- import "../chunk-D7A5JR7M.js";
36
+ import "../chunk-WAFTJFT3.js";
37
+ import "../chunk-BMNHLKBA.js";
38
38
  import "../chunk-RC3OI5NK.js";
39
- import "../chunk-XKILFNRK.js";
39
+ import "../chunk-XNHKXELN.js";
40
40
  import "../chunk-W6Y7ZW3Y.js";
41
41
  import "../chunk-WBVCN35T.js";
42
42
  import "../chunk-UTJJJDNN.js";
@@ -45,7 +45,7 @@ import "../chunk-Y6SUQC32.js";
45
45
  import {
46
46
  findConfigFile,
47
47
  loadConfig
48
- } from "../chunk-LTYVAKWK.js";
48
+ } from "../chunk-IOJGLIEQ.js";
49
49
  import "../chunk-ZCZD7FHU.js";
50
50
  import "../chunk-EBJQ6N4M.js";
51
51
  import {
@@ -58,12 +58,12 @@ import {
58
58
  readCheckState,
59
59
  shouldRunCheck,
60
60
  spawnBackgroundCheck
61
- } from "../chunk-CRHQYBDA.js";
61
+ } from "../chunk-CTMHHMHQ.js";
62
62
  import {
63
63
  CLI_VERSION
64
64
  } from "../chunk-BM3PWGXQ.js";
65
- import "../chunk-7RH2NTLA.js";
66
- import "../chunk-VJDSB7CI.js";
65
+ import "../chunk-NZ5AXKRA.js";
66
+ import "../chunk-LHWBQD7F.js";
67
67
  import "../chunk-WZJR6SOI.js";
68
68
  import "../chunk-QCLOIUMX.js";
69
69
  import "../chunk-XARGEOJV.js";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  createCheckPhaseGateCommand,
3
3
  runCheckPhaseGate
4
- } from "./chunk-LP764MGR.js";
4
+ } from "./chunk-6Y6M3AZA.js";
5
5
  import "./chunk-Y6SUQC32.js";
6
- import "./chunk-LTYVAKWK.js";
6
+ import "./chunk-IOJGLIEQ.js";
7
7
  import "./chunk-ZCZD7FHU.js";
8
8
  import "./chunk-EBJQ6N4M.js";
9
9
  import "./chunk-3WGJMBKH.js";
10
- import "./chunk-CRHQYBDA.js";
11
- import "./chunk-7RH2NTLA.js";
12
- import "./chunk-VJDSB7CI.js";
10
+ import "./chunk-CTMHHMHQ.js";
11
+ import "./chunk-NZ5AXKRA.js";
12
+ import "./chunk-LHWBQD7F.js";
13
13
  import "./chunk-WZJR6SOI.js";
14
14
  import "./chunk-QCLOIUMX.js";
15
15
  import "./chunk-XARGEOJV.js";
@@ -33,7 +33,7 @@ var createSelfReviewDefinition = {
33
33
  };
34
34
  async function handleCreateSelfReview(input) {
35
35
  try {
36
- const { parseDiff, createSelfReview } = await import("./dist-BWFFVKEW.js");
36
+ const { parseDiff, createSelfReview } = await import("./dist-4CZLCE33.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-BWFFVKEW.js");
122
+ const { parseDiff, analyzeDiff } = await import("./dist-4CZLCE33.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-BWFFVKEW.js");
198
+ const { parseDiff, requestPeerReview } = await import("./dist-4CZLCE33.js");
199
199
  const parseResult = parseDiff(input.diff);
200
200
  if (!parseResult.ok) {
201
201
  return resultToMcpResponse(parseResult);
@@ -7,13 +7,13 @@ import {
7
7
  import {
8
8
  findConfigFile,
9
9
  loadConfig
10
- } from "./chunk-LTYVAKWK.js";
10
+ } from "./chunk-IOJGLIEQ.js";
11
11
  import {
12
12
  init_dist
13
- } from "./chunk-CRHQYBDA.js";
13
+ } from "./chunk-CTMHHMHQ.js";
14
14
  import {
15
15
  Ok
16
- } from "./chunk-VJDSB7CI.js";
16
+ } from "./chunk-LHWBQD7F.js";
17
17
 
18
18
  // src/mcp/tools/performance.ts
19
19
  init_dist();
@@ -35,7 +35,7 @@ var checkPerformanceDefinition = {
35
35
  };
36
36
  async function handleCheckPerformance(input) {
37
37
  try {
38
- const { EntropyAnalyzer } = await import("./dist-BWFFVKEW.js");
38
+ const { EntropyAnalyzer } = await import("./dist-4CZLCE33.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-BWFFVKEW.js");
101
+ const { BaselineManager } = await import("./dist-4CZLCE33.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-BWFFVKEW.js");
149
+ const { BaselineManager } = await import("./dist-4CZLCE33.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-BWFFVKEW.js");
179
+ const { CriticalPathResolver } = await import("./dist-4CZLCE33.js");
180
180
  const resolver = new CriticalPathResolver(sanitizePath(input.path));
181
181
  const result = await resolver.resolve();
182
182
  return resultToMcpResponse(Ok(result));
@@ -7,13 +7,13 @@ import {
7
7
  import {
8
8
  findConfigFile,
9
9
  loadConfig
10
- } from "./chunk-LTYVAKWK.js";
10
+ } from "./chunk-IOJGLIEQ.js";
11
11
  import {
12
12
  init_dist
13
- } from "./chunk-CRHQYBDA.js";
13
+ } from "./chunk-CTMHHMHQ.js";
14
14
  import {
15
15
  Ok
16
- } from "./chunk-VJDSB7CI.js";
16
+ } from "./chunk-LHWBQD7F.js";
17
17
 
18
18
  // src/mcp/tools/docs.ts
19
19
  init_dist();
@@ -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-BWFFVKEW.js");
53
+ const { validateKnowledgeMap } = await import("./dist-4CZLCE33.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-BWFFVKEW.js");
58
+ const { checkDocCoverage: checkDocCoverage2, validateKnowledgeMap } = await import("./dist-4CZLCE33.js");
59
59
  const domain2 = input.domain ?? "src";
60
60
  const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-STFGYKZH.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-BWFFVKEW.js");
97
+ const { checkDocCoverage } = await import("./dist-4CZLCE33.js");
98
98
  const domain = input.domain ?? "src";
99
99
  const { loadGraphStore } = await import("./graph-loader-STFGYKZH.js");
100
100
  const store = await loadGraphStore(projectPath);
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-Y6SUQC32.js";
4
4
  import {
5
5
  resolveConfig
6
- } from "./chunk-LTYVAKWK.js";
6
+ } from "./chunk-IOJGLIEQ.js";
7
7
  import {
8
8
  logger
9
9
  } from "./chunk-EBJQ6N4M.js";
@@ -12,10 +12,10 @@ import {
12
12
  } from "./chunk-3WGJMBKH.js";
13
13
  import {
14
14
  init_dist
15
- } from "./chunk-CRHQYBDA.js";
15
+ } from "./chunk-CTMHHMHQ.js";
16
16
  import {
17
17
  Ok
18
- } from "./chunk-VJDSB7CI.js";
18
+ } from "./chunk-LHWBQD7F.js";
19
19
 
20
20
  // src/commands/check-phase-gate.ts
21
21
  init_dist();
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-RC3OI5NK.js";
4
4
  import {
5
5
  resolveProjectConfig
6
- } from "./chunk-XKILFNRK.js";
6
+ } from "./chunk-XNHKXELN.js";
7
7
  import {
8
8
  sanitizePath
9
9
  } from "./chunk-W6Y7ZW3Y.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-BWFFVKEW.js");
41
+ const { validateDependencies, TypeScriptParser } = await import("./dist-4CZLCE33.js");
42
42
  const config = configResult.value;
43
43
  const rawLayers = Array.isArray(config.layers) ? config.layers : [];
44
44
  const layers = rawLayers.map((l) => ({
@@ -31,7 +31,7 @@ import {
31
31
  resetParserCache,
32
32
  resolveFileToLayer,
33
33
  validateDependencies
34
- } from "./chunk-7RH2NTLA.js";
34
+ } from "./chunk-NZ5AXKRA.js";
35
35
  import {
36
36
  AuthAuditEntrySchema,
37
37
  AuthTokenPublicSchema,
@@ -70,6 +70,7 @@ import {
70
70
  ProposalStatusSchema,
71
71
  ProposalTypeSchema,
72
72
  REQUIRED_STRATEGY_SECTIONS,
73
+ RoutingError,
73
74
  SESSIONS_DEFAULTS,
74
75
  SESSION_SECTION_NAMES,
75
76
  STANDARD_COGNITIVE_MODES,
@@ -87,7 +88,7 @@ import {
87
88
  isErr,
88
89
  isOk,
89
90
  migrateProposalRecord
90
- } from "./chunk-VJDSB7CI.js";
91
+ } from "./chunk-LHWBQD7F.js";
91
92
  import {
92
93
  DEFAULT_SKIP_DIRS,
93
94
  GraphStore,
@@ -1425,6 +1426,7 @@ __export(dist_exports, {
1425
1426
  ROADMAP_READ_ALLOWLIST: () => ROADMAP_READ_ALLOWLIST,
1426
1427
  RUNNER_PRESETS: () => RUNNER_PRESETS,
1427
1428
  RegressionDetector: () => RegressionDetector,
1429
+ RoutingError: () => RoutingError,
1428
1430
  RuleRegistry: () => RuleRegistry,
1429
1431
  SECURITY_DESCRIPTOR: () => SECURITY_DESCRIPTOR,
1430
1432
  SESSIONS_DEFAULTS: () => SESSIONS_DEFAULTS,
@@ -1551,6 +1553,7 @@ __export(dist_exports, {
1551
1553
  claim: () => claim,
1552
1554
  classifyConfidence: () => classifyConfidence,
1553
1555
  classifyFinding: () => classifyFinding,
1556
+ classifyRevert: () => classifyRevert,
1554
1557
  clearFailuresCache: () => clearFailuresCache,
1555
1558
  clearLearningsCache: () => clearLearningsCache,
1556
1559
  clearPulseAdapters: () => clearPulseAdapters,
@@ -13894,6 +13897,84 @@ function groomRoadmap(roadmap, options) {
13894
13897
  );
13895
13898
  return { roadmap: next, archived, changes };
13896
13899
  }
13900
+ function detectMigrationWarnings(changedFiles) {
13901
+ const warnings = [];
13902
+ for (const file of changedFiles) {
13903
+ const p = file.toLowerCase();
13904
+ for (const { test, label } of MIGRATION_PATTERNS) {
13905
+ if (test(p)) {
13906
+ warnings.push(`${file} (${label}) \u2014 verify revert does not orphan schema state`);
13907
+ break;
13908
+ }
13909
+ }
13910
+ }
13911
+ return warnings;
13912
+ }
13913
+ function intersects(a, b) {
13914
+ const set = new Set(a);
13915
+ return b.some((x) => set.has(x));
13916
+ }
13917
+ async function classifyRevert(input, io) {
13918
+ if (input.changedFiles.length === 0) {
13919
+ return {
13920
+ targetPr: input.targetPr,
13921
+ trigger: input.trigger,
13922
+ revertReady: false,
13923
+ reasons: ["no changed files resolved for the target PR \u2014 cannot classify a revert"],
13924
+ cleanRevert: false,
13925
+ dependentMerges: [],
13926
+ migrationWarnings: [],
13927
+ ...input.blastRadius !== void 0 ? { blastRadius: input.blastRadius } : {},
13928
+ action: "skipped"
13929
+ };
13930
+ }
13931
+ if (input.mergeSha.trim() === "") {
13932
+ return {
13933
+ targetPr: input.targetPr,
13934
+ trigger: input.trigger,
13935
+ revertReady: false,
13936
+ reasons: ["target PR not merged / no merge commit \u2014 cannot classify a revert"],
13937
+ cleanRevert: false,
13938
+ dependentMerges: [],
13939
+ migrationWarnings: detectMigrationWarnings(input.changedFiles),
13940
+ ...input.blastRadius !== void 0 ? { blastRadius: input.blastRadius } : {},
13941
+ action: "skipped"
13942
+ };
13943
+ }
13944
+ const migrationWarnings = detectMigrationWarnings(input.changedFiles);
13945
+ const { clean, conflictPaths } = await io.revertDryRun(input.mergeSha);
13946
+ const dependentMerges = input.laterMerges.filter((m) => m.pr !== input.targetPr).filter((m) => intersects(input.changedFiles, m.changedFiles)).map((m) => m.pr);
13947
+ const reasons = [];
13948
+ let revertReady;
13949
+ let action;
13950
+ if (!clean) {
13951
+ revertReady = false;
13952
+ action = "skipped";
13953
+ const detail = conflictPaths.length > 0 ? `conflicts: ${conflictPaths.join(", ")}` : "conflicting paths unavailable";
13954
+ reasons.push(`git revert did not apply cleanly (${detail})`);
13955
+ } else if (dependentMerges.length > 0) {
13956
+ revertReady = false;
13957
+ action = "blocked";
13958
+ reasons.push(`dependent later merge(s) touch the same files: ${dependentMerges.join(", ")}`);
13959
+ } else {
13960
+ revertReady = true;
13961
+ action = "proposed";
13962
+ reasons.push("clean revert with no dependent later merge");
13963
+ }
13964
+ return {
13965
+ targetPr: input.targetPr,
13966
+ trigger: input.trigger,
13967
+ revertReady,
13968
+ reasons,
13969
+ cleanRevert: clean,
13970
+ dependentMerges,
13971
+ // `blastRadius` is optional context; only attach when provided so the field
13972
+ // stays absent (not `undefined`) under `exactOptionalPropertyTypes`.
13973
+ ...input.blastRadius !== void 0 ? { blastRadius: input.blastRadius } : {},
13974
+ migrationWarnings,
13975
+ action
13976
+ };
13977
+ }
13897
13978
  function getStatePath() {
13898
13979
  const home = process.env["HOME"] || os2.homedir();
13899
13980
  return path41.join(home, ".harness", "update-check.json");
@@ -15324,7 +15405,7 @@ function arrayLen(arr) {
15324
15405
  return Array.isArray(arr) ? arr.length : 0;
15325
15406
  }
15326
15407
  async function gatherEntropyBlock(projectPath) {
15327
- const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./analyzer-XRCV63KC-WGRHW2ZM.js");
15408
+ const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./analyzer-XRCV63KC-FALMS3MO.js");
15328
15409
  const analyzer = new EntropyAnalyzer2({
15329
15410
  rootDir: projectPath,
15330
15411
  include: ["src/**/*.ts", "src/**/*.tsx", "packages/*/src/**/*.ts"],
@@ -16435,7 +16516,7 @@ function writeStrategyDoc(doc, opts) {
16435
16516
  throw e;
16436
16517
  }
16437
16518
  }
16438
- var WHATWG_BAD_PORTS, BAD_PORT_SET, VALID_TYPES, CONVENTIONAL_PATTERN, LOOKBACK_PATTERN, PulseDbSourceSchema, PulseSourcesSchema, PulseConfigSchema, KNOWN_SECTION_NAMES, ISO_DATE, PLACEHOLDER_INLINE, REQUIRED, ALLOWED, StrategyFrontmatterSchema, StrategySectionSchema, StrategyDocSchema, BUG_TRACK_CATEGORIES, KNOWLEDGE_TRACK_CATEGORIES, ALL_SOLUTION_CATEGORIES, ISO_DATE2, BugTrackSchema, KnowledgeTrackSchema, BaseFrontmatter, SolutionDocFrontmatterSchema, TRACK_CATEGORIES, DEFAULT_AGNIX_TIMEOUT_MS, HARNESS_AGNIX_DISABLE, HARNESS_AGNIX_BIN, CLAUDE_MD_WARN_BYTES, CLAUDE_MD_ERROR_BYTES, CONTEXT_FILES, MIN_DESCRIPTION_LENGTH, SETTINGS_PATHS, KNOWN_HOOK_EVENTS, MCP_SETTINGS_FILES, REQUIRED_SECTIONS, SETTINGS_FILES, KNOWN_AGNIX_TOOLS, ROADMAP_READ_ALLOWLIST, ROADMAP_MD, DYNAMIC_ROADMAP_IO, KEBAB_CASE, TICKET_ID, DEFAULT_SECTIONS, DEFAULT_RATIOS, NODE_TYPE_TO_CATEGORY, SECTION_LEVEL_MAP, DEFAULT_LEVEL, DEFAULT_BUDGET, DEFAULT_LOADER_CONFIG, LEVEL_FRACTIONS, PHASE_PRIORITIES, ManifestSchema, BundleConstraintsSchema, BundleSchema, ContributionsSchema, LockfilePackageSchema, LockfileSchema, SharableLayerSchema, SharableForbiddenImportSchema, SharableBoundaryConfigSchema, SharableSecurityRulesSchema, VALID_SCOPES, LINE_PATTERN, START_PATTERN, END_PATTERN, readFile72, writeFile32, unlink22, mkdir22, copyFile2, DEFAULT_FIX_CONFIG, EXPORT_TYPE_KEYWORD, ALWAYS_UNSAFE_TYPES, idCounter, DEAD_CODE_FIX_ACTIONS, MustExportRuleSchema, MustExportDefaultRuleSchema, NoExportRuleSchema, MustImportRuleSchema, NoImportRuleSchema, NamingRuleSchema, MaxExportsRuleSchema, MaxLinesRuleSchema, RequireJSDocRuleSchema, RuleSchema, ConfigPatternSchema, PatternConfigSchema, DriftConfigSchema, DeadCodeConfigSchema, EntropyConfigSchema, BaselineManager, BenchmarkRunner, RegressionDetector, SOURCE_EXTENSIONS, FUNCTION_DECL_RE, CONST_DECL_RE, CriticalPathResolver, NoOpTelemetryAdapter, NoOpExecutor, ConsoleSink, feedbackConfig, ChecklistBuilder, AgentActionEmitter, globalEmitter, FileSink, NoOpSink, ConfidenceTierSchema, RegressionResultSchema, DirectionSchema, CategoryForecastSchema, SpecImpactSignalsSchema, SpecImpactEstimateSchema, ContributingFeatureSchema, AdjustedForecastSchema, PredictionWarningSchema, StabilityForecastSchema, PredictionResultSchema, PredictionOptionsSchema, VALID_STATUSES, EM_DASH, VALID_PRIORITIES, EM_DASH2, H3_NAME, FRONTMATTER, STATUS_RANK, META_FILE, ShardStore, MonolithStore, ALL_CATEGORIES, DIRECTION_THRESHOLD, PredictionEngine, DEFAULT_COEFFICIENTS, SpecImpactEstimator, EMPTY_HISTORY, ViolationHistoryManager, NORMALIZERS, MAX_SAMPLES, DEFAULT_WINDOW_WEEKS, DEFAULT_MIN_OCCURRENCES, FailureEntrySchema, HandoffSchema, GateCheckSchema, GateResultSchema, GateConfigSchema, HarnessStateSchema, DEFAULT_STATE, HARNESS_DIR, STATE_FILE, LEARNINGS_FILE, FAILURES_FILE, HANDOFF_FILE, GATE_CONFIG_FILE, INDEX_FILE, SESSIONS_DIR, SESSION_INDEX_FILE, SUMMARY_FILE, SESSION_STATE_FILE, ARCHIVE_DIR, CONTENT_HASHES_FILE, StreamInfoSchema, StreamIndexSchema, DEFAULT_STREAM_INDEX, EVENT_LOG_FILE, EVENT_BLOBS_DIR, MAX_LINE_BYTES, BLOB_REF_KEY, SNAPSHOT_FILE, STREAMS_DIR, STREAM_NAME_REGEX, branchCache, BRANCH_CACHE_TTL_MS, STATE_FILES, STATE_DIRS, MAX_CACHE_ENTRIES, learningsCacheMap, WEIGHTS, LOCK_RETRIES, LOCK_BACKOFFS, PROMOTABLE_OUTCOMES, failuresCacheMap, FAILURE_LINE_REGEX, SAFE_GATE_COMMAND, event_sourcing_exports, ScopeSchema, envelopeShape, StateImportedPayload, DecisionRecordedPayload, PositionSetPayload, BlockerOpenedPayload, BlockerResolvedPayload, ProgressSetPayload, SessionSummarizedPayload, LANES, LaneSchema, TaskRegisteredPayload, LaneTransitionedPayload, UserInputCapturedPayload, ApprovalRequestedPayload, ApprovalResolvedPayload, EventSchema, BlobRefSchema, StoredEventSchema, cached, localCounters, CORE_HANDLERS, KIND_LABEL, MATERIALIZE_DEBOUNCE_MS, pendingTimers, inflightMaterializes, ensured, TERMINAL_LANES, NON_TERMINAL, TABLE, RuleRegistry, DEFAULT_SECURITY_CONFIG, RuleOverrideSchema, SecurityConfigSchema, secretRules, injectionRules, xssRules, cryptoRules, pathTraversalRules, networkRules, deserializationRules, agentConfigRules, mcpRules, insecureDefaultsRules, sharpEdgesRules, nodeRules, expressRules, reactRules, goRules, SecurityScanner, OSV_ENDPOINT, DEFAULT_CACHE_DIR, DEFAULT_TTL_HOURS, hiddenUnicodePatterns, reRolingPatterns, permissionEscalationPatterns, encodedPayloadPatterns, indirectInjectionPatterns, contextManipulationPatterns, socialEngineeringPatterns, suspiciousPatterns, ALL_PATTERNS, DESTRUCTIVE_BASH, TAINT_DURATION_MS, DEFAULT_SESSION_ID, SecurityCategorySnapshotSchema, SupplyChainSnapshotSchema, SecurityTimelineSnapshotSchema, FindingLifecycleSchema, SecurityTimelineFileSchema, DirectionSchema2, SecurityTrendLineSchema, TrendAttributionSchema, SecurityTrendResultSchema, TimeToFixStatsSchema, TimeToFixResultSchema, EMPTY_SUPPLY_CHAIN, SecurityTimelineManager, ALL_CHECKS, STATUS_ICONS, CINotifier, ExclusionSet, PREFIX_PATTERNS, TEST_FILE_PATTERN, MD_FILE_PATTERN, ALL_DOMAINS, SECURITY_PATTERNS, JS_EXT_FALLBACKS, SEVERITY_RANK, SEVERITY_ORDER, SEVERITY_LABELS, VALIDATED_BY_RANK, VALIDATION_SCORES, DOMAIN_BASELINES, FACTOR_WEIGHTS, EVIDENCE_SATURATION, CORROBORATED_AGREEMENT, STANDALONE_AGREEMENT, AGREEMENT_LINE_GAP, COMPLIANCE_DESCRIPTOR, EXPORT_RE, BUG_DETECTION_DESCRIPTOR, SECURITY_DESCRIPTOR, EVAL_PATTERN, SECRET_PATTERNS, SQL_CONCAT_PATTERN, SHELL_EXEC_PATTERN, ARCHITECTURE_DESCRIPTOR, LARGE_FILE_THRESHOLD, VIOLATION_FILE_RE, LEARNINGS_DESCRIPTOR, RELEVANCE_THRESHOLD, ADVERSARIAL_DESCRIPTOR, UNVERIFIED_INPUT_PATTERN, PROMISE_NO_REJECT_PATTERN, UNGUARDED_OPTIONAL_CALL, COMPOSE_NO_AWAIT, FETCH_NO_TIMEOUT, TYPESCRIPT_STRICT_DESCRIPTOR, EXPLICIT_ANY_PATTERN, TS_IGNORE_PATTERN, UNSAFE_AS_UNKNOWN, NON_NULL_ASSERTION, VAGUE_HELPER_NAME, FRONTEND_RACES_DESCRIPTOR, AGENT_DESCRIPTORS, CONDITIONAL_SUBAGENT_DESCRIPTORS, AGENT_RUNNERS, SUBAGENT_ORDER, RISK_KEYWORDS, EXCLUDED_PATH_PATTERNS, ASYNC_UI_SIGNALS, WORD_BOUNDARY, DOWNGRADE_MAP, DEFAULT_PROVIDER_TIERS, SMALL_SUGGESTION_LINE_LIMIT, FILE_LINE_RANGE_PATTERN, FILE_LINE_PATTERN, FILE_ONLY_PATTERN, SECURITY_SENSITIVE_PATH, MIGRATION_PATH, TEST_PATH, CONFIG_PATH, STAGE_DOMAINS, CI_REVIEW_VERDICT_SCHEMA_VERSION, CI_RUNNERS, CI_ASSESSMENTS, CI_REVIEW_DOMAINS, ReviewFindingSchema, CiReviewVerdictSchema, VERDICT_MAP, RUNNER_PRESETS, VERDICT_MAP2, DEFAULT_EXEC_TIMEOUT_MS, DEFAULT_EXEC_MAX_STDOUT_BYTES, STDERR_CAP_BYTES, STDERR_TAIL_BYTES, defaultExecFile, EMPTY_TIER, EM_DASH3, DEFAULT_MILESTONE, MAX_CLOSEST_MATCHES, MACHINE_ASSIGNEE_PATTERNS, EXTERNAL_ID_RE, RETRY_DEFAULTS, GitHubIssuesSyncAdapter, syncMutex, PRIORITY_RANK, PRIORITY_RANK2, POSITION_WEIGHT, DEPENDENTS_WEIGHT, AFFINITY_WEIGHT, ConflictError, DEFAULTS, GitHubHttp, ETagStore, START_MARKER, END_MARKER, SERIALIZER_FIELDS, GitHubIssuesTrackerAdapter, LINEAR_ENDPOINT, EXTERNAL_PREFIX, HISTORY_MARKER, ISSUE_FIELDS, LinearTrackerAdapter, migrate_exports, HASH_RE, DEFAULT_CATCH_ALL, DEFAULT_INTAKE, DEFAULT_MAX_ACTIVE, InteractionTypeSchema, QuestionSchema, ConfirmationSchema, TransitionSchema, EmitInteractionInputSchema, ProjectScanner, SHELL_TEMPLATE, STYLES, SCRIPTS, MockLLMService, llmService, ContentPipeline, BlueprintGenerator, TOKENS_PER_MILLION, fallback_default, LITELLM_PRICING_URL, CACHE_TTL_MS, STALENESS_WARNING_DAYS, MICRODOLLARS_PER_DOLLAR, TOKENS_PER_MILLION2, DAY_MS, StructuralStrategy, DEFAULT_TOKEN_BUDGET, CHARS_PER_TOKEN, TRUNCATION_MARKER, TruncationStrategy, CompactionPipeline, STABILITY_LOOKUP, TIER_ORDER, AnthropicCacheAdapter, TIER_ORDER2, OpenAICacheAdapter, TIER_ORDER3, CACHED_CONTENT_MARKER, GeminiCacheAdapter, VERSION, POSTHOG_BATCH_URL, MAX_ATTEMPTS, TIMEOUT_MS, DEFAULT_CAPACITY, CacheMetricsRecorder, RETRY_BACKOFFS_MS, DEFAULT_FLUSH_INTERVAL_MS, DEFAULT_BATCH_SIZE, defaultFetch, defaultWarn, OTLPExporter, SERVICE_NAME_ATTR, SpanKind, ModeSchema, SeveritySchema, TierSchema, StrengthFindingSchema, HarnessConfigSubsetSchema, HookFileSchema, ProjectContextSchema, AuditSummarySchema, AuditResultSchema, SEVERITY_WEIGHTS, clamp, HOOK_SCRIPT_TOKEN, NEVER_BLOCKS, ALWAYS_EXIT_ZERO, EXIT_ZERO_LINE, NONZERO_EXIT, GATE, ERREXIT, strength001NonblockingHooks, BASELINE_REWRITE, strength002Autobaseline, SKIP_RE, strength003SkipList, strength004EmptyThresholds, INIT_SKILL_PATH, DEFAULT_BASIC, strength005LowestTier, AUTO_PATTERN, COMMENT_LINE, NAME_VALUE_LINE, PAT_GATING, REVIEW_SIGNAL, strength006AutoapproveBaseline, CHECK_KEYS, SIGNAL_REGISTRY, HEALTH_SIGNAL_NAMES, CHECK_SIGNAL_MAP, SIGNAL_CATEGORY_MAP, strength007SnapshotSignalMismatch, ALL_RULES, HarnessStrengthAuditor, MAX_TOP_AFFECTED, CompoundLockHeldError, KNOWN_CATEGORIES, SEVERITY_RANK2, DEFAULT_MIN_WAVE_SIZE, ProposalNotFoundError, ProposalConflictError, ALLOWED_FIELD_KEYS, PII_TOKENS, PII_FIELD_DENYLIST, PII_LINE_RE, ALLOWED_SET, PulseAdapterAlreadyRegisteredError, REGISTRY, MOCK_ADAPTER_NAME, ALLOWED_FIELD_SET, adapter, LOOKBACK_RE, MAX_LINES, INLINE_TEMPLATE, TRUNCATION_MARKER2, execFileAsync, FIX_RE, EMPTY_REPO_RE, execFileAsync2, TRACK_CATEGORIES2, STOPWORDS, KEYWORD_TO_CATEGORY, SECTION_ORDER, FILENAME;
16519
+ var WHATWG_BAD_PORTS, BAD_PORT_SET, VALID_TYPES, CONVENTIONAL_PATTERN, LOOKBACK_PATTERN, PulseDbSourceSchema, PulseSourcesSchema, PulseConfigSchema, KNOWN_SECTION_NAMES, ISO_DATE, PLACEHOLDER_INLINE, REQUIRED, ALLOWED, StrategyFrontmatterSchema, StrategySectionSchema, StrategyDocSchema, BUG_TRACK_CATEGORIES, KNOWLEDGE_TRACK_CATEGORIES, ALL_SOLUTION_CATEGORIES, ISO_DATE2, BugTrackSchema, KnowledgeTrackSchema, BaseFrontmatter, SolutionDocFrontmatterSchema, TRACK_CATEGORIES, DEFAULT_AGNIX_TIMEOUT_MS, HARNESS_AGNIX_DISABLE, HARNESS_AGNIX_BIN, CLAUDE_MD_WARN_BYTES, CLAUDE_MD_ERROR_BYTES, CONTEXT_FILES, MIN_DESCRIPTION_LENGTH, SETTINGS_PATHS, KNOWN_HOOK_EVENTS, MCP_SETTINGS_FILES, REQUIRED_SECTIONS, SETTINGS_FILES, KNOWN_AGNIX_TOOLS, ROADMAP_READ_ALLOWLIST, ROADMAP_MD, DYNAMIC_ROADMAP_IO, KEBAB_CASE, TICKET_ID, DEFAULT_SECTIONS, DEFAULT_RATIOS, NODE_TYPE_TO_CATEGORY, SECTION_LEVEL_MAP, DEFAULT_LEVEL, DEFAULT_BUDGET, DEFAULT_LOADER_CONFIG, LEVEL_FRACTIONS, PHASE_PRIORITIES, ManifestSchema, BundleConstraintsSchema, BundleSchema, ContributionsSchema, LockfilePackageSchema, LockfileSchema, SharableLayerSchema, SharableForbiddenImportSchema, SharableBoundaryConfigSchema, SharableSecurityRulesSchema, VALID_SCOPES, LINE_PATTERN, START_PATTERN, END_PATTERN, readFile72, writeFile32, unlink22, mkdir22, copyFile2, DEFAULT_FIX_CONFIG, EXPORT_TYPE_KEYWORD, ALWAYS_UNSAFE_TYPES, idCounter, DEAD_CODE_FIX_ACTIONS, MustExportRuleSchema, MustExportDefaultRuleSchema, NoExportRuleSchema, MustImportRuleSchema, NoImportRuleSchema, NamingRuleSchema, MaxExportsRuleSchema, MaxLinesRuleSchema, RequireJSDocRuleSchema, RuleSchema, ConfigPatternSchema, PatternConfigSchema, DriftConfigSchema, DeadCodeConfigSchema, EntropyConfigSchema, BaselineManager, BenchmarkRunner, RegressionDetector, SOURCE_EXTENSIONS, FUNCTION_DECL_RE, CONST_DECL_RE, CriticalPathResolver, NoOpTelemetryAdapter, NoOpExecutor, ConsoleSink, feedbackConfig, ChecklistBuilder, AgentActionEmitter, globalEmitter, FileSink, NoOpSink, ConfidenceTierSchema, RegressionResultSchema, DirectionSchema, CategoryForecastSchema, SpecImpactSignalsSchema, SpecImpactEstimateSchema, ContributingFeatureSchema, AdjustedForecastSchema, PredictionWarningSchema, StabilityForecastSchema, PredictionResultSchema, PredictionOptionsSchema, VALID_STATUSES, EM_DASH, VALID_PRIORITIES, EM_DASH2, H3_NAME, FRONTMATTER, STATUS_RANK, META_FILE, ShardStore, MonolithStore, ALL_CATEGORIES, DIRECTION_THRESHOLD, PredictionEngine, DEFAULT_COEFFICIENTS, SpecImpactEstimator, EMPTY_HISTORY, ViolationHistoryManager, NORMALIZERS, MAX_SAMPLES, DEFAULT_WINDOW_WEEKS, DEFAULT_MIN_OCCURRENCES, FailureEntrySchema, HandoffSchema, GateCheckSchema, GateResultSchema, GateConfigSchema, HarnessStateSchema, DEFAULT_STATE, HARNESS_DIR, STATE_FILE, LEARNINGS_FILE, FAILURES_FILE, HANDOFF_FILE, GATE_CONFIG_FILE, INDEX_FILE, SESSIONS_DIR, SESSION_INDEX_FILE, SUMMARY_FILE, SESSION_STATE_FILE, ARCHIVE_DIR, CONTENT_HASHES_FILE, StreamInfoSchema, StreamIndexSchema, DEFAULT_STREAM_INDEX, EVENT_LOG_FILE, EVENT_BLOBS_DIR, MAX_LINE_BYTES, BLOB_REF_KEY, SNAPSHOT_FILE, STREAMS_DIR, STREAM_NAME_REGEX, branchCache, BRANCH_CACHE_TTL_MS, STATE_FILES, STATE_DIRS, MAX_CACHE_ENTRIES, learningsCacheMap, WEIGHTS, LOCK_RETRIES, LOCK_BACKOFFS, PROMOTABLE_OUTCOMES, failuresCacheMap, FAILURE_LINE_REGEX, SAFE_GATE_COMMAND, event_sourcing_exports, ScopeSchema, envelopeShape, StateImportedPayload, DecisionRecordedPayload, PositionSetPayload, BlockerOpenedPayload, BlockerResolvedPayload, ProgressSetPayload, SessionSummarizedPayload, LANES, LaneSchema, TaskRegisteredPayload, LaneTransitionedPayload, UserInputCapturedPayload, ApprovalRequestedPayload, ApprovalResolvedPayload, EventSchema, BlobRefSchema, StoredEventSchema, cached, localCounters, CORE_HANDLERS, KIND_LABEL, MATERIALIZE_DEBOUNCE_MS, pendingTimers, inflightMaterializes, ensured, TERMINAL_LANES, NON_TERMINAL, TABLE, RuleRegistry, DEFAULT_SECURITY_CONFIG, RuleOverrideSchema, SecurityConfigSchema, secretRules, injectionRules, xssRules, cryptoRules, pathTraversalRules, networkRules, deserializationRules, agentConfigRules, mcpRules, insecureDefaultsRules, sharpEdgesRules, nodeRules, expressRules, reactRules, goRules, SecurityScanner, OSV_ENDPOINT, DEFAULT_CACHE_DIR, DEFAULT_TTL_HOURS, hiddenUnicodePatterns, reRolingPatterns, permissionEscalationPatterns, encodedPayloadPatterns, indirectInjectionPatterns, contextManipulationPatterns, socialEngineeringPatterns, suspiciousPatterns, ALL_PATTERNS, DESTRUCTIVE_BASH, TAINT_DURATION_MS, DEFAULT_SESSION_ID, SecurityCategorySnapshotSchema, SupplyChainSnapshotSchema, SecurityTimelineSnapshotSchema, FindingLifecycleSchema, SecurityTimelineFileSchema, DirectionSchema2, SecurityTrendLineSchema, TrendAttributionSchema, SecurityTrendResultSchema, TimeToFixStatsSchema, TimeToFixResultSchema, EMPTY_SUPPLY_CHAIN, SecurityTimelineManager, ALL_CHECKS, STATUS_ICONS, CINotifier, ExclusionSet, PREFIX_PATTERNS, TEST_FILE_PATTERN, MD_FILE_PATTERN, ALL_DOMAINS, SECURITY_PATTERNS, JS_EXT_FALLBACKS, SEVERITY_RANK, SEVERITY_ORDER, SEVERITY_LABELS, VALIDATED_BY_RANK, VALIDATION_SCORES, DOMAIN_BASELINES, FACTOR_WEIGHTS, EVIDENCE_SATURATION, CORROBORATED_AGREEMENT, STANDALONE_AGREEMENT, AGREEMENT_LINE_GAP, COMPLIANCE_DESCRIPTOR, EXPORT_RE, BUG_DETECTION_DESCRIPTOR, SECURITY_DESCRIPTOR, EVAL_PATTERN, SECRET_PATTERNS, SQL_CONCAT_PATTERN, SHELL_EXEC_PATTERN, ARCHITECTURE_DESCRIPTOR, LARGE_FILE_THRESHOLD, VIOLATION_FILE_RE, LEARNINGS_DESCRIPTOR, RELEVANCE_THRESHOLD, ADVERSARIAL_DESCRIPTOR, UNVERIFIED_INPUT_PATTERN, PROMISE_NO_REJECT_PATTERN, UNGUARDED_OPTIONAL_CALL, COMPOSE_NO_AWAIT, FETCH_NO_TIMEOUT, TYPESCRIPT_STRICT_DESCRIPTOR, EXPLICIT_ANY_PATTERN, TS_IGNORE_PATTERN, UNSAFE_AS_UNKNOWN, NON_NULL_ASSERTION, VAGUE_HELPER_NAME, FRONTEND_RACES_DESCRIPTOR, AGENT_DESCRIPTORS, CONDITIONAL_SUBAGENT_DESCRIPTORS, AGENT_RUNNERS, SUBAGENT_ORDER, RISK_KEYWORDS, EXCLUDED_PATH_PATTERNS, ASYNC_UI_SIGNALS, WORD_BOUNDARY, DOWNGRADE_MAP, DEFAULT_PROVIDER_TIERS, SMALL_SUGGESTION_LINE_LIMIT, FILE_LINE_RANGE_PATTERN, FILE_LINE_PATTERN, FILE_ONLY_PATTERN, SECURITY_SENSITIVE_PATH, MIGRATION_PATH, TEST_PATH, CONFIG_PATH, STAGE_DOMAINS, CI_REVIEW_VERDICT_SCHEMA_VERSION, CI_RUNNERS, CI_ASSESSMENTS, CI_REVIEW_DOMAINS, ReviewFindingSchema, CiReviewVerdictSchema, VERDICT_MAP, RUNNER_PRESETS, VERDICT_MAP2, DEFAULT_EXEC_TIMEOUT_MS, DEFAULT_EXEC_MAX_STDOUT_BYTES, STDERR_CAP_BYTES, STDERR_TAIL_BYTES, defaultExecFile, EMPTY_TIER, EM_DASH3, DEFAULT_MILESTONE, MAX_CLOSEST_MATCHES, MACHINE_ASSIGNEE_PATTERNS, EXTERNAL_ID_RE, RETRY_DEFAULTS, GitHubIssuesSyncAdapter, syncMutex, PRIORITY_RANK, PRIORITY_RANK2, POSITION_WEIGHT, DEPENDENTS_WEIGHT, AFFINITY_WEIGHT, ConflictError, DEFAULTS, GitHubHttp, ETagStore, START_MARKER, END_MARKER, SERIALIZER_FIELDS, GitHubIssuesTrackerAdapter, LINEAR_ENDPOINT, EXTERNAL_PREFIX, HISTORY_MARKER, ISSUE_FIELDS, LinearTrackerAdapter, migrate_exports, HASH_RE, DEFAULT_CATCH_ALL, DEFAULT_INTAKE, DEFAULT_MAX_ACTIVE, MIGRATION_PATTERNS, InteractionTypeSchema, QuestionSchema, ConfirmationSchema, TransitionSchema, EmitInteractionInputSchema, ProjectScanner, SHELL_TEMPLATE, STYLES, SCRIPTS, MockLLMService, llmService, ContentPipeline, BlueprintGenerator, TOKENS_PER_MILLION, fallback_default, LITELLM_PRICING_URL, CACHE_TTL_MS, STALENESS_WARNING_DAYS, MICRODOLLARS_PER_DOLLAR, TOKENS_PER_MILLION2, DAY_MS, StructuralStrategy, DEFAULT_TOKEN_BUDGET, CHARS_PER_TOKEN, TRUNCATION_MARKER, TruncationStrategy, CompactionPipeline, STABILITY_LOOKUP, TIER_ORDER, AnthropicCacheAdapter, TIER_ORDER2, OpenAICacheAdapter, TIER_ORDER3, CACHED_CONTENT_MARKER, GeminiCacheAdapter, VERSION, POSTHOG_BATCH_URL, MAX_ATTEMPTS, TIMEOUT_MS, DEFAULT_CAPACITY, CacheMetricsRecorder, RETRY_BACKOFFS_MS, DEFAULT_FLUSH_INTERVAL_MS, DEFAULT_BATCH_SIZE, defaultFetch, defaultWarn, OTLPExporter, SERVICE_NAME_ATTR, SpanKind, ModeSchema, SeveritySchema, TierSchema, StrengthFindingSchema, HarnessConfigSubsetSchema, HookFileSchema, ProjectContextSchema, AuditSummarySchema, AuditResultSchema, SEVERITY_WEIGHTS, clamp, HOOK_SCRIPT_TOKEN, NEVER_BLOCKS, ALWAYS_EXIT_ZERO, EXIT_ZERO_LINE, NONZERO_EXIT, GATE, ERREXIT, strength001NonblockingHooks, BASELINE_REWRITE, strength002Autobaseline, SKIP_RE, strength003SkipList, strength004EmptyThresholds, INIT_SKILL_PATH, DEFAULT_BASIC, strength005LowestTier, AUTO_PATTERN, COMMENT_LINE, NAME_VALUE_LINE, PAT_GATING, REVIEW_SIGNAL, strength006AutoapproveBaseline, CHECK_KEYS, SIGNAL_REGISTRY, HEALTH_SIGNAL_NAMES, CHECK_SIGNAL_MAP, SIGNAL_CATEGORY_MAP, strength007SnapshotSignalMismatch, ALL_RULES, HarnessStrengthAuditor, MAX_TOP_AFFECTED, CompoundLockHeldError, KNOWN_CATEGORIES, SEVERITY_RANK2, DEFAULT_MIN_WAVE_SIZE, ProposalNotFoundError, ProposalConflictError, ALLOWED_FIELD_KEYS, PII_TOKENS, PII_FIELD_DENYLIST, PII_LINE_RE, ALLOWED_SET, PulseAdapterAlreadyRegisteredError, REGISTRY, MOCK_ADAPTER_NAME, ALLOWED_FIELD_SET, adapter, LOOKBACK_RE, MAX_LINES, INLINE_TEMPLATE, TRUNCATION_MARKER2, execFileAsync, FIX_RE, EMPTY_REPO_RE, execFileAsync2, TRACK_CATEGORIES2, STOPWORDS, KEYWORD_TO_CATEGORY, SECTION_ORDER, FILENAME;
16439
16520
  var init_dist3 = __esm({
16440
16521
  "../core/dist/index.mjs"() {
16441
16522
  init_chunk_OFA2AAZK();
@@ -19839,6 +19920,16 @@ var init_dist3 = __esm({
19839
19920
  const content = await fs32.readFile(filePath, "utf-8");
19840
19921
  return this.scanContentForFile(content, filePath, 1);
19841
19922
  }
19923
+ /**
19924
+ * Scan in-memory content for a specific `filePath`, applying the same
19925
+ * `fileGlob` rule filtering as {@link scanFile} — unlike {@link scanContent},
19926
+ * which fires every active rule regardless of path. Use this to scan content
19927
+ * you already hold (e.g. a diff's added lines) without a disk read; `startLine`
19928
+ * offsets the reported line numbers to the content's true position.
19929
+ */
19930
+ scanFileContent(content, filePath, startLine = 1) {
19931
+ return this.scanContentForFile(content, filePath, startLine);
19932
+ }
19842
19933
  scanContentForFile(content, filePath, startLine = 1) {
19843
19934
  if (!this.config.enabled) return [];
19844
19935
  const lines = content.split("\n");
@@ -22509,6 +22600,11 @@ ${JSON.stringify(event)}
22509
22600
  DEFAULT_CATCH_ALL = ["Backlog", "Current Work"];
22510
22601
  DEFAULT_INTAKE = "Intake";
22511
22602
  DEFAULT_MAX_ACTIVE = 25;
22603
+ MIGRATION_PATTERNS = [
22604
+ { test: (p) => /(^|\/)migrations\//.test(p), label: "migration directory" },
22605
+ { test: (p) => p.endsWith(".sql"), label: "SQL file" },
22606
+ { test: (p) => /(^|\/)schema\.(prisma|sql|graphql|rb)$/.test(p), label: "schema file" }
22607
+ ];
22512
22608
  InteractionTypeSchema = z13.enum(["question", "confirmation", "transition"]);
22513
22609
  QuestionSchema = z13.object({
22514
22610
  text: z13.string(),
@@ -23978,6 +24074,7 @@ export {
23978
24074
  isUnactionablePlanned,
23979
24075
  checkRoadmapHealth,
23980
24076
  groomRoadmap,
24077
+ classifyRevert,
23981
24078
  InteractionTypeSchema,
23982
24079
  QuestionSchema,
23983
24080
  ConfirmationSchema,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-CRHQYBDA.js";
3
+ } from "./chunk-CTMHHMHQ.js";
4
4
  import {
5
5
  Ok
6
- } from "./chunk-VJDSB7CI.js";
6
+ } from "./chunk-LHWBQD7F.js";
7
7
 
8
8
  // src/commands/validate-cross-check.ts
9
9
  init_dist();