@harness-engineering/cli 3.1.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/dist/agents/personas/harness-pm.yaml +33 -0
  2. package/dist/agents/skills/claude-code/acceptance-eval/SKILL.md +92 -0
  3. package/dist/agents/skills/claude-code/acceptance-eval/skill.yaml +54 -0
  4. package/dist/agents/skills/claude-code/harness-brainstorming/SKILL.md +46 -38
  5. package/dist/agents/skills/claude-code/harness-brainstorming/skill.yaml +1 -0
  6. package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +10 -11
  7. package/dist/agents/skills/claude-code/harness-execution/SKILL.md +24 -26
  8. package/dist/agents/skills/claude-code/harness-integration/SKILL.md +21 -19
  9. package/dist/agents/skills/claude-code/harness-maintenance-pipeline/SKILL.md +173 -0
  10. package/dist/agents/skills/claude-code/harness-maintenance-pipeline/skill.yaml +43 -0
  11. package/dist/agents/skills/claude-code/harness-onboarding/SKILL.md +2 -0
  12. package/dist/agents/skills/claude-code/harness-planning/SKILL.md +17 -40
  13. package/dist/agents/skills/claude-code/harness-pulse/SKILL.md +1 -1
  14. package/dist/agents/skills/claude-code/harness-roadmap/SKILL.md +17 -0
  15. package/dist/agents/skills/claude-code/harness-roadmap-pilot/SKILL.md +8 -0
  16. package/dist/agents/skills/claude-code/harness-verification/SKILL.md +9 -12
  17. package/dist/agents/skills/claude-code/initialize-harness-project/SKILL.md +112 -126
  18. package/dist/agents/skills/claude-code/outcome-eval/SKILL.md +1 -0
  19. package/dist/agents/skills/claude-code/product-advisor/SKILL.md +202 -0
  20. package/dist/agents/skills/claude-code/product-advisor/skill.yaml +74 -0
  21. package/dist/agents/skills/codex/acceptance-eval/SKILL.md +92 -0
  22. package/dist/agents/skills/codex/acceptance-eval/skill.yaml +54 -0
  23. package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +46 -38
  24. package/dist/agents/skills/codex/harness-brainstorming/skill.yaml +1 -0
  25. package/dist/agents/skills/codex/harness-code-review/SKILL.md +10 -11
  26. package/dist/agents/skills/codex/harness-execution/SKILL.md +24 -26
  27. package/dist/agents/skills/codex/harness-integration/SKILL.md +21 -19
  28. package/dist/agents/skills/codex/harness-maintenance-pipeline/SKILL.md +173 -0
  29. package/dist/agents/skills/codex/harness-maintenance-pipeline/skill.yaml +43 -0
  30. package/dist/agents/skills/codex/harness-onboarding/SKILL.md +2 -0
  31. package/dist/agents/skills/codex/harness-planning/SKILL.md +17 -40
  32. package/dist/agents/skills/codex/harness-pulse/SKILL.md +1 -1
  33. package/dist/agents/skills/codex/harness-roadmap/SKILL.md +17 -0
  34. package/dist/agents/skills/codex/harness-roadmap-pilot/SKILL.md +8 -0
  35. package/dist/agents/skills/codex/harness-verification/SKILL.md +9 -12
  36. package/dist/agents/skills/codex/initialize-harness-project/SKILL.md +112 -126
  37. package/dist/agents/skills/codex/outcome-eval/SKILL.md +1 -0
  38. package/dist/agents/skills/codex/product-advisor/SKILL.md +202 -0
  39. package/dist/agents/skills/codex/product-advisor/skill.yaml +74 -0
  40. package/dist/agents/skills/cursor/acceptance-eval/SKILL.md +92 -0
  41. package/dist/agents/skills/cursor/acceptance-eval/skill.yaml +54 -0
  42. package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +46 -38
  43. package/dist/agents/skills/cursor/harness-brainstorming/skill.yaml +1 -0
  44. package/dist/agents/skills/cursor/harness-code-review/SKILL.md +10 -11
  45. package/dist/agents/skills/cursor/harness-execution/SKILL.md +24 -26
  46. package/dist/agents/skills/cursor/harness-integration/SKILL.md +21 -19
  47. package/dist/agents/skills/cursor/harness-maintenance-pipeline/SKILL.md +173 -0
  48. package/dist/agents/skills/cursor/harness-maintenance-pipeline/skill.yaml +43 -0
  49. package/dist/agents/skills/cursor/harness-onboarding/SKILL.md +2 -0
  50. package/dist/agents/skills/cursor/harness-planning/SKILL.md +17 -40
  51. package/dist/agents/skills/cursor/harness-pulse/SKILL.md +1 -1
  52. package/dist/agents/skills/cursor/harness-roadmap/SKILL.md +17 -0
  53. package/dist/agents/skills/cursor/harness-roadmap-pilot/SKILL.md +8 -0
  54. package/dist/agents/skills/cursor/harness-verification/SKILL.md +9 -12
  55. package/dist/agents/skills/cursor/initialize-harness-project/SKILL.md +112 -126
  56. package/dist/agents/skills/cursor/outcome-eval/SKILL.md +1 -0
  57. package/dist/agents/skills/cursor/product-advisor/SKILL.md +202 -0
  58. package/dist/agents/skills/cursor/product-advisor/skill.yaml +74 -0
  59. package/dist/agents/skills/gemini-cli/acceptance-eval/SKILL.md +92 -0
  60. package/dist/agents/skills/gemini-cli/acceptance-eval/skill.yaml +54 -0
  61. package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +46 -38
  62. package/dist/agents/skills/gemini-cli/harness-brainstorming/skill.yaml +1 -0
  63. package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +10 -11
  64. package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +24 -26
  65. package/dist/agents/skills/gemini-cli/harness-integration/SKILL.md +21 -19
  66. package/dist/agents/skills/gemini-cli/harness-maintenance-pipeline/SKILL.md +173 -0
  67. package/dist/agents/skills/gemini-cli/harness-maintenance-pipeline/skill.yaml +43 -0
  68. package/dist/agents/skills/gemini-cli/harness-onboarding/SKILL.md +2 -0
  69. package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +17 -40
  70. package/dist/agents/skills/gemini-cli/harness-pulse/SKILL.md +1 -1
  71. package/dist/agents/skills/gemini-cli/harness-roadmap/SKILL.md +17 -0
  72. package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/SKILL.md +8 -0
  73. package/dist/agents/skills/gemini-cli/harness-verification/SKILL.md +9 -12
  74. package/dist/agents/skills/gemini-cli/initialize-harness-project/SKILL.md +112 -126
  75. package/dist/agents/skills/gemini-cli/outcome-eval/SKILL.md +1 -0
  76. package/dist/agents/skills/gemini-cli/product-advisor/SKILL.md +202 -0
  77. package/dist/agents/skills/gemini-cli/product-advisor/skill.yaml +74 -0
  78. package/dist/agents/skills/tests/interaction-channel.test.ts +64 -0
  79. package/dist/{agents-md-YYCLGMBF.js → agents-md-VJLYEH2S.js} +4 -4
  80. package/dist/{analyzer-V633GUHY-MBCQWKDU.js → analyzer-V633GUHY-OV335HGM.js} +2 -2
  81. package/dist/{architecture-5KPP4ID4.js → architecture-YQH2NYXY.js} +5 -5
  82. package/dist/{assess-project-B6ENHUAU.js → assess-project-KOTAPAHD.js} +1 -1
  83. package/dist/bin/harness-mcp.js +19 -18
  84. package/dist/bin/harness.js +31 -29
  85. package/dist/{check-phase-gate-REG3HWYC.js → check-phase-gate-CHU2E3OU.js} +6 -5
  86. package/dist/{chunk-UBTMPO5H.js → chunk-36GQREOE.js} +3 -3
  87. package/dist/{chunk-CLI4K2CH.js → chunk-4U5LDFCY.js} +1 -1
  88. package/dist/{chunk-IF3JK3G5.js → chunk-4VXFZSYF.js} +1 -1
  89. package/dist/{chunk-TE5YHHHZ.js → chunk-5RSXUAMN.js} +1 -1
  90. package/dist/{chunk-YF3AY6KS.js → chunk-6SCYTIF4.js} +6 -6
  91. package/dist/{chunk-N55WOGN3.js → chunk-6YFHUIGT.js} +1 -1
  92. package/dist/{chunk-RGQXHCCH.js → chunk-7PJCK7UE.js} +8 -8
  93. package/dist/{chunk-LMZ2JTNP.js → chunk-7TIJXWG3.js} +5 -9
  94. package/dist/chunk-AAUY53CC.js +61 -0
  95. package/dist/{chunk-XEOSSKIB.js → chunk-AX5KGRM6.js} +48 -4
  96. package/dist/{chunk-FUH4J43G.js → chunk-E5EW5HVJ.js} +2 -2
  97. package/dist/{chunk-C2ZGWMTN.js → chunk-EYMOPFSD.js} +2 -2
  98. package/dist/{chunk-FL5SLUKZ.js → chunk-GHBFNLV2.js} +2374 -1095
  99. package/dist/{chunk-HIPBU2Q4.js → chunk-I3CGCZJF.js} +9 -9
  100. package/dist/{chunk-OQFEFVIN.js → chunk-JPVOI7GP.js} +7 -7
  101. package/dist/{chunk-DNX35Q5K.js → chunk-M7F2PPN3.js} +3 -3
  102. package/dist/{chunk-A65QO5KN.js → chunk-MMLQPHZ5.js} +3032 -1166
  103. package/dist/{chunk-ERZCC5VH.js → chunk-OQ6KOQEV.js} +9 -9
  104. package/dist/{chunk-ZOUJP3EY.js → chunk-RG3TNIUB.js} +1659 -808
  105. package/dist/{chunk-PZX2Y3RV.js → chunk-SDMV4QHM.js} +5 -5
  106. package/dist/{chunk-XZ2Q4UTW.js → chunk-SEA2PFVI.js} +1 -1
  107. package/dist/{chunk-TCVQVHEF.js → chunk-T746REAE.js} +1 -1
  108. package/dist/{chunk-6B6UN6SG.js → chunk-UTJJJDNN.js} +11 -1
  109. package/dist/{chunk-BXKNWSG4.js → chunk-UWVMJEUJ.js} +1 -1
  110. package/dist/{chunk-WWACIIBA.js → chunk-V3ZQUCRH.js} +1 -1
  111. package/dist/{chunk-27AJKSQY.js → chunk-WBVCN35T.js} +1 -1
  112. package/dist/{chunk-PP6ZRL5T.js → chunk-WZJR6SOI.js} +536 -422
  113. package/dist/{chunk-YQAFKOOL.js → chunk-XAVMTAUT.js} +2 -2
  114. package/dist/chunk-Y6SUQC32.js +9 -0
  115. package/dist/{chunk-ZRKFDE6M.js → chunk-YANR2RL7.js} +1 -1
  116. package/dist/{chunk-2N4OENGE.js → chunk-YYFSFSB3.js} +1 -1
  117. package/dist/{ci-workflow-JEYYCBOC.js → ci-workflow-HO4WKGNG.js} +4 -4
  118. package/dist/{dist-3HW4LCHE.js → dist-6D2F2J57.js} +73 -17
  119. package/dist/{dist-OWHMNL4W.js → dist-DWBTZXR5.js} +1 -1
  120. package/dist/{docs-YRMW7UED.js → docs-FP47JONV.js} +5 -5
  121. package/dist/{engine-E7H5U3AC.js → engine-YUA6IYOG.js} +4 -4
  122. package/dist/{entropy-3JBKCGJJ.js → entropy-DBW2INZU.js} +4 -4
  123. package/dist/{feedback-U6VJ6AUJ.js → feedback-BPHADTRQ.js} +1 -1
  124. package/dist/{generate-agent-definitions-S2FRZF4Y.js → generate-agent-definitions-KPVGBGDY.js} +6 -6
  125. package/dist/{glob-helper-GLZAURJC.js → glob-helper-VR6UCZZB.js} +1 -1
  126. package/dist/{graph-loader-HHXN5FLP.js → graph-loader-STFGYKZH.js} +1 -1
  127. package/dist/hooks/adoption-tracker.js +6 -5
  128. package/dist/hooks/protect-config.js +15 -5
  129. package/dist/{index-builder-3AOQ3ZII.js → index-builder-52IJJHJC.js} +2 -2
  130. package/dist/index.d.ts +8 -8
  131. package/dist/index.js +31 -29
  132. package/dist/{loader-RGQJYERV.js → loader-QOJQ6NZM.js} +4 -4
  133. package/dist/{mcp-NDTFZXWF.js → mcp-ZPX6O767.js} +21 -20
  134. package/dist/{performance-FPWKC4CN.js → performance-FXYTGJGQ.js} +5 -5
  135. package/dist/{review-pipeline-WUHG7PHO.js → review-pipeline-2TFQ5OAE.js} +4 -4
  136. package/dist/{runtime-Q3ORD7LW.js → runtime-XK6ZCHKE.js} +4 -4
  137. package/dist/{scan-P7YFKB77.js → scan-IYSVRPD2.js} +1 -1
  138. package/dist/{security-JDHTRBGC.js → security-4W2P5ZGI.js} +1 -1
  139. package/dist/{skill-executor-MOCUIAYS.js → skill-executor-BGUCAVBU.js} +2 -2
  140. package/dist/state-events-ECQAIZLU.js +25 -0
  141. package/dist/{validate-G3LKBOYA.js → validate-64KTEGIE.js} +5 -5
  142. package/dist/{validate-cross-check-4ITA72DF.js → validate-cross-check-J5PVGICB.js} +4 -4
  143. package/package.json +7 -7
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-A65QO5KN.js";
3
+ } from "./chunk-MMLQPHZ5.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
@@ -32,18 +32,62 @@ function buildGitHubTriggers(triggers) {
32
32
  }
33
33
  return on;
34
34
  }
35
+ function buildGitLabRules(triggers) {
36
+ const rules = [];
37
+ for (const trigger of triggers) {
38
+ switch (trigger.event) {
39
+ case "on_pr": {
40
+ const rule = {
41
+ if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
42
+ };
43
+ if (trigger.conditions?.paths) rule.changes = trigger.conditions.paths;
44
+ rules.push(rule);
45
+ break;
46
+ }
47
+ case "on_commit": {
48
+ const branches = trigger.conditions?.branches;
49
+ if (branches?.length) {
50
+ for (const branch of branches) rules.push({ if: `$CI_COMMIT_BRANCH == "${branch}"` });
51
+ } else {
52
+ rules.push({ if: '$CI_PIPELINE_SOURCE == "push"' });
53
+ }
54
+ break;
55
+ }
56
+ case "scheduled":
57
+ rules.push({ if: '$CI_PIPELINE_SOURCE == "schedule"' });
58
+ break;
59
+ }
60
+ }
61
+ return rules;
62
+ }
35
63
  function generateCIWorkflow(persona, platform) {
36
64
  try {
37
- if (platform === "gitlab") return Err(new Error("GitLab CI generation is not yet supported"));
38
65
  const severity = persona.config.severity;
66
+ const severityFlag = severity ? ` --severity ${severity}` : "";
67
+ const commandSteps = persona.steps.filter((s) => "command" in s);
68
+ if (platform === "gitlab") {
69
+ const script = commandSteps.map((step) => `npx harness ${step.command}${severityFlag}`);
70
+ const rules = buildGitLabRules(persona.triggers);
71
+ const enforce = {
72
+ image: "node:20",
73
+ ...rules.length ? { rules } : {},
74
+ before_script: ["corepack enable", "pnpm install --frozen-lockfile"],
75
+ // GitLab requires a non-empty `script`; fall back to a no-op when a
76
+ // persona has only skill steps (which CI cannot run).
77
+ script: script.length ? script : ['echo "No command steps to run in CI"']
78
+ };
79
+ const pipeline = {
80
+ workflow: { name: persona.name },
81
+ enforce
82
+ };
83
+ return Ok(YAML.stringify(pipeline, { lineWidth: 0 }));
84
+ }
39
85
  const steps = [
40
86
  { uses: "actions/checkout@v4" },
41
87
  { uses: "actions/setup-node@v4", with: { "node-version": "20" } },
42
88
  { uses: "pnpm/action-setup@v4", with: { run_install: "frozen" } }
43
89
  ];
44
- const commandSteps = persona.steps.filter((s) => "command" in s);
45
90
  for (const step of commandSteps) {
46
- const severityFlag = severity ? ` --severity ${severity}` : "";
47
91
  steps.push({ run: `npx harness ${step.command}${severityFlag}` });
48
92
  }
49
93
  const workflow = {
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  listPersonas,
6
6
  loadPersona
7
- } from "./chunk-TE5YHHHZ.js";
7
+ } from "./chunk-5RSXUAMN.js";
8
8
  import {
9
9
  GENERATED_HEADER_AGENT,
10
10
  VALID_PLATFORMS,
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  resolvePersonasDir,
16
16
  resolveSkillsDir
17
- } from "./chunk-6B6UN6SG.js";
17
+ } from "./chunk-UTJJJDNN.js";
18
18
  import {
19
19
  CLIError,
20
20
  ExitCode,
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  init_dist,
6
6
  paginate
7
- } from "./chunk-A65QO5KN.js";
7
+ } from "./chunk-MMLQPHZ5.js";
8
8
 
9
9
  // src/mcp/tools/review-pipeline.ts
10
10
  init_dist();
@@ -84,7 +84,7 @@ var runCodeReviewDefinition = {
84
84
  };
85
85
  async function handleRunCodeReview(input) {
86
86
  try {
87
- const { parseDiff, runReviewPipeline } = await import("./dist-3HW4LCHE.js");
87
+ const { parseDiff, runReviewPipeline } = await import("./dist-6D2F2J57.js");
88
88
  const parseResult = parseDiff(input.diff);
89
89
  if (!parseResult.ok) {
90
90
  return {