@harness-engineering/cli 2.1.0 → 2.2.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/initialize-harness-project/SKILL.md +168 -13
  2. package/dist/agents/skills/codex/initialize-harness-project/SKILL.md +168 -13
  3. package/dist/agents/skills/cursor/initialize-harness-project/SKILL.md +168 -13
  4. package/dist/agents/skills/gemini-cli/initialize-harness-project/SKILL.md +168 -13
  5. package/dist/{agents-md-XCAWON2D.js → agents-md-L4X4MOWT.js} +2 -2
  6. package/dist/{architecture-KERHEEQZ.js → architecture-WJRIYQ45.js} +3 -3
  7. package/dist/{assess-project-NPYA3UVI.js → assess-project-PHC2HO3V.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-GE5ALEEU.js → check-phase-gate-646KY67H.js} +3 -3
  11. package/dist/{chunk-IIX5OJES.js → chunk-224XKVLP.js} +1 -1
  12. package/dist/{chunk-UWIOBHZL.js → chunk-2QPHCR22.js} +5 -5
  13. package/dist/{chunk-URLDPALI.js → chunk-2ZURBWEV.js} +3 -3
  14. package/dist/{chunk-EFA4OEEN.js → chunk-36X7TRUI.js} +2 -2
  15. package/dist/{chunk-HBQ3BK2E.js → chunk-4HKVZO7R.js} +1 -1
  16. package/dist/{chunk-OXFFN3FD.js → chunk-CPYL6LJR.js} +1 -1
  17. package/dist/{chunk-WW6AUOA3.js → chunk-E7W3YOXL.js} +2 -2
  18. package/dist/{chunk-FQAJAM54.js → chunk-GOOTYTTV.js} +71 -29
  19. package/dist/{chunk-D5FE4L2O.js → chunk-JPWICLXQ.js} +1 -1
  20. package/dist/{chunk-MAFI6UWT.js → chunk-K4WRQTEF.js} +137 -39
  21. package/dist/{chunk-M4C3ZIGL.js → chunk-KV7A5OZT.js} +3 -3
  22. package/dist/{chunk-T7MNLCUD.js → chunk-L2IDE7WS.js} +122 -76
  23. package/dist/{chunk-4FVHBBPY.js → chunk-LO7ZLV7S.js} +1 -1
  24. package/dist/{chunk-GCYGGQFM.js → chunk-OJMO4JBQ.js} +61 -6
  25. package/dist/{chunk-PCX4GPNT.js → chunk-QTUPHTTK.js} +1 -1
  26. package/dist/{chunk-AEFZJ543.js → chunk-TNZYQTEE.js} +1 -1
  27. package/dist/{chunk-DRD7LLFC.js → chunk-VJQLUS5I.js} +1 -1
  28. package/dist/{chunk-LY2TY6NE.js → chunk-VKDBM3RX.js} +3 -3
  29. package/dist/{chunk-FBQYKH7R.js → chunk-W4AFGFFB.js} +2 -2
  30. package/dist/{chunk-YBGVZQQE.js → chunk-YLOAQZLA.js} +2 -2
  31. package/dist/{chunk-GHPWBWUW.js → chunk-YLTRFZAT.js} +6 -6
  32. package/dist/{chunk-RCHXBL2M.js → chunk-YWD6WXXM.js} +6 -6
  33. package/dist/{ci-workflow-A2E2RTOP.js → ci-workflow-TOS5X527.js} +2 -2
  34. package/dist/{dist-K22DQUYY.js → dist-6RT2AVYU.js} +1 -1
  35. package/dist/{docs-GXJOFVCF.js → docs-HOJMQYDZ.js} +3 -3
  36. package/dist/{engine-JBUIA2XO.js → engine-D6UYH6DB.js} +2 -2
  37. package/dist/{entropy-Y7LUT4BZ.js → entropy-LZ4IDGZR.js} +2 -2
  38. package/dist/{feedback-BHOBVKI3.js → feedback-WV7EQVK7.js} +1 -1
  39. package/dist/{generate-agent-definitions-VL3ZVR32.js → generate-agent-definitions-GFNXJCBY.js} +3 -3
  40. package/dist/index.d.ts +17 -8
  41. package/dist/index.js +22 -22
  42. package/dist/{loader-WCKVMDYR.js → loader-Z23JTXIZ.js} +2 -2
  43. package/dist/{mcp-FA2CKHFY.js → mcp-JDJGELGD.js} +13 -13
  44. package/dist/{performance-NISUL5AA.js → performance-7ATLHTQU.js} +3 -3
  45. package/dist/{review-pipeline-CHE5LJ5D.js → review-pipeline-COBGGXHJ.js} +2 -2
  46. package/dist/{runtime-3SKKEVPF.js → runtime-KCBNQUXK.js} +2 -2
  47. package/dist/{security-MF54MY3P.js → security-MAPRIFQT.js} +1 -1
  48. package/dist/{validate-SIWFNTXI.js → validate-74XTQR7Q.js} +3 -3
  49. package/dist/{validate-cross-check-GBX7B7CQ.js → validate-cross-check-MI5MZ7MB.js} +2 -2
  50. package/package.json +4 -4
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  listPersonas,
6
6
  loadPersona
7
- } from "./chunk-DRD7LLFC.js";
7
+ } from "./chunk-VJQLUS5I.js";
8
8
  import {
9
9
  GENERATED_HEADER_AGENT,
10
10
  VALID_PLATFORMS,
@@ -175,16 +175,67 @@ function renderGeminiAgent(def) {
175
175
  return lines.join("\n");
176
176
  }
177
177
 
178
+ // src/agent-definitions/render-cursor.ts
179
+ function formatStep3(step, index) {
180
+ if ("command" in step && step.command) {
181
+ const cmd = step.command;
182
+ const when = step.when ?? "always";
183
+ return `${index + 1}. Run \`harness ${cmd}\` (${when})`;
184
+ }
185
+ if ("skill" in step && step.skill) {
186
+ const skill = step.skill;
187
+ const when = step.when ?? "always";
188
+ return `${index + 1}. Execute ${skill} skill (${when})`;
189
+ }
190
+ return `${index + 1}. Unknown step`;
191
+ }
192
+ function renderCursorAgent(def) {
193
+ const lines = ["---"];
194
+ lines.push(`name: ${def.name}`);
195
+ lines.push(`description: >`);
196
+ lines.push(` ${def.description}`);
197
+ lines.push("---");
198
+ lines.push("");
199
+ lines.push(GENERATED_HEADER_AGENT);
200
+ lines.push("");
201
+ lines.push("## Role");
202
+ lines.push("");
203
+ lines.push(def.role);
204
+ lines.push("");
205
+ lines.push("## Skills");
206
+ lines.push("");
207
+ for (const skill of def.skills) {
208
+ lines.push(`- ${skill}`);
209
+ }
210
+ lines.push("");
211
+ lines.push("## Steps");
212
+ lines.push("");
213
+ def.steps.forEach((step, i) => {
214
+ lines.push(formatStep3(step, i));
215
+ });
216
+ lines.push("");
217
+ if (def.methodology) {
218
+ lines.push("## Methodology");
219
+ lines.push("");
220
+ lines.push(def.methodology);
221
+ lines.push("");
222
+ }
223
+ return lines.join("\n");
224
+ }
225
+
178
226
  // src/commands/generate-agent-definitions.ts
179
227
  function resolveOutputDir(platform, opts) {
180
228
  if (opts.output) {
181
- return platform === "claude-code" ? path.join(opts.output, "claude-code") : path.join(opts.output, "gemini-cli");
229
+ return path.join(opts.output, platform);
182
230
  }
183
231
  if (opts.global) {
184
232
  const home = os.homedir();
185
- return platform === "claude-code" ? path.join(home, ".claude", "agents") : path.join(home, ".gemini", "agents");
233
+ if (platform === "claude-code") return path.join(home, ".claude", "agents");
234
+ if (platform === "gemini-cli") return path.join(home, ".gemini", "agents");
235
+ if (platform === "cursor") return path.join(home, ".cursor", "agents");
236
+ return path.join(home, ".codex", "agents");
186
237
  }
187
- return platform === "claude-code" ? path.join("agents", "agents", "claude-code") : path.join("agents", "agents", "gemini-cli");
238
+ return path.join("agents", "agents", platform);
188
239
  }
189
240
  function loadSkillContent(skillName) {
190
241
  const skillsDir = resolveSkillsDir();
@@ -193,7 +244,9 @@ function loadSkillContent(skillName) {
193
244
  return fs.readFileSync(skillMdPath, "utf-8");
194
245
  }
195
246
  function getRenderer(platform) {
196
- return platform === "claude-code" ? renderClaudeCodeAgent : renderGeminiAgent;
247
+ if (platform === "claude-code") return renderClaudeCodeAgent;
248
+ if (platform === "cursor") return renderCursorAgent;
249
+ return renderGeminiAgent;
197
250
  }
198
251
  function generateAgentDefinitions(opts) {
199
252
  const personasDir = resolvePersonasDir();
@@ -265,7 +318,9 @@ ${result.platform} \u2192 ${result.outputDir}`);
265
318
  }
266
319
  }
267
320
  function createGenerateAgentDefinitionsCommand() {
268
- return new Command("generate-agent-definitions").description("Generate agent definition files from personas for Claude Code and Gemini CLI").option("--platforms <list>", "Target platforms (comma-separated)", "claude-code,gemini-cli").option("--global", "Write to global agent directories", false).option("--output <dir>", "Custom output directory").option("--dry-run", "Show what would change without writing", false).action(async (opts, cmd) => {
321
+ return new Command("generate-agent-definitions").description(
322
+ "Generate agent definition files from personas for Claude Code, Gemini CLI, and Cursor"
323
+ ).option("--platforms <list>", "Target platforms (comma-separated)", "claude-code,gemini-cli").option("--global", "Write to global agent directories", false).option("--output <dir>", "Custom output directory").option("--dry-run", "Show what would change without writing", false).action(async (opts, cmd) => {
269
324
  const globalOpts = cmd.optsWithGlobals();
270
325
  try {
271
326
  const platforms = parsePlatforms(opts.platforms);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-MAFI6UWT.js";
3
+ } from "./chunk-K4WRQTEF.js";
4
4
  import {
5
5
  Ok
6
6
  } from "./chunk-RL4VMEXL.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-KET4QQZB.js";
4
4
  import {
5
5
  init_dist
6
- } from "./chunk-MAFI6UWT.js";
6
+ } from "./chunk-K4WRQTEF.js";
7
7
  import {
8
8
  Err,
9
9
  Ok
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-MAFI6UWT.js";
3
+ } from "./chunk-K4WRQTEF.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveProjectConfig
3
- } from "./chunk-OXFFN3FD.js";
3
+ } from "./chunk-CPYL6LJR.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-K22DQUYY.js");
52
+ const core = await import("./dist-6RT2AVYU.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-K22DQUYY.js");
71
+ const core = await import("./dist-6RT2AVYU.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);
@@ -27,7 +27,7 @@ var runSecurityScanDefinition = {
27
27
  };
28
28
  async function handleRunSecurityScan(input) {
29
29
  try {
30
- const core = await import("./dist-K22DQUYY.js");
30
+ const core = await import("./dist-6RT2AVYU.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-K22DQUYY.js");
117
+ const core = await import("./dist-6RT2AVYU.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
  resolveProjectConfig
3
- } from "./chunk-OXFFN3FD.js";
3
+ } from "./chunk-CPYL6LJR.js";
4
4
  import {
5
5
  resultToMcpResponse
6
6
  } from "./chunk-EPUKTTJZ.js";
@@ -38,7 +38,7 @@ async function handleCheckDependencies(input) {
38
38
  const configResult = resolveProjectConfig(projectPath);
39
39
  if (!configResult.ok) return resultToMcpResponse(configResult);
40
40
  try {
41
- const { validateDependencies, TypeScriptParser } = await import("./dist-K22DQUYY.js");
41
+ const { validateDependencies, TypeScriptParser } = await import("./dist-6RT2AVYU.js");
42
42
  const config = configResult.value;
43
43
  const rawLayers = Array.isArray(config.layers) ? config.layers : [];
44
44
  const layers = rawLayers.map((l) => ({
@@ -7,10 +7,10 @@ import {
7
7
  import {
8
8
  findConfigFile,
9
9
  loadConfig
10
- } from "./chunk-4FVHBBPY.js";
10
+ } from "./chunk-LO7ZLV7S.js";
11
11
  import {
12
12
  init_dist
13
- } from "./chunk-MAFI6UWT.js";
13
+ } from "./chunk-K4WRQTEF.js";
14
14
  import {
15
15
  Ok
16
16
  } from "./chunk-RL4VMEXL.js";
@@ -35,7 +35,7 @@ var checkPerformanceDefinition = {
35
35
  };
36
36
  async function handleCheckPerformance(input) {
37
37
  try {
38
- const { EntropyAnalyzer } = await import("./dist-K22DQUYY.js");
38
+ const { EntropyAnalyzer } = await import("./dist-6RT2AVYU.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-K22DQUYY.js");
101
+ const { BaselineManager } = await import("./dist-6RT2AVYU.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-K22DQUYY.js");
149
+ const { BaselineManager } = await import("./dist-6RT2AVYU.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-K22DQUYY.js");
179
+ const { CriticalPathResolver } = await import("./dist-6RT2AVYU.js");
180
180
  const resolver = new CriticalPathResolver(sanitizePath(input.path));
181
181
  const result = await resolver.resolve();
182
182
  return resultToMcpResponse(Ok(result));
@@ -50,7 +50,7 @@ async function handleAssessProject(input) {
50
50
  let validateResult = null;
51
51
  if (checksToRun.has("validate")) {
52
52
  try {
53
- const { handleValidateProject } = await import("./validate-SIWFNTXI.js");
53
+ const { handleValidateProject } = await import("./validate-74XTQR7Q.js");
54
54
  const result = await handleValidateProject({ path: projectPath });
55
55
  const first = result.content[0];
56
56
  const parsed = first ? JSON.parse(first.text) : {};
@@ -75,7 +75,7 @@ async function handleAssessProject(input) {
75
75
  parallelChecks.push(
76
76
  (async () => {
77
77
  try {
78
- const { handleCheckDependencies } = await import("./architecture-KERHEEQZ.js");
78
+ const { handleCheckDependencies } = await import("./architecture-WJRIYQ45.js");
79
79
  const result = await handleCheckDependencies({ path: projectPath });
80
80
  const first = result.content[0];
81
81
  const parsed = first ? JSON.parse(first.text) : {};
@@ -102,7 +102,7 @@ async function handleAssessProject(input) {
102
102
  parallelChecks.push(
103
103
  (async () => {
104
104
  try {
105
- const { handleCheckDocs } = await import("./docs-GXJOFVCF.js");
105
+ const { handleCheckDocs } = await import("./docs-HOJMQYDZ.js");
106
106
  const result = await handleCheckDocs({ path: projectPath, scope: "coverage" });
107
107
  const first = result.content[0];
108
108
  const parsed = first ? JSON.parse(first.text) : {};
@@ -129,7 +129,7 @@ async function handleAssessProject(input) {
129
129
  parallelChecks.push(
130
130
  (async () => {
131
131
  try {
132
- const { handleDetectEntropy } = await import("./entropy-Y7LUT4BZ.js");
132
+ const { handleDetectEntropy } = await import("./entropy-LZ4IDGZR.js");
133
133
  const result = await handleDetectEntropy({ path: projectPath, type: "all" });
134
134
  const first = result.content[0];
135
135
  const parsed = first ? JSON.parse(first.text) : {};
@@ -156,7 +156,7 @@ async function handleAssessProject(input) {
156
156
  parallelChecks.push(
157
157
  (async () => {
158
158
  try {
159
- const { handleRunSecurityScan } = await import("./security-MF54MY3P.js");
159
+ const { handleRunSecurityScan } = await import("./security-MAPRIFQT.js");
160
160
  const result = await handleRunSecurityScan({ path: projectPath });
161
161
  const first = result.content[0];
162
162
  const parsed = first ? JSON.parse(first.text) : {};
@@ -188,7 +188,7 @@ async function handleAssessProject(input) {
188
188
  parallelChecks.push(
189
189
  (async () => {
190
190
  try {
191
- const { handleCheckPerformance } = await import("./performance-NISUL5AA.js");
191
+ const { handleCheckPerformance } = await import("./performance-7ATLHTQU.js");
192
192
  const result = await handleCheckPerformance({ path: projectPath });
193
193
  if ("isError" in result && result.isError) {
194
194
  const msg = result.content[0]?.text ?? "Performance check failed";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateCIWorkflow
3
- } from "./chunk-D5FE4L2O.js";
4
- import "./chunk-MAFI6UWT.js";
3
+ } from "./chunk-JPWICLXQ.js";
4
+ import "./chunk-K4WRQTEF.js";
5
5
  import "./chunk-RL4VMEXL.js";
6
6
  import "./chunk-BMM3GXV6.js";
7
7
  import "./chunk-KFQGP6VL.js";
@@ -433,7 +433,7 @@ import {
433
433
  writeSessionSummary,
434
434
  writeTaint,
435
435
  xssRules
436
- } from "./chunk-MAFI6UWT.js";
436
+ } from "./chunk-K4WRQTEF.js";
437
437
  import {
438
438
  DEFAULT_SKILL_CONTEXT_BUDGET,
439
439
  Err,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  checkDocsDefinition,
3
3
  handleCheckDocs
4
- } from "./chunk-UWIOBHZL.js";
4
+ } from "./chunk-2QPHCR22.js";
5
5
  import "./chunk-EPUKTTJZ.js";
6
6
  import "./chunk-W6Y7ZW3Y.js";
7
- import "./chunk-4FVHBBPY.js";
7
+ import "./chunk-LO7ZLV7S.js";
8
8
  import "./chunk-ZCZD7FHU.js";
9
- import "./chunk-MAFI6UWT.js";
9
+ import "./chunk-K4WRQTEF.js";
10
10
  import "./chunk-RL4VMEXL.js";
11
11
  import "./chunk-BMM3GXV6.js";
12
12
  import "./chunk-3WGJMBKH.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  TemplateEngine
3
- } from "./chunk-IIX5OJES.js";
4
- import "./chunk-MAFI6UWT.js";
3
+ } from "./chunk-224XKVLP.js";
4
+ import "./chunk-K4WRQTEF.js";
5
5
  import "./chunk-RL4VMEXL.js";
6
6
  import "./chunk-BMM3GXV6.js";
7
7
  import "./chunk-KFQGP6VL.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  detectEntropyDefinition,
3
3
  handleDetectEntropy
4
- } from "./chunk-M4C3ZIGL.js";
4
+ } from "./chunk-KV7A5OZT.js";
5
5
  import "./chunk-EPUKTTJZ.js";
6
6
  import "./chunk-W6Y7ZW3Y.js";
7
- import "./chunk-MAFI6UWT.js";
7
+ import "./chunk-K4WRQTEF.js";
8
8
  import "./chunk-RL4VMEXL.js";
9
9
  import "./chunk-BMM3GXV6.js";
10
10
  import "./chunk-KFQGP6VL.js";
@@ -5,7 +5,7 @@ import {
5
5
  handleCreateSelfReview,
6
6
  handleRequestPeerReview,
7
7
  requestPeerReviewDefinition
8
- } from "./chunk-URLDPALI.js";
8
+ } from "./chunk-2ZURBWEV.js";
9
9
  import "./chunk-EPUKTTJZ.js";
10
10
  import "./chunk-W6Y7ZW3Y.js";
11
11
  import "./chunk-KFQGP6VL.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createGenerateAgentDefinitionsCommand,
3
3
  generateAgentDefinitions
4
- } from "./chunk-GCYGGQFM.js";
4
+ } from "./chunk-OJMO4JBQ.js";
5
5
  import "./chunk-KET4QQZB.js";
6
- import "./chunk-DRD7LLFC.js";
6
+ import "./chunk-VJQLUS5I.js";
7
7
  import "./chunk-3ISINLYT.js";
8
8
  import "./chunk-6B6UN6SG.js";
9
- import "./chunk-MAFI6UWT.js";
9
+ import "./chunk-K4WRQTEF.js";
10
10
  import "./chunk-RL4VMEXL.js";
11
11
  import "./chunk-BMM3GXV6.js";
12
12
  import "./chunk-3WGJMBKH.js";
package/dist/index.d.ts CHANGED
@@ -148,6 +148,14 @@ interface GeneratedFiles {
148
148
  declare function generateSkillFiles(opts: CreateSkillOptions): GeneratedFiles;
149
149
 
150
150
  type Platform = 'claude-code' | 'gemini-cli' | 'codex' | 'cursor';
151
+ /**
152
+ * For the `cursor` platform, decides whether output is rendered as Cursor
153
+ * rules (`.mdc` with description/globs/alwaysApply — for `~/.cursor/rules/`)
154
+ * or as Cursor plugin commands (`.md` with name/description — for
155
+ * `<plugin>/commands/`). Defaults to `rules` for backward compatibility
156
+ * with `harness setup`.
157
+ */
158
+ type CursorRenderMode = 'rules' | 'commands';
151
159
  interface GenerateOptions {
152
160
  platforms: Platform[];
153
161
  global: boolean;
@@ -156,6 +164,7 @@ interface GenerateOptions {
156
164
  skillsDir: string;
157
165
  dryRun: boolean;
158
166
  yes: boolean;
167
+ cursorMode?: CursorRenderMode;
159
168
  }
160
169
 
161
170
  interface SkillSource {
@@ -779,14 +788,14 @@ declare const HarnessConfigSchema: z.ZodObject<{
779
788
  modules: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodEnum<["circular-deps", "layer-violations", "complexity", "coupling", "forbidden-imports", "module-size", "dependency-depth"]>, z.ZodUnion<[z.ZodNumber, z.ZodRecord<z.ZodString, z.ZodNumber>]>>>>;
780
789
  }, "strip", z.ZodTypeAny, {
781
790
  enabled: boolean;
782
- thresholds: Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>;
783
- modules: Record<string, Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>>;
784
791
  baselinePath: string;
792
+ thresholds: Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>;
793
+ modules: Record<string, Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>>;
785
794
  }, {
786
795
  enabled?: boolean | undefined;
787
- thresholds?: Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>> | undefined;
788
- modules?: Record<string, Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>> | undefined;
789
796
  baselinePath?: string | undefined;
797
+ thresholds?: Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>> | undefined;
798
+ modules?: Record<string, Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>> | undefined;
790
799
  }>>;
791
800
  /** Skill loading, suggestion, and tier override settings */
792
801
  skills: z.ZodOptional<z.ZodObject<{
@@ -1040,9 +1049,9 @@ declare const HarnessConfigSchema: z.ZodObject<{
1040
1049
  } | undefined;
1041
1050
  architecture?: {
1042
1051
  enabled: boolean;
1043
- thresholds: Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>;
1044
- modules: Record<string, Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>>;
1045
1052
  baselinePath: string;
1053
+ thresholds: Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>;
1054
+ modules: Record<string, Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>>;
1046
1055
  } | undefined;
1047
1056
  traceability?: {
1048
1057
  enabled: boolean;
@@ -1198,9 +1207,9 @@ declare const HarnessConfigSchema: z.ZodObject<{
1198
1207
  } | undefined;
1199
1208
  architecture?: {
1200
1209
  enabled?: boolean | undefined;
1201
- thresholds?: Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>> | undefined;
1202
- modules?: Record<string, Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>> | undefined;
1203
1210
  baselinePath?: string | undefined;
1211
+ thresholds?: Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>> | undefined;
1212
+ modules?: Record<string, Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>> | undefined;
1204
1213
  } | undefined;
1205
1214
  traceability?: {
1206
1215
  enabled?: boolean | undefined;
package/dist/index.js CHANGED
@@ -12,22 +12,22 @@ import {
12
12
  runSnapshotCapture,
13
13
  runUninstall,
14
14
  runUninstallConstraints
15
- } from "./chunk-FQAJAM54.js";
15
+ } from "./chunk-GOOTYTTV.js";
16
16
  import {
17
17
  generateRuntime
18
- } from "./chunk-AEFZJ543.js";
18
+ } from "./chunk-TNZYQTEE.js";
19
19
  import {
20
20
  generateAgentsMd
21
- } from "./chunk-HBQ3BK2E.js";
21
+ } from "./chunk-4HKVZO7R.js";
22
22
  import {
23
23
  generateCIWorkflow
24
- } from "./chunk-D5FE4L2O.js";
24
+ } from "./chunk-JPWICLXQ.js";
25
25
  import {
26
26
  runCrossCheck
27
- } from "./chunk-PCX4GPNT.js";
27
+ } from "./chunk-QTUPHTTK.js";
28
28
  import {
29
29
  TemplateEngine
30
- } from "./chunk-IIX5OJES.js";
30
+ } from "./chunk-224XKVLP.js";
31
31
  import "./chunk-CQ553GZO.js";
32
32
  import {
33
33
  detectTrigger,
@@ -43,7 +43,7 @@ import {
43
43
  OutputFormatter,
44
44
  OutputMode,
45
45
  runCheckPhaseGate
46
- } from "./chunk-WW6AUOA3.js";
46
+ } from "./chunk-E7W3YOXL.js";
47
47
  import {
48
48
  AGENT_DESCRIPTIONS,
49
49
  DEFAULT_TOOLS,
@@ -52,12 +52,12 @@ import {
52
52
  generateAgentDefinitions,
53
53
  renderClaudeCodeAgent,
54
54
  renderGeminiAgent
55
- } from "./chunk-GCYGGQFM.js";
55
+ } from "./chunk-OJMO4JBQ.js";
56
56
  import "./chunk-KET4QQZB.js";
57
57
  import {
58
58
  listPersonas,
59
59
  loadPersona
60
- } from "./chunk-DRD7LLFC.js";
60
+ } from "./chunk-VJQLUS5I.js";
61
61
  import {
62
62
  runScan
63
63
  } from "./chunk-YG4ZBGEH.js";
@@ -66,19 +66,19 @@ import {
66
66
  generateSlashCommands,
67
67
  getToolDefinitions,
68
68
  startServer
69
- } from "./chunk-T7MNLCUD.js";
70
- import "./chunk-EFA4OEEN.js";
71
- import "./chunk-RCHXBL2M.js";
69
+ } from "./chunk-L2IDE7WS.js";
70
+ import "./chunk-36X7TRUI.js";
71
+ import "./chunk-YWD6WXXM.js";
72
72
  import "./chunk-IOW3MW2K.js";
73
- import "./chunk-URLDPALI.js";
74
- import "./chunk-FBQYKH7R.js";
73
+ import "./chunk-2ZURBWEV.js";
74
+ import "./chunk-W4AFGFFB.js";
75
75
  import "./chunk-KTWKW6KJ.js";
76
- import "./chunk-LY2TY6NE.js";
77
- import "./chunk-YBGVZQQE.js";
78
- import "./chunk-OXFFN3FD.js";
79
- import "./chunk-UWIOBHZL.js";
80
- import "./chunk-M4C3ZIGL.js";
81
- import "./chunk-GHPWBWUW.js";
76
+ import "./chunk-VKDBM3RX.js";
77
+ import "./chunk-YLOAQZLA.js";
78
+ import "./chunk-CPYL6LJR.js";
79
+ import "./chunk-2QPHCR22.js";
80
+ import "./chunk-KV7A5OZT.js";
81
+ import "./chunk-YLTRFZAT.js";
82
82
  import "./chunk-EPUKTTJZ.js";
83
83
  import "./chunk-W6Y7ZW3Y.js";
84
84
  import "./chunk-27AJKSQY.js";
@@ -86,12 +86,12 @@ import {
86
86
  findConfigFile,
87
87
  loadConfig,
88
88
  resolveConfig
89
- } from "./chunk-4FVHBBPY.js";
89
+ } from "./chunk-LO7ZLV7S.js";
90
90
  import "./chunk-3ISINLYT.js";
91
91
  import "./chunk-6B6UN6SG.js";
92
92
  import "./chunk-ZCZD7FHU.js";
93
93
  import "./chunk-BM3PWGXQ.js";
94
- import "./chunk-MAFI6UWT.js";
94
+ import "./chunk-K4WRQTEF.js";
95
95
  import "./chunk-RL4VMEXL.js";
96
96
  import "./chunk-BMM3GXV6.js";
97
97
  import {
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  listPersonas,
3
3
  loadPersona
4
- } from "./chunk-DRD7LLFC.js";
5
- import "./chunk-MAFI6UWT.js";
4
+ } from "./chunk-VJQLUS5I.js";
5
+ import "./chunk-K4WRQTEF.js";
6
6
  import "./chunk-RL4VMEXL.js";
7
7
  import "./chunk-BMM3GXV6.js";
8
8
  import "./chunk-KFQGP6VL.js";
@@ -2,31 +2,31 @@ import {
2
2
  createHarnessServer,
3
3
  getToolDefinitions,
4
4
  startServer
5
- } from "./chunk-T7MNLCUD.js";
6
- import "./chunk-EFA4OEEN.js";
7
- import "./chunk-RCHXBL2M.js";
5
+ } from "./chunk-L2IDE7WS.js";
6
+ import "./chunk-36X7TRUI.js";
7
+ import "./chunk-YWD6WXXM.js";
8
8
  import "./chunk-IOW3MW2K.js";
9
- import "./chunk-URLDPALI.js";
10
- import "./chunk-FBQYKH7R.js";
9
+ import "./chunk-2ZURBWEV.js";
10
+ import "./chunk-W4AFGFFB.js";
11
11
  import "./chunk-KTWKW6KJ.js";
12
- import "./chunk-LY2TY6NE.js";
13
- import "./chunk-YBGVZQQE.js";
12
+ import "./chunk-VKDBM3RX.js";
13
+ import "./chunk-YLOAQZLA.js";
14
14
  import {
15
15
  resolveProjectConfig
16
- } from "./chunk-OXFFN3FD.js";
17
- import "./chunk-UWIOBHZL.js";
18
- import "./chunk-M4C3ZIGL.js";
19
- import "./chunk-GHPWBWUW.js";
16
+ } from "./chunk-CPYL6LJR.js";
17
+ import "./chunk-2QPHCR22.js";
18
+ import "./chunk-KV7A5OZT.js";
19
+ import "./chunk-YLTRFZAT.js";
20
20
  import {
21
21
  resultToMcpResponse
22
22
  } from "./chunk-EPUKTTJZ.js";
23
23
  import "./chunk-W6Y7ZW3Y.js";
24
24
  import "./chunk-27AJKSQY.js";
25
- import "./chunk-4FVHBBPY.js";
25
+ import "./chunk-LO7ZLV7S.js";
26
26
  import "./chunk-3ISINLYT.js";
27
27
  import "./chunk-6B6UN6SG.js";
28
28
  import "./chunk-ZCZD7FHU.js";
29
- import "./chunk-MAFI6UWT.js";
29
+ import "./chunk-K4WRQTEF.js";
30
30
  import "./chunk-RL4VMEXL.js";
31
31
  import "./chunk-BMM3GXV6.js";
32
32
  import "./chunk-HIK6OEUF.js";
@@ -7,12 +7,12 @@ import {
7
7
  handleGetPerfBaselines,
8
8
  handleUpdatePerfBaselines,
9
9
  updatePerfBaselinesDefinition
10
- } from "./chunk-GHPWBWUW.js";
10
+ } from "./chunk-YLTRFZAT.js";
11
11
  import "./chunk-EPUKTTJZ.js";
12
12
  import "./chunk-W6Y7ZW3Y.js";
13
- import "./chunk-4FVHBBPY.js";
13
+ import "./chunk-LO7ZLV7S.js";
14
14
  import "./chunk-ZCZD7FHU.js";
15
- import "./chunk-MAFI6UWT.js";
15
+ import "./chunk-K4WRQTEF.js";
16
16
  import "./chunk-RL4VMEXL.js";
17
17
  import "./chunk-BMM3GXV6.js";
18
18
  import "./chunk-3WGJMBKH.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  handleRunCodeReview,
3
3
  runCodeReviewDefinition
4
- } from "./chunk-EFA4OEEN.js";
4
+ } from "./chunk-36X7TRUI.js";
5
5
  import "./chunk-W6Y7ZW3Y.js";
6
- import "./chunk-MAFI6UWT.js";
6
+ import "./chunk-K4WRQTEF.js";
7
7
  import "./chunk-RL4VMEXL.js";
8
8
  import "./chunk-BMM3GXV6.js";
9
9
  import "./chunk-KFQGP6VL.js";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generateRuntime
3
- } from "./chunk-AEFZJ543.js";
3
+ } from "./chunk-TNZYQTEE.js";
4
4
  import "./chunk-KET4QQZB.js";
5
- import "./chunk-MAFI6UWT.js";
5
+ import "./chunk-K4WRQTEF.js";
6
6
  import "./chunk-RL4VMEXL.js";
7
7
  import "./chunk-BMM3GXV6.js";
8
8
  import "./chunk-KFQGP6VL.js";