@harness-engineering/cli 2.3.1 → 2.4.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 (50) hide show
  1. package/dist/agents/skills/claude-code/harness-compliance/SKILL.md +19 -0
  2. package/dist/agents/skills/codex/harness-compliance/SKILL.md +19 -0
  3. package/dist/agents/skills/cursor/harness-compliance/SKILL.md +19 -0
  4. package/dist/agents/skills/gemini-cli/harness-compliance/SKILL.md +19 -0
  5. package/dist/{agents-md-5JG3AE5A.js → agents-md-ROTDQOXM.js} +2 -2
  6. package/dist/{architecture-544ISXDI.js → architecture-I2G7PNQB.js} +3 -3
  7. package/dist/{assess-project-PBO6XFJC.js → assess-project-LO6NCLE7.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-BZU4DGF3.js → check-phase-gate-52SQFNJB.js} +3 -3
  11. package/dist/{chunk-YI6NTL72.js → chunk-27EHWQPK.js} +3 -3
  12. package/dist/{chunk-QZ67TDLJ.js → chunk-2L2A6W6I.js} +3 -3
  13. package/dist/{chunk-R6GLLMRZ.js → chunk-4XB37LST.js} +3 -3
  14. package/dist/{chunk-JMACX5FN.js → chunk-54JTO4NZ.js} +1 -1
  15. package/dist/{chunk-U2SF3KAQ.js → chunk-5YOHXTK3.js} +2 -2
  16. package/dist/{chunk-DHWFOHPX.js → chunk-DJRRTZGD.js} +1 -1
  17. package/dist/{chunk-IYA3NS5P.js → chunk-FJJYQWUP.js} +1 -1
  18. package/dist/{chunk-YNG7BWGB.js → chunk-GDJ2MRYH.js} +82 -8
  19. package/dist/{chunk-EMJFHTPZ.js → chunk-GN2CSZC6.js} +2 -2
  20. package/dist/{chunk-KT5PWWWO.js → chunk-JGPOQJ73.js} +1 -1
  21. package/dist/{chunk-DBJC4ULT.js → chunk-KPWUZSHL.js} +24 -1
  22. package/dist/{chunk-22OKI5QI.js → chunk-MQRKPF46.js} +5 -5
  23. package/dist/{chunk-T2ZMHXCX.js → chunk-MSBVH6ER.js} +1 -1
  24. package/dist/{chunk-J4MX5DIA.js → chunk-NGCM4B4V.js} +2 -2
  25. package/dist/{chunk-2564TBT6.js → chunk-OFMQEUYN.js} +1 -1
  26. package/dist/{chunk-A36MGB3V.js → chunk-Q43LM7CO.js} +70 -70
  27. package/dist/{chunk-LBYGGNEZ.js → chunk-RYVL76ZF.js} +1 -1
  28. package/dist/{chunk-LYMPKO6N.js → chunk-RZASDABE.js} +2 -2
  29. package/dist/{chunk-N6DVSOLZ.js → chunk-TCR5PKMU.js} +123 -32
  30. package/dist/{chunk-WMZKZCCE.js → chunk-TVJZX53C.js} +1 -1
  31. package/dist/{chunk-KJR4Z2YC.js → chunk-U4XK4BB3.js} +6 -6
  32. package/dist/{chunk-TIJXG4UB.js → chunk-WY2J54IZ.js} +6 -6
  33. package/dist/{ci-workflow-ZO6FPO3V.js → ci-workflow-MYBH64CR.js} +2 -2
  34. package/dist/{dist-ZS3Y3YWP.js → dist-ZJGFXGIB.js} +3 -1
  35. package/dist/{docs-VW2KDPI3.js → docs-7CW7WUFB.js} +3 -3
  36. package/dist/{engine-LFQ2JSHY.js → engine-Y75QZW6N.js} +2 -2
  37. package/dist/{entropy-P62LCVJI.js → entropy-P6QELTFA.js} +2 -2
  38. package/dist/{feedback-O3TZAPGX.js → feedback-PJWCDRRZ.js} +1 -1
  39. package/dist/{generate-agent-definitions-WVCOZDKI.js → generate-agent-definitions-ONDIJHHK.js} +3 -3
  40. package/dist/index.d.ts +66 -0
  41. package/dist/index.js +22 -22
  42. package/dist/{loader-UB2A65DN.js → loader-DQRNWKOZ.js} +2 -2
  43. package/dist/{mcp-ST26QMDK.js → mcp-UUNLS3MC.js} +13 -13
  44. package/dist/{performance-5HQG3IU6.js → performance-7X3EFAOD.js} +3 -3
  45. package/dist/{review-pipeline-VRDL5A7J.js → review-pipeline-GAJ22PBC.js} +2 -2
  46. package/dist/{runtime-TQQT2MWQ.js → runtime-6TK6U72R.js} +2 -2
  47. package/dist/{security-IMFAE6MW.js → security-ZSU643D7.js} +1 -1
  48. package/dist/{validate-GW2DG64P.js → validate-IDX6RI3U.js} +3 -3
  49. package/dist/{validate-cross-check-F5YQVXLT.js → validate-cross-check-5YEWZ3EW.js} +2 -2
  50. package/package.json +5 -5
@@ -123,6 +123,25 @@
123
123
 
124
124
  ---
125
125
 
126
+ ### Phase 3.5: INTERNAL COMPLIANCE -- Project Conventions
127
+
128
+ 1. **Verify branch naming convention.** Before creating a branch and again before
129
+ opening a PR, run `harness verify` (or `harness verify --json` for parsable
130
+ output) and act on the result -- do not just describe the rule to the user.
131
+ - Default prefixes: `feat/`, `fix/`, `chore/`, `docs/`, `refactor/`, `test/`, `perf/`
132
+ - Default slug format: strict `kebab-case` (lowercase, single hyphens, no
133
+ leading/trailing hyphen), max 60 chars after the prefix
134
+ - Optional ticket form: `prefix/PROJ-123-short-desc`
135
+ - Projects may override via `compliance.branching` in `harness.config.json`
136
+ (`prefixes`, `enforceKebabCase`, `customRegex`, `ignore`, `maxLength`). If
137
+ `customRegex` is set, it fully replaces the prefix/kebab/length checks --
138
+ read the project config before suggesting a branch name.
139
+ - On a non-compliant branch, surface the suggested fix from `harness verify`
140
+ to the user and offer to rename (`git branch -m <new-name>`) before
141
+ continuing. Do not push or open a PR from a non-compliant branch.
142
+
143
+ ---
144
+
126
145
  ### Phase 4: REPORT -- Generate Gap Analysis and Remediation Plan
127
146
 
128
147
  1. **Score compliance posture per framework.** For each applicable framework:
@@ -123,6 +123,25 @@
123
123
 
124
124
  ---
125
125
 
126
+ ### Phase 3.5: INTERNAL COMPLIANCE -- Project Conventions
127
+
128
+ 1. **Verify branch naming convention.** Before creating a branch and again before
129
+ opening a PR, run `harness verify` (or `harness verify --json` for parsable
130
+ output) and act on the result -- do not just describe the rule to the user.
131
+ - Default prefixes: `feat/`, `fix/`, `chore/`, `docs/`, `refactor/`, `test/`, `perf/`
132
+ - Default slug format: strict `kebab-case` (lowercase, single hyphens, no
133
+ leading/trailing hyphen), max 60 chars after the prefix
134
+ - Optional ticket form: `prefix/PROJ-123-short-desc`
135
+ - Projects may override via `compliance.branching` in `harness.config.json`
136
+ (`prefixes`, `enforceKebabCase`, `customRegex`, `ignore`, `maxLength`). If
137
+ `customRegex` is set, it fully replaces the prefix/kebab/length checks --
138
+ read the project config before suggesting a branch name.
139
+ - On a non-compliant branch, surface the suggested fix from `harness verify`
140
+ to the user and offer to rename (`git branch -m <new-name>`) before
141
+ continuing. Do not push or open a PR from a non-compliant branch.
142
+
143
+ ---
144
+
126
145
  ### Phase 4: REPORT -- Generate Gap Analysis and Remediation Plan
127
146
 
128
147
  1. **Score compliance posture per framework.** For each applicable framework:
@@ -123,6 +123,25 @@
123
123
 
124
124
  ---
125
125
 
126
+ ### Phase 3.5: INTERNAL COMPLIANCE -- Project Conventions
127
+
128
+ 1. **Verify branch naming convention.** Before creating a branch and again before
129
+ opening a PR, run `harness verify` (or `harness verify --json` for parsable
130
+ output) and act on the result -- do not just describe the rule to the user.
131
+ - Default prefixes: `feat/`, `fix/`, `chore/`, `docs/`, `refactor/`, `test/`, `perf/`
132
+ - Default slug format: strict `kebab-case` (lowercase, single hyphens, no
133
+ leading/trailing hyphen), max 60 chars after the prefix
134
+ - Optional ticket form: `prefix/PROJ-123-short-desc`
135
+ - Projects may override via `compliance.branching` in `harness.config.json`
136
+ (`prefixes`, `enforceKebabCase`, `customRegex`, `ignore`, `maxLength`). If
137
+ `customRegex` is set, it fully replaces the prefix/kebab/length checks --
138
+ read the project config before suggesting a branch name.
139
+ - On a non-compliant branch, surface the suggested fix from `harness verify`
140
+ to the user and offer to rename (`git branch -m <new-name>`) before
141
+ continuing. Do not push or open a PR from a non-compliant branch.
142
+
143
+ ---
144
+
126
145
  ### Phase 4: REPORT -- Generate Gap Analysis and Remediation Plan
127
146
 
128
147
  1. **Score compliance posture per framework.** For each applicable framework:
@@ -123,6 +123,25 @@
123
123
 
124
124
  ---
125
125
 
126
+ ### Phase 3.5: INTERNAL COMPLIANCE -- Project Conventions
127
+
128
+ 1. **Verify branch naming convention.** Before creating a branch and again before
129
+ opening a PR, run `harness verify` (or `harness verify --json` for parsable
130
+ output) and act on the result -- do not just describe the rule to the user.
131
+ - Default prefixes: `feat/`, `fix/`, `chore/`, `docs/`, `refactor/`, `test/`, `perf/`
132
+ - Default slug format: strict `kebab-case` (lowercase, single hyphens, no
133
+ leading/trailing hyphen), max 60 chars after the prefix
134
+ - Optional ticket form: `prefix/PROJ-123-short-desc`
135
+ - Projects may override via `compliance.branching` in `harness.config.json`
136
+ (`prefixes`, `enforceKebabCase`, `customRegex`, `ignore`, `maxLength`). If
137
+ `customRegex` is set, it fully replaces the prefix/kebab/length checks --
138
+ read the project config before suggesting a branch name.
139
+ - On a non-compliant branch, surface the suggested fix from `harness verify`
140
+ to the user and offer to rename (`git branch -m <new-name>`) before
141
+ continuing. Do not push or open a PR from a non-compliant branch.
142
+
143
+ ---
144
+
126
145
  ### Phase 4: REPORT -- Generate Gap Analysis and Remediation Plan
127
146
 
128
147
  1. **Score compliance posture per framework.** For each applicable framework:
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateAgentsMd
3
- } from "./chunk-IYA3NS5P.js";
4
- import "./chunk-YNG7BWGB.js";
3
+ } from "./chunk-FJJYQWUP.js";
4
+ import "./chunk-GDJ2MRYH.js";
5
5
  import "./chunk-RL4VMEXL.js";
6
6
  import "./chunk-XPRGWHBL.js";
7
7
  import "./chunk-KFQGP6VL.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  checkDependenciesDefinition,
3
3
  handleCheckDependencies
4
- } from "./chunk-J4MX5DIA.js";
5
- import "./chunk-2564TBT6.js";
4
+ } from "./chunk-NGCM4B4V.js";
5
+ import "./chunk-OFMQEUYN.js";
6
6
  import "./chunk-EPUKTTJZ.js";
7
7
  import "./chunk-W6Y7ZW3Y.js";
8
- import "./chunk-YNG7BWGB.js";
8
+ import "./chunk-GDJ2MRYH.js";
9
9
  import "./chunk-RL4VMEXL.js";
10
10
  import "./chunk-XPRGWHBL.js";
11
11
  import "./chunk-KFQGP6VL.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  assessProjectDefinition,
3
3
  handleAssessProject
4
- } from "./chunk-TIJXG4UB.js";
4
+ } from "./chunk-WY2J54IZ.js";
5
5
  import "./chunk-W6Y7ZW3Y.js";
6
6
  import "./chunk-KFQGP6VL.js";
7
7
  export {
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  startServer
4
- } from "../chunk-A36MGB3V.js";
5
- import "../chunk-LYMPKO6N.js";
6
- import "../chunk-TIJXG4UB.js";
4
+ } from "../chunk-Q43LM7CO.js";
5
+ import "../chunk-RZASDABE.js";
6
+ import "../chunk-WY2J54IZ.js";
7
7
  import "../chunk-IOW3MW2K.js";
8
- import "../chunk-R6GLLMRZ.js";
9
- import "../chunk-EMJFHTPZ.js";
8
+ import "../chunk-4XB37LST.js";
9
+ import "../chunk-GN2CSZC6.js";
10
10
  import "../chunk-TIQU5VY7.js";
11
- import "../chunk-QZ67TDLJ.js";
12
- import "../chunk-J4MX5DIA.js";
13
- import "../chunk-2564TBT6.js";
14
- import "../chunk-22OKI5QI.js";
15
- import "../chunk-YI6NTL72.js";
16
- import "../chunk-KJR4Z2YC.js";
11
+ import "../chunk-2L2A6W6I.js";
12
+ import "../chunk-NGCM4B4V.js";
13
+ import "../chunk-OFMQEUYN.js";
14
+ import "../chunk-MQRKPF46.js";
15
+ import "../chunk-27EHWQPK.js";
16
+ import "../chunk-U4XK4BB3.js";
17
17
  import "../chunk-EPUKTTJZ.js";
18
18
  import "../chunk-W6Y7ZW3Y.js";
19
19
  import "../chunk-27AJKSQY.js";
20
- import "../chunk-DBJC4ULT.js";
20
+ import "../chunk-KPWUZSHL.js";
21
21
  import "../chunk-3ISINLYT.js";
22
22
  import "../chunk-6B6UN6SG.js";
23
23
  import "../chunk-ZCZD7FHU.js";
24
- import "../chunk-YNG7BWGB.js";
24
+ import "../chunk-GDJ2MRYH.js";
25
25
  import "../chunk-RL4VMEXL.js";
26
26
  import "../chunk-XPRGWHBL.js";
27
27
  import "../chunk-HIK6OEUF.js";
@@ -3,43 +3,43 @@ import {
3
3
  createProgram,
4
4
  installCommandTelemetry,
5
5
  printFirstRunWelcome
6
- } from "../chunk-N6DVSOLZ.js";
7
- import "../chunk-WMZKZCCE.js";
8
- import "../chunk-IYA3NS5P.js";
9
- import "../chunk-DHWFOHPX.js";
10
- import "../chunk-T2ZMHXCX.js";
11
- import "../chunk-JMACX5FN.js";
6
+ } from "../chunk-TCR5PKMU.js";
7
+ import "../chunk-TVJZX53C.js";
8
+ import "../chunk-FJJYQWUP.js";
9
+ import "../chunk-DJRRTZGD.js";
10
+ import "../chunk-MSBVH6ER.js";
11
+ import "../chunk-54JTO4NZ.js";
12
12
  import "../chunk-CQ553GZO.js";
13
13
  import "../chunk-GISMXMVL.js";
14
14
  import "../chunk-WWACIIBA.js";
15
15
  import "../chunk-TEFCFC4H.js";
16
- import "../chunk-U2SF3KAQ.js";
17
- import "../chunk-LBYGGNEZ.js";
16
+ import "../chunk-5YOHXTK3.js";
17
+ import "../chunk-RYVL76ZF.js";
18
18
  import "../chunk-KET4QQZB.js";
19
- import "../chunk-KT5PWWWO.js";
19
+ import "../chunk-JGPOQJ73.js";
20
20
  import "../chunk-7BNK4M23.js";
21
21
  import {
22
22
  dispatchSkillsFromGit
23
- } from "../chunk-A36MGB3V.js";
24
- import "../chunk-LYMPKO6N.js";
25
- import "../chunk-TIJXG4UB.js";
23
+ } from "../chunk-Q43LM7CO.js";
24
+ import "../chunk-RZASDABE.js";
25
+ import "../chunk-WY2J54IZ.js";
26
26
  import "../chunk-IOW3MW2K.js";
27
- import "../chunk-R6GLLMRZ.js";
28
- import "../chunk-EMJFHTPZ.js";
27
+ import "../chunk-4XB37LST.js";
28
+ import "../chunk-GN2CSZC6.js";
29
29
  import "../chunk-TIQU5VY7.js";
30
- import "../chunk-QZ67TDLJ.js";
31
- import "../chunk-J4MX5DIA.js";
32
- import "../chunk-2564TBT6.js";
33
- import "../chunk-22OKI5QI.js";
34
- import "../chunk-YI6NTL72.js";
35
- import "../chunk-KJR4Z2YC.js";
30
+ import "../chunk-2L2A6W6I.js";
31
+ import "../chunk-NGCM4B4V.js";
32
+ import "../chunk-OFMQEUYN.js";
33
+ import "../chunk-MQRKPF46.js";
34
+ import "../chunk-27EHWQPK.js";
35
+ import "../chunk-U4XK4BB3.js";
36
36
  import "../chunk-EPUKTTJZ.js";
37
37
  import "../chunk-W6Y7ZW3Y.js";
38
38
  import "../chunk-27AJKSQY.js";
39
39
  import {
40
40
  findConfigFile,
41
41
  loadConfig
42
- } from "../chunk-DBJC4ULT.js";
42
+ } from "../chunk-KPWUZSHL.js";
43
43
  import "../chunk-3ISINLYT.js";
44
44
  import "../chunk-6B6UN6SG.js";
45
45
  import "../chunk-ZCZD7FHU.js";
@@ -53,7 +53,7 @@ import {
53
53
  readCheckState,
54
54
  shouldRunCheck,
55
55
  spawnBackgroundCheck
56
- } from "../chunk-YNG7BWGB.js";
56
+ } from "../chunk-GDJ2MRYH.js";
57
57
  import "../chunk-RL4VMEXL.js";
58
58
  import "../chunk-XPRGWHBL.js";
59
59
  import "../chunk-ZP5E7YET.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  createCheckPhaseGateCommand,
3
3
  runCheckPhaseGate
4
- } from "./chunk-U2SF3KAQ.js";
5
- import "./chunk-DBJC4ULT.js";
4
+ } from "./chunk-5YOHXTK3.js";
5
+ import "./chunk-KPWUZSHL.js";
6
6
  import "./chunk-ZCZD7FHU.js";
7
- import "./chunk-YNG7BWGB.js";
7
+ import "./chunk-GDJ2MRYH.js";
8
8
  import "./chunk-RL4VMEXL.js";
9
9
  import "./chunk-XPRGWHBL.js";
10
10
  import "./chunk-EBJQ6N4M.js";
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-W6Y7ZW3Y.js";
7
7
  import {
8
8
  init_dist
9
- } from "./chunk-YNG7BWGB.js";
9
+ } from "./chunk-GDJ2MRYH.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-ZS3Y3YWP.js");
130
+ const { EntropyAnalyzer } = await import("./dist-ZJGFXGIB.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-ZS3Y3YWP.js");
149
+ const { createFixes, applyFixes, generateSuggestions } = await import("./dist-ZJGFXGIB.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
  resolveProjectConfig
3
- } from "./chunk-2564TBT6.js";
3
+ } from "./chunk-OFMQEUYN.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-ZS3Y3YWP.js");
52
+ const core = await import("./dist-ZJGFXGIB.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-ZS3Y3YWP.js");
71
+ const core = await import("./dist-ZJGFXGIB.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);
@@ -33,7 +33,7 @@ var createSelfReviewDefinition = {
33
33
  };
34
34
  async function handleCreateSelfReview(input) {
35
35
  try {
36
- const { parseDiff, createSelfReview } = await import("./dist-ZS3Y3YWP.js");
36
+ const { parseDiff, createSelfReview } = await import("./dist-ZJGFXGIB.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-ZS3Y3YWP.js");
122
+ const { parseDiff, analyzeDiff } = await import("./dist-ZJGFXGIB.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-ZS3Y3YWP.js");
198
+ const { parseDiff, requestPeerReview } = await import("./dist-ZJGFXGIB.js");
199
199
  const parseResult = parseDiff(input.diff);
200
200
  if (!parseResult.ok) {
201
201
  return resultToMcpResponse(parseResult);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-YNG7BWGB.js";
3
+ } from "./chunk-GDJ2MRYH.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  resolveConfig
3
- } from "./chunk-DBJC4ULT.js";
3
+ } from "./chunk-KPWUZSHL.js";
4
4
  import {
5
5
  init_dist
6
- } from "./chunk-YNG7BWGB.js";
6
+ } from "./chunk-GDJ2MRYH.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-YNG7BWGB.js";
3
+ } from "./chunk-GDJ2MRYH.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-YNG7BWGB.js";
3
+ } from "./chunk-GDJ2MRYH.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
@@ -3263,6 +3263,7 @@ __export(dist_exports, {
3263
3263
  validateAgentConfigs: () => validateAgentConfigs,
3264
3264
  validateAgentsMap: () => validateAgentsMap,
3265
3265
  validateBoundaries: () => validateBoundaries,
3266
+ validateBranchName: () => validateBranchName,
3266
3267
  validateCommitMessage: () => validateCommitMessage,
3267
3268
  validateConfig: () => validateConfig,
3268
3269
  validateDependencies: () => validateDependencies,
@@ -3320,6 +3321,7 @@ import { join as join12 } from "path";
3320
3321
  import * as fs3 from "fs";
3321
3322
  import * as path3 from "path";
3322
3323
  import { minimatch as minimatch2 } from "minimatch";
3324
+ import { minimatch as minimatch22 } from "minimatch";
3323
3325
  import { basename as basename2 } from "path";
3324
3326
  import { join as join14, basename as basename3 } from "path";
3325
3327
  import { basename as basename4, dirname as dirname42 } from "path";
@@ -3327,11 +3329,11 @@ import { z as z3 } from "zod";
3327
3329
  import * as fs4 from "fs/promises";
3328
3330
  import * as fs5 from "fs/promises";
3329
3331
  import { resolve as resolve5 } from "path";
3330
- import { minimatch as minimatch22 } from "minimatch";
3332
+ import { minimatch as minimatch3 } from "minimatch";
3331
3333
  import { join as join15, resolve as resolve42 } from "path";
3332
3334
  import { dirname as dirname5, resolve as resolve6 } from "path";
3333
3335
  import { dirname as dirname6, extname as extname2, resolve as resolve7 } from "path";
3334
- import { minimatch as minimatch3 } from "minimatch";
3336
+ import { minimatch as minimatch4 } from "minimatch";
3335
3337
  import { readdirSync, statSync as statSync2 } from "fs";
3336
3338
  import { join as join16 } from "path";
3337
3339
  import * as fs6 from "fs";
@@ -3396,7 +3398,7 @@ import * as fs26 from "fs";
3396
3398
  import * as path23 from "path";
3397
3399
  import { z as z9 } from "zod";
3398
3400
  import * as fs28 from "fs/promises";
3399
- import { minimatch as minimatch4 } from "minimatch";
3401
+ import { minimatch as minimatch5 } from "minimatch";
3400
3402
  import { z as z10 } from "zod";
3401
3403
  import * as fs27 from "fs";
3402
3404
  import * as path24 from "path";
@@ -4807,6 +4809,75 @@ function validateRoadmapMode(config, projectRoot) {
4807
4809
  }
4808
4810
  return Ok(void 0);
4809
4811
  }
4812
+ function validateBranchName(branchName, config) {
4813
+ for (const pattern of config.ignore) {
4814
+ if (minimatch2(branchName, pattern)) {
4815
+ return { valid: true, branchName };
4816
+ }
4817
+ }
4818
+ if (config.customRegex) {
4819
+ const regex = new RegExp(config.customRegex);
4820
+ if (!regex.test(branchName)) {
4821
+ return {
4822
+ valid: false,
4823
+ branchName,
4824
+ message: `Branch name "${branchName}" does not match the custom regex: ${config.customRegex}`
4825
+ };
4826
+ }
4827
+ return { valid: true, branchName };
4828
+ }
4829
+ const parts = branchName.split("/");
4830
+ if (parts.length < 2) {
4831
+ return {
4832
+ valid: false,
4833
+ branchName,
4834
+ message: `Branch name "${branchName}" must have a prefix followed by a slash (e.g., "feat/my-feature").`,
4835
+ suggestion: `Try renaming to "feat/${branchName}" or "fix/${branchName}".`
4836
+ };
4837
+ }
4838
+ const prefix = parts[0];
4839
+ const slug = parts.slice(1).join("/");
4840
+ if (!config.prefixes.includes(prefix)) {
4841
+ return {
4842
+ valid: false,
4843
+ branchName,
4844
+ message: `Prefix "${prefix}" is not allowed.`,
4845
+ suggestion: `Allowed prefixes: ${config.prefixes.join(", ")}.`
4846
+ };
4847
+ }
4848
+ if (config.enforceKebabCase) {
4849
+ for (const part of slug.split("/")) {
4850
+ const ticketMatch = part.match(TICKET_ID);
4851
+ if (ticketMatch) {
4852
+ const rest = ticketMatch[2];
4853
+ if (rest && !KEBAB_CASE.test(rest)) {
4854
+ return {
4855
+ valid: false,
4856
+ branchName,
4857
+ message: `Branch slug part "${part}" does not follow kebab-case after the ticket ID.`,
4858
+ suggestion: `Ensure the description after "${ticketMatch[1]}" uses kebab-case (lowercase, single hyphens, no leading/trailing hyphen).`
4859
+ };
4860
+ }
4861
+ } else if (!KEBAB_CASE.test(part)) {
4862
+ return {
4863
+ valid: false,
4864
+ branchName,
4865
+ message: `Branch slug part "${part}" must be in kebab-case (lowercase, single hyphens, no leading/trailing hyphen).`,
4866
+ suggestion: `Change "${part}" to match the convention.`
4867
+ };
4868
+ }
4869
+ }
4870
+ }
4871
+ if (typeof config.maxLength === "number" && config.maxLength > 0 && slug.length > config.maxLength) {
4872
+ return {
4873
+ valid: false,
4874
+ branchName,
4875
+ message: `Branch slug is ${slug.length} characters; max allowed is ${config.maxLength}.`,
4876
+ suggestion: `Shorten the description after "${prefix}/" to ${config.maxLength} characters or fewer.`
4877
+ };
4878
+ }
4879
+ return { valid: true, branchName };
4880
+ }
4810
4881
  function determineImportance(filePath) {
4811
4882
  const name = basename2(filePath).toLowerCase();
4812
4883
  if (name === "index.ts" || name === "index.js" || name === "main.ts") {
@@ -4848,7 +4919,7 @@ async function checkDocCoverage(domain, options = {}) {
4848
4919
  const filteredSourceFiles = sourceFiles.filter((file) => {
4849
4920
  const relativePath = relativePosix(sourceDir, file);
4850
4921
  return !excludePatterns.some((pattern) => {
4851
- return minimatch2(relativePath, pattern, { dot: true }) || minimatch2(file, pattern, { dot: true });
4922
+ return minimatch22(relativePath, pattern, { dot: true }) || minimatch22(file, pattern, { dot: true });
4852
4923
  });
4853
4924
  });
4854
4925
  const docFiles = await findFiles("**/*.md", docsDir);
@@ -6293,7 +6364,7 @@ async function buildSnapshot2(config) {
6293
6364
  }
6294
6365
  sourceFilePaths = sourceFilePaths.filter((f) => {
6295
6366
  const rel = relativePosix(rootDir, f);
6296
- return !excludePatterns.some((p) => minimatch22(rel, p));
6367
+ return !excludePatterns.some((p) => minimatch3(rel, p));
6297
6368
  });
6298
6369
  const files = [];
6299
6370
  for (const filePath of sourceFilePaths) {
@@ -6884,7 +6955,7 @@ async function detectDeadCode(snapshot, graphDeadCodeData, protectedRegions) {
6884
6955
  }
6885
6956
  function fileMatchesPattern(filePath, pattern, rootDir) {
6886
6957
  const relativePath = relativePosix(rootDir, filePath);
6887
- return minimatch3(relativePath, pattern);
6958
+ return minimatch4(relativePath, pattern);
6888
6959
  }
6889
6960
  function checkMustExport(rule, file, message) {
6890
6961
  if (rule.type !== "must-export") return [];
@@ -15596,7 +15667,7 @@ function assembleCandidateReport(input) {
15596
15667
  }
15597
15668
  return lines.join("\n");
15598
15669
  }
15599
- var WHATWG_BAD_PORTS, BAD_PORT_SET, VALID_TYPES, CONVENTIONAL_PATTERN, LOOKBACK_PATTERN, PulseDbSourceSchema, PulseSourcesSchema, PulseConfigSchema, BUG_TRACK_CATEGORIES, KNOWLEDGE_TRACK_CATEGORIES, ALL_SOLUTION_CATEGORIES, ISO_DATE, 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, 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, TS_HINTS, TS_CONVENTIONS, PYTHON_HINTS, PYTHON_CONVENTIONS, DEFAULT_INCLUDE_PATTERNS, CODE_BLOCK_LANGUAGES, DEFAULT_DRIFT_CONFIG, JS_EXT_FALLBACKS2, FILE_TYPES, EXPORT_TYPES, CONVENTION_DESCRIPTIONS, RULE_CHECKERS, EntropyAnalyzer, readFile62, 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, CategorySnapshotSchema, TimelineSnapshotSchema, TimelineFileSchema, TrendLineSchema, TrendResultSchema, DEFAULT_STABILITY_THRESHOLDS, ALL_CATEGORIES, TimelineManager, ConfidenceTierSchema, RegressionResultSchema, DirectionSchema, CategoryForecastSchema, SpecImpactSignalsSchema, SpecImpactEstimateSchema, ContributingFeatureSchema, AdjustedForecastSchema, PredictionWarningSchema, StabilityForecastSchema, PredictionResultSchema, PredictionOptionsSchema, VALID_STATUSES, EM_DASH, VALID_PRIORITIES, ALL_CATEGORIES2, 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, StreamInfoSchema, StreamIndexSchema, DEFAULT_STREAM_INDEX, 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, EVENTS_FILE, STREAMS_DIR, STREAM_NAME_REGEX, branchCache, BRANCH_CACHE_TTL_MS, STATE_FILES, MAX_CACHE_ENTRIES, learningsCacheMap, WEIGHTS, LOCK_RETRIES, LOCK_BACKOFFS, PROMOTABLE_OUTCOMES, failuresCacheMap, FAILURE_LINE_REGEX, SAFE_GATE_COMMAND, SkillEventSchema, knownHashesCache, EVENT_FORMATTERS, RuleRegistry, DEFAULT_SECURITY_CONFIG, RuleOverrideSchema, SecurityConfigSchema, secretRules, injectionRules, xssRules, cryptoRules, pathTraversalRules, networkRules, deserializationRules, agentConfigRules, mcpRules, insecureDefaultsRules, sharpEdgesRules, nodeRules, expressRules, reactRules, goRules, SecurityScanner, 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_FALLBACKS22, 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, AGENT_DESCRIPTORS, AGENT_RUNNERS, 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, EM_DASH2, STATUS_RANK, 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, migrate_exports, HASH_RE, 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, 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, CompoundLockHeldError, KNOWN_CATEGORIES, 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;
15670
+ var WHATWG_BAD_PORTS, BAD_PORT_SET, VALID_TYPES, CONVENTIONAL_PATTERN, LOOKBACK_PATTERN, PulseDbSourceSchema, PulseSourcesSchema, PulseConfigSchema, BUG_TRACK_CATEGORIES, KNOWLEDGE_TRACK_CATEGORIES, ALL_SOLUTION_CATEGORIES, ISO_DATE, 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, 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, TS_HINTS, TS_CONVENTIONS, PYTHON_HINTS, PYTHON_CONVENTIONS, DEFAULT_INCLUDE_PATTERNS, CODE_BLOCK_LANGUAGES, DEFAULT_DRIFT_CONFIG, JS_EXT_FALLBACKS2, FILE_TYPES, EXPORT_TYPES, CONVENTION_DESCRIPTIONS, RULE_CHECKERS, EntropyAnalyzer, readFile62, 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, CategorySnapshotSchema, TimelineSnapshotSchema, TimelineFileSchema, TrendLineSchema, TrendResultSchema, DEFAULT_STABILITY_THRESHOLDS, ALL_CATEGORIES, TimelineManager, ConfidenceTierSchema, RegressionResultSchema, DirectionSchema, CategoryForecastSchema, SpecImpactSignalsSchema, SpecImpactEstimateSchema, ContributingFeatureSchema, AdjustedForecastSchema, PredictionWarningSchema, StabilityForecastSchema, PredictionResultSchema, PredictionOptionsSchema, VALID_STATUSES, EM_DASH, VALID_PRIORITIES, ALL_CATEGORIES2, 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, StreamInfoSchema, StreamIndexSchema, DEFAULT_STREAM_INDEX, 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, EVENTS_FILE, STREAMS_DIR, STREAM_NAME_REGEX, branchCache, BRANCH_CACHE_TTL_MS, STATE_FILES, MAX_CACHE_ENTRIES, learningsCacheMap, WEIGHTS, LOCK_RETRIES, LOCK_BACKOFFS, PROMOTABLE_OUTCOMES, failuresCacheMap, FAILURE_LINE_REGEX, SAFE_GATE_COMMAND, SkillEventSchema, knownHashesCache, EVENT_FORMATTERS, RuleRegistry, DEFAULT_SECURITY_CONFIG, RuleOverrideSchema, SecurityConfigSchema, secretRules, injectionRules, xssRules, cryptoRules, pathTraversalRules, networkRules, deserializationRules, agentConfigRules, mcpRules, insecureDefaultsRules, sharpEdgesRules, nodeRules, expressRules, reactRules, goRules, SecurityScanner, 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_FALLBACKS22, 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, AGENT_DESCRIPTORS, AGENT_RUNNERS, 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, EM_DASH2, STATUS_RANK, 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, migrate_exports, HASH_RE, 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, 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, CompoundLockHeldError, KNOWN_CATEGORIES, 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;
15600
15671
  var init_dist3 = __esm({
15601
15672
  "../core/dist/index.mjs"() {
15602
15673
  init_chunk_4UI65RLE();
@@ -15826,6 +15897,8 @@ var init_dist3 = __esm({
15826
15897
  "kiro",
15827
15898
  "windsurf"
15828
15899
  ]);
15900
+ KEBAB_CASE = /^[a-z0-9]+(-[a-z0-9]+)*$/;
15901
+ TICKET_ID = /^([A-Z0-9]+-[0-9]+)-(.*)$/;
15829
15902
  DEFAULT_SECTIONS = [
15830
15903
  {
15831
15904
  name: "Documentation",
@@ -19005,7 +19078,7 @@ var init_dist3 = __esm({
19005
19078
  const applicableRules = this.activeRules.filter((rule) => {
19006
19079
  if (!rule.fileGlob) return true;
19007
19080
  const globs = rule.fileGlob.split(",").map((g) => g.trim());
19008
- return globs.some((glob5) => minimatch4(filePath, glob5, { dot: true }));
19081
+ return globs.some((glob5) => minimatch5(filePath, glob5, { dot: true }));
19009
19082
  });
19010
19083
  return this.scanLinesWithRules(lines, applicableRules, filePath, startLine);
19011
19084
  }
@@ -21637,6 +21710,7 @@ export {
21637
21710
  validateAgentConfigs,
21638
21711
  getRoadmapMode,
21639
21712
  validateRoadmapMode,
21713
+ validateBranchName,
21640
21714
  checkDocCoverage,
21641
21715
  validateKnowledgeMap,
21642
21716
  generateAgentsMap,
@@ -27,7 +27,7 @@ var runSecurityScanDefinition = {
27
27
  };
28
28
  async function handleRunSecurityScan(input) {
29
29
  try {
30
- const core = await import("./dist-ZS3Y3YWP.js");
30
+ const core = await import("./dist-ZJGFXGIB.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-ZS3Y3YWP.js");
117
+ const core = await import("./dist-ZJGFXGIB.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-YNG7BWGB.js";
3
+ } from "./chunk-GDJ2MRYH.js";
4
4
  import {
5
5
  Err,
6
6
  Ok