@harness-engineering/cli 1.28.1 → 2.1.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 (95) hide show
  1. package/dist/agents/skills/claude-code/harness-compound/SKILL.md +153 -0
  2. package/dist/agents/skills/claude-code/harness-compound/skill.yaml +60 -0
  3. package/dist/agents/skills/claude-code/harness-knowledge-pipeline/SKILL.md +12 -1
  4. package/dist/agents/skills/claude-code/harness-observability/SKILL.md +2 -0
  5. package/dist/agents/skills/claude-code/harness-pulse/SKILL.md +138 -0
  6. package/dist/agents/skills/claude-code/harness-pulse/references/interview.md +77 -0
  7. package/dist/agents/skills/claude-code/harness-pulse/skill.yaml +61 -0
  8. package/dist/agents/skills/claude-code/harness-roadmap-pilot/SKILL.md +25 -1
  9. package/dist/agents/skills/codex/harness-compound/SKILL.md +153 -0
  10. package/dist/agents/skills/codex/harness-compound/skill.yaml +60 -0
  11. package/dist/agents/skills/codex/harness-knowledge-pipeline/SKILL.md +12 -1
  12. package/dist/agents/skills/codex/harness-observability/SKILL.md +2 -0
  13. package/dist/agents/skills/codex/harness-pulse/SKILL.md +138 -0
  14. package/dist/agents/skills/codex/harness-pulse/references/interview.md +77 -0
  15. package/dist/agents/skills/codex/harness-pulse/skill.yaml +61 -0
  16. package/dist/agents/skills/codex/harness-roadmap-pilot/SKILL.md +25 -1
  17. package/dist/agents/skills/cursor/harness-compound/SKILL.md +153 -0
  18. package/dist/agents/skills/cursor/harness-compound/skill.yaml +60 -0
  19. package/dist/agents/skills/cursor/harness-knowledge-pipeline/SKILL.md +12 -1
  20. package/dist/agents/skills/cursor/harness-observability/SKILL.md +2 -0
  21. package/dist/agents/skills/cursor/harness-pulse/SKILL.md +138 -0
  22. package/dist/agents/skills/cursor/harness-pulse/references/interview.md +77 -0
  23. package/dist/agents/skills/cursor/harness-pulse/skill.yaml +61 -0
  24. package/dist/agents/skills/cursor/harness-roadmap-pilot/SKILL.md +25 -1
  25. package/dist/agents/skills/gemini-cli/harness-compound/SKILL.md +153 -0
  26. package/dist/agents/skills/gemini-cli/harness-compound/skill.yaml +60 -0
  27. package/dist/agents/skills/gemini-cli/harness-knowledge-pipeline/SKILL.md +12 -1
  28. package/dist/agents/skills/gemini-cli/harness-observability/SKILL.md +2 -0
  29. package/dist/agents/skills/gemini-cli/harness-pulse/SKILL.md +138 -0
  30. package/dist/agents/skills/gemini-cli/harness-pulse/references/interview.md +77 -0
  31. package/dist/agents/skills/gemini-cli/harness-pulse/skill.yaml +61 -0
  32. package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/SKILL.md +25 -1
  33. package/dist/agents/skills/package.json +1 -0
  34. package/dist/agents/skills/tests/fixtures/harness-compound/bug-track-fixture/input.json +10 -0
  35. package/dist/agents/skills/tests/fixtures/harness-compound/duplicate-detection-fixture/docs/solutions/bug-track/integration-issues/stalled-lease-cleanup.md +28 -0
  36. package/dist/agents/skills/tests/fixtures/harness-compound/duplicate-detection-fixture/expected.json +4 -0
  37. package/dist/agents/skills/tests/fixtures/harness-compound/duplicate-detection-fixture/input.json +10 -0
  38. package/dist/agents/skills/tests/fixtures/harness-compound/knowledge-track-fixture/input.json +10 -0
  39. package/dist/agents/skills/tests/harness-compound.test.ts +86 -0
  40. package/dist/{agents-md-6SAMHE7H.js → agents-md-XCAWON2D.js} +3 -3
  41. package/dist/{architecture-5YR52NSV.js → architecture-KERHEEQZ.js} +4 -4
  42. package/dist/{assess-project-5X7TYQFM.js → assess-project-NPYA3UVI.js} +1 -1
  43. package/dist/bin/harness-mcp.js +16 -15
  44. package/dist/bin/harness.js +26 -25
  45. package/dist/{check-phase-gate-PLV2VDOL.js → check-phase-gate-GE5ALEEU.js} +5 -4
  46. package/dist/{chunk-KJD4J54I.js → chunk-4FVHBBPY.js} +6 -1
  47. package/dist/{chunk-PFM3BVVU.js → chunk-AEFZJ543.js} +1 -1
  48. package/dist/{chunk-S2WB4LE7.js → chunk-BMM3GXV6.js} +384 -28
  49. package/dist/{chunk-RYDPFIJY.js → chunk-D5FE4L2O.js} +1 -1
  50. package/dist/{chunk-HT7HYYGT.js → chunk-DRD7LLFC.js} +1 -1
  51. package/dist/{chunk-2IBXUG6J.js → chunk-EFA4OEEN.js} +2 -2
  52. package/dist/{chunk-JZST2WZS.js → chunk-FBQYKH7R.js} +3 -3
  53. package/dist/{chunk-MTPHNOJW.js → chunk-FQAJAM54.js} +506 -242
  54. package/dist/{chunk-R2CBBZA6.js → chunk-GCYGGQFM.js} +1 -1
  55. package/dist/{chunk-7JQ7HLM4.js → chunk-GHPWBWUW.js} +8 -8
  56. package/dist/{chunk-6L2BU4BP.js → chunk-HBQ3BK2E.js} +1 -1
  57. package/dist/{chunk-ZYLBIDLE.js → chunk-IIX5OJES.js} +1 -1
  58. package/dist/{chunk-DXGI7DL3.js → chunk-KTWKW6KJ.js} +1 -1
  59. package/dist/{chunk-6GXSJGSW.js → chunk-LY2TY6NE.js} +3 -3
  60. package/dist/{chunk-JNKALGRM.js → chunk-M4C3ZIGL.js} +5 -5
  61. package/dist/{chunk-RFYF7TJS.js → chunk-MAFI6UWT.js} +1701 -769
  62. package/dist/{chunk-BYS3TQOO.js → chunk-OXFFN3FD.js} +1 -1
  63. package/dist/{chunk-XHOGGZS7.js → chunk-PCX4GPNT.js} +1 -1
  64. package/dist/{chunk-BFBZK6BC.js → chunk-RCHXBL2M.js} +6 -6
  65. package/dist/{chunk-74YADB7T.js → chunk-T7MNLCUD.js} +92 -92
  66. package/dist/{chunk-SITVRO7K.js → chunk-URLDPALI.js} +9 -9
  67. package/dist/{chunk-ELJ2MXMO.js → chunk-UWIOBHZL.js} +9 -9
  68. package/dist/{chunk-QDRBWVVY.js → chunk-WW6AUOA3.js} +2 -2
  69. package/dist/{chunk-5ME3WG3G.js → chunk-YBGVZQQE.js} +5 -5
  70. package/dist/{chunk-YJE23GRZ.js → chunk-YG4ZBGEH.js} +39 -5
  71. package/dist/chunk-ZCZD7FHU.js +16 -0
  72. package/dist/{ci-workflow-7T2XKB3P.js → ci-workflow-A2E2RTOP.js} +3 -3
  73. package/dist/{dist-42AYXCAK.js → dist-D27LJR2T.js} +7 -1
  74. package/dist/{dist-77VNTHWV.js → dist-K22DQUYY.js} +78 -2
  75. package/dist/{docs-MSIJ6SDO.js → docs-GXJOFVCF.js} +5 -4
  76. package/dist/{engine-F4P5RBE4.js → engine-JBUIA2XO.js} +3 -3
  77. package/dist/{entropy-GSUTIORR.js → entropy-Y7LUT4BZ.js} +3 -3
  78. package/dist/{feedback-NST6T4HI.js → feedback-BHOBVKI3.js} +1 -1
  79. package/dist/{generate-agent-definitions-BOUGQIPA.js → generate-agent-definitions-VL3ZVR32.js} +4 -4
  80. package/dist/glob-helper-FZPPTGJN.js +62 -0
  81. package/dist/{graph-loader-IAUPGLRV.js → graph-loader-5MKHAJJF.js} +1 -1
  82. package/dist/index.d.ts +44 -6
  83. package/dist/index.js +26 -25
  84. package/dist/{loader-6QTJC7IN.js → loader-WCKVMDYR.js} +3 -3
  85. package/dist/{mcp-QFBGTUX6.js → mcp-FA2CKHFY.js} +16 -15
  86. package/dist/{performance-B2NAAIE5.js → performance-NISUL5AA.js} +5 -4
  87. package/dist/{review-pipeline-6EYMBS6B.js → review-pipeline-CHE5LJ5D.js} +3 -3
  88. package/dist/{runtime-VFZK6BCZ.js → runtime-3SKKEVPF.js} +3 -3
  89. package/dist/{scan-DB6FNYGG.js → scan-BIJYHOE7.js} +2 -1
  90. package/dist/{security-HRNTYHPM.js → security-MF54MY3P.js} +1 -1
  91. package/dist/templates/orchestrator/harness.orchestrator.md +31 -8
  92. package/dist/{validate-YEMAFWJE.js → validate-SIWFNTXI.js} +4 -4
  93. package/dist/{validate-cross-check-DGHTJFVH.js → validate-cross-check-GBX7B7CQ.js} +3 -3
  94. package/package.json +8 -7
  95. package/dist/glob-helper-VCQXK5XY.js +0 -54
@@ -0,0 +1,86 @@
1
+ // agents/skills/tests/harness-compound.test.ts
2
+ //
3
+ // Contract tests for the harness-compound skill. The skill prose itself is
4
+ // executed by an agent (not by node), so e2e correctness is human-judged.
5
+ // Phase 2 owns:
6
+ // - the lock-primitive contract (machine-testable)
7
+ // - fixture artifacts for the four scenarios called out by Phase 7's
8
+ // end-to-end tests (bug-track / knowledge-track / duplicate-detection)
9
+ //
10
+ // Generic structure, schema, and platform-parity tests live in sibling files.
11
+
12
+ import { describe, it, expect } from 'vitest';
13
+ import * as fs from 'node:fs';
14
+ import * as path from 'node:path';
15
+ import * as os from 'node:os';
16
+ import { dirname } from 'path';
17
+ import { fileURLToPath } from 'url';
18
+ import { acquireCompoundLock, CompoundLockHeldError } from '@harness-engineering/core';
19
+
20
+ const __dirname = dirname(fileURLToPath(import.meta.url));
21
+
22
+ describe('harness-compound integration', () => {
23
+ describe('lock primitive', () => {
24
+ it('serializes same-category invocations', () => {
25
+ const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'hc-'));
26
+ const a = acquireCompoundLock('integration-issues', { cwd: tmp });
27
+ expect(() => acquireCompoundLock('integration-issues', { cwd: tmp })).toThrow(
28
+ CompoundLockHeldError
29
+ );
30
+ a.release();
31
+ // Now a fresh acquire succeeds
32
+ const b = acquireCompoundLock('integration-issues', { cwd: tmp });
33
+ b.release();
34
+ fs.rmSync(tmp, { recursive: true, force: true });
35
+ });
36
+
37
+ it('parallelizes different-category invocations', () => {
38
+ const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'hc-'));
39
+ const a = acquireCompoundLock('integration-issues', { cwd: tmp });
40
+ const b = acquireCompoundLock('test-failures', { cwd: tmp });
41
+ a.release();
42
+ b.release();
43
+ fs.rmSync(tmp, { recursive: true, force: true });
44
+ });
45
+ });
46
+
47
+ describe('fixtures', () => {
48
+ const fixturesRoot = path.resolve(__dirname, 'fixtures', 'harness-compound');
49
+
50
+ it('bug-track fixture has expected shape', () => {
51
+ const input = JSON.parse(
52
+ fs.readFileSync(path.join(fixturesRoot, 'bug-track-fixture', 'input.json'), 'utf-8')
53
+ );
54
+ expect(input.expected.track).toBe('bug-track');
55
+ expect(input.expected.category).toBe('integration-issues');
56
+ });
57
+
58
+ it('knowledge-track fixture has expected shape', () => {
59
+ const input = JSON.parse(
60
+ fs.readFileSync(path.join(fixturesRoot, 'knowledge-track-fixture', 'input.json'), 'utf-8')
61
+ );
62
+ expect(input.expected.track).toBe('knowledge-track');
63
+ expect(input.expected.category).toBe('conventions');
64
+ });
65
+
66
+ it('duplicate-detection fixture seeds an existing doc', () => {
67
+ const seedPath = path.join(
68
+ fixturesRoot,
69
+ 'duplicate-detection-fixture',
70
+ 'docs',
71
+ 'solutions',
72
+ 'bug-track',
73
+ 'integration-issues',
74
+ 'stalled-lease-cleanup.md'
75
+ );
76
+ expect(fs.existsSync(seedPath)).toBe(true);
77
+ const expected = JSON.parse(
78
+ fs.readFileSync(
79
+ path.join(fixturesRoot, 'duplicate-detection-fixture', 'expected.json'),
80
+ 'utf-8'
81
+ )
82
+ );
83
+ expect(expected.mode).toBe('update');
84
+ });
85
+ });
86
+ });
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  generateAgentsMd
3
- } from "./chunk-6L2BU4BP.js";
4
- import "./chunk-RFYF7TJS.js";
3
+ } from "./chunk-HBQ3BK2E.js";
4
+ import "./chunk-MAFI6UWT.js";
5
5
  import "./chunk-RL4VMEXL.js";
6
- import "./chunk-S2WB4LE7.js";
6
+ import "./chunk-BMM3GXV6.js";
7
7
  import "./chunk-KFQGP6VL.js";
8
8
  export {
9
9
  generateAgentsMd
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  checkDependenciesDefinition,
3
3
  handleCheckDependencies
4
- } from "./chunk-5ME3WG3G.js";
5
- import "./chunk-BYS3TQOO.js";
4
+ } from "./chunk-YBGVZQQE.js";
5
+ import "./chunk-OXFFN3FD.js";
6
6
  import "./chunk-EPUKTTJZ.js";
7
7
  import "./chunk-W6Y7ZW3Y.js";
8
- import "./chunk-RFYF7TJS.js";
8
+ import "./chunk-MAFI6UWT.js";
9
9
  import "./chunk-RL4VMEXL.js";
10
- import "./chunk-S2WB4LE7.js";
10
+ import "./chunk-BMM3GXV6.js";
11
11
  import "./chunk-KFQGP6VL.js";
12
12
  export {
13
13
  checkDependenciesDefinition,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  assessProjectDefinition,
3
3
  handleAssessProject
4
- } from "./chunk-BFBZK6BC.js";
4
+ } from "./chunk-RCHXBL2M.js";
5
5
  import "./chunk-W6Y7ZW3Y.js";
6
6
  import "./chunk-KFQGP6VL.js";
7
7
  export {
@@ -1,28 +1,29 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  startServer
4
- } from "../chunk-74YADB7T.js";
5
- import "../chunk-2IBXUG6J.js";
6
- import "../chunk-BFBZK6BC.js";
4
+ } from "../chunk-T7MNLCUD.js";
5
+ import "../chunk-EFA4OEEN.js";
6
+ import "../chunk-RCHXBL2M.js";
7
7
  import "../chunk-IOW3MW2K.js";
8
- import "../chunk-SITVRO7K.js";
9
- import "../chunk-JZST2WZS.js";
10
- import "../chunk-DXGI7DL3.js";
11
- import "../chunk-6GXSJGSW.js";
12
- import "../chunk-5ME3WG3G.js";
13
- import "../chunk-BYS3TQOO.js";
14
- import "../chunk-ELJ2MXMO.js";
15
- import "../chunk-JNKALGRM.js";
16
- import "../chunk-7JQ7HLM4.js";
8
+ import "../chunk-URLDPALI.js";
9
+ import "../chunk-FBQYKH7R.js";
10
+ import "../chunk-KTWKW6KJ.js";
11
+ import "../chunk-LY2TY6NE.js";
12
+ import "../chunk-YBGVZQQE.js";
13
+ import "../chunk-OXFFN3FD.js";
14
+ import "../chunk-UWIOBHZL.js";
15
+ import "../chunk-M4C3ZIGL.js";
16
+ import "../chunk-GHPWBWUW.js";
17
17
  import "../chunk-EPUKTTJZ.js";
18
18
  import "../chunk-W6Y7ZW3Y.js";
19
19
  import "../chunk-27AJKSQY.js";
20
- import "../chunk-KJD4J54I.js";
20
+ import "../chunk-4FVHBBPY.js";
21
21
  import "../chunk-3ISINLYT.js";
22
22
  import "../chunk-6B6UN6SG.js";
23
- import "../chunk-RFYF7TJS.js";
23
+ import "../chunk-ZCZD7FHU.js";
24
+ import "../chunk-MAFI6UWT.js";
24
25
  import "../chunk-RL4VMEXL.js";
25
- import "../chunk-S2WB4LE7.js";
26
+ import "../chunk-BMM3GXV6.js";
26
27
  import "../chunk-HIK6OEUF.js";
27
28
  import "../chunk-EBJQ6N4M.js";
28
29
  import "../chunk-3WGJMBKH.js";
@@ -3,45 +3,46 @@ import {
3
3
  createProgram,
4
4
  installCommandTelemetry,
5
5
  printFirstRunWelcome
6
- } from "../chunk-MTPHNOJW.js";
7
- import "../chunk-PFM3BVVU.js";
8
- import "../chunk-6L2BU4BP.js";
9
- import "../chunk-RYDPFIJY.js";
10
- import "../chunk-XHOGGZS7.js";
11
- import "../chunk-ZYLBIDLE.js";
6
+ } from "../chunk-FQAJAM54.js";
7
+ import "../chunk-AEFZJ543.js";
8
+ import "../chunk-HBQ3BK2E.js";
9
+ import "../chunk-D5FE4L2O.js";
10
+ import "../chunk-PCX4GPNT.js";
11
+ import "../chunk-IIX5OJES.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-QDRBWVVY.js";
17
- import "../chunk-R2CBBZA6.js";
16
+ import "../chunk-WW6AUOA3.js";
17
+ import "../chunk-GCYGGQFM.js";
18
18
  import "../chunk-KET4QQZB.js";
19
- import "../chunk-HT7HYYGT.js";
20
- import "../chunk-YJE23GRZ.js";
19
+ import "../chunk-DRD7LLFC.js";
20
+ import "../chunk-YG4ZBGEH.js";
21
21
  import {
22
22
  dispatchSkillsFromGit
23
- } from "../chunk-74YADB7T.js";
24
- import "../chunk-2IBXUG6J.js";
25
- import "../chunk-BFBZK6BC.js";
23
+ } from "../chunk-T7MNLCUD.js";
24
+ import "../chunk-EFA4OEEN.js";
25
+ import "../chunk-RCHXBL2M.js";
26
26
  import "../chunk-IOW3MW2K.js";
27
- import "../chunk-SITVRO7K.js";
28
- import "../chunk-JZST2WZS.js";
29
- import "../chunk-DXGI7DL3.js";
30
- import "../chunk-6GXSJGSW.js";
31
- import "../chunk-5ME3WG3G.js";
32
- import "../chunk-BYS3TQOO.js";
33
- import "../chunk-ELJ2MXMO.js";
34
- import "../chunk-JNKALGRM.js";
35
- import "../chunk-7JQ7HLM4.js";
27
+ import "../chunk-URLDPALI.js";
28
+ import "../chunk-FBQYKH7R.js";
29
+ import "../chunk-KTWKW6KJ.js";
30
+ import "../chunk-LY2TY6NE.js";
31
+ import "../chunk-YBGVZQQE.js";
32
+ import "../chunk-OXFFN3FD.js";
33
+ import "../chunk-UWIOBHZL.js";
34
+ import "../chunk-M4C3ZIGL.js";
35
+ import "../chunk-GHPWBWUW.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-KJD4J54I.js";
42
+ } from "../chunk-4FVHBBPY.js";
43
43
  import "../chunk-3ISINLYT.js";
44
44
  import "../chunk-6B6UN6SG.js";
45
+ import "../chunk-ZCZD7FHU.js";
45
46
  import {
46
47
  CLI_VERSION
47
48
  } from "../chunk-BM3PWGXQ.js";
@@ -52,9 +53,9 @@ import {
52
53
  readCheckState,
53
54
  shouldRunCheck,
54
55
  spawnBackgroundCheck
55
- } from "../chunk-RFYF7TJS.js";
56
+ } from "../chunk-MAFI6UWT.js";
56
57
  import "../chunk-RL4VMEXL.js";
57
- import "../chunk-S2WB4LE7.js";
58
+ import "../chunk-BMM3GXV6.js";
58
59
  import "../chunk-ZP5E7YET.js";
59
60
  import "../chunk-HIK6OEUF.js";
60
61
  import "../chunk-EBJQ6N4M.js";
@@ -1,11 +1,12 @@
1
1
  import {
2
2
  createCheckPhaseGateCommand,
3
3
  runCheckPhaseGate
4
- } from "./chunk-QDRBWVVY.js";
5
- import "./chunk-KJD4J54I.js";
6
- import "./chunk-RFYF7TJS.js";
4
+ } from "./chunk-WW6AUOA3.js";
5
+ import "./chunk-4FVHBBPY.js";
6
+ import "./chunk-ZCZD7FHU.js";
7
+ import "./chunk-MAFI6UWT.js";
7
8
  import "./chunk-RL4VMEXL.js";
8
- import "./chunk-S2WB4LE7.js";
9
+ import "./chunk-BMM3GXV6.js";
9
10
  import "./chunk-EBJQ6N4M.js";
10
11
  import "./chunk-3WGJMBKH.js";
11
12
  import "./chunk-KFQGP6VL.js";
@@ -1,7 +1,10 @@
1
+ import {
2
+ IngestConfigSchema
3
+ } from "./chunk-ZCZD7FHU.js";
1
4
  import {
2
5
  ArchConfigSchema,
3
6
  init_dist
4
- } from "./chunk-RFYF7TJS.js";
7
+ } from "./chunk-MAFI6UWT.js";
5
8
  import {
6
9
  Err,
7
10
  Ok
@@ -228,6 +231,8 @@ var HarnessConfigSchema = z.object({
228
231
  docsDir: z.string().default("./docs"),
229
232
  /** Agent orchestration settings */
230
233
  agent: AgentConfigSchema.optional(),
234
+ /** Source-file ingestion controls (skip-dirs, exclude patterns, gitignore handling) */
235
+ ingest: IngestConfigSchema.optional(),
231
236
  /** Drift and stale code management settings */
232
237
  entropy: EntropyConfigSchema.optional(),
233
238
  /** Security scanning configuration */
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-KET4QQZB.js";
4
4
  import {
5
5
  init_dist
6
- } from "./chunk-RFYF7TJS.js";
6
+ } from "./chunk-MAFI6UWT.js";
7
7
  import {
8
8
  Err,
9
9
  Ok