@harness-engineering/cli 2.7.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/dist/agents/personas/adversarial-reviewer.yaml +43 -0
  2. package/dist/agents/personas/frontend-races-reviewer.yaml +54 -0
  3. package/dist/agents/personas/typescript-strict-reviewer.yaml +53 -0
  4. package/dist/agents/skills/CHANGELOG.md +12 -0
  5. package/dist/agents/skills/claude-code/align-design-system/SKILL.md +18 -0
  6. package/dist/agents/skills/claude-code/align-design-system/skill.yaml +3 -0
  7. package/dist/agents/skills/claude-code/harness-audit-harness-strength/SKILL.md +188 -0
  8. package/dist/agents/skills/claude-code/harness-audit-harness-strength/skill.yaml +54 -0
  9. package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +2 -0
  10. package/dist/agents/skills/claude-code/harness-brainstorming/SKILL.md +58 -12
  11. package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +107 -22
  12. package/dist/agents/skills/claude-code/harness-code-review/references/confidence-rubric.md +45 -0
  13. package/dist/agents/skills/claude-code/harness-code-review/references/risk-keywords.md +40 -0
  14. package/dist/agents/skills/claude-code/harness-code-review/skill.yaml +3 -0
  15. package/dist/agents/skills/claude-code/harness-compound/SKILL.md +7 -4
  16. package/dist/agents/skills/claude-code/harness-execution/SKILL.md +1 -1
  17. package/dist/agents/skills/claude-code/harness-git-workflow/SKILL.md +2 -0
  18. package/dist/agents/skills/claude-code/harness-ideate/SKILL.md +279 -0
  19. package/dist/agents/skills/claude-code/harness-ideate/references/scoring.md +88 -0
  20. package/dist/agents/skills/claude-code/harness-ideate/skill.yaml +66 -0
  21. package/dist/agents/skills/claude-code/harness-knowledge-pipeline/SKILL.md +2 -0
  22. package/dist/agents/skills/claude-code/harness-planning/SKILL.md +14 -4
  23. package/dist/agents/skills/claude-code/harness-pulse/SKILL.md +12 -16
  24. package/dist/agents/skills/claude-code/harness-roadmap/SKILL.md +62 -4
  25. package/dist/agents/skills/claude-code/harness-roadmap-pilot/SKILL.md +36 -6
  26. package/dist/agents/skills/claude-code/harness-strategy/SKILL.md +152 -0
  27. package/dist/agents/skills/claude-code/harness-strategy/references/interview.md +122 -0
  28. package/dist/agents/skills/claude-code/harness-strategy/skill.yaml +54 -0
  29. package/dist/agents/skills/claude-code/harness-test-advisor/SKILL.md +80 -2
  30. package/dist/agents/skills/claude-code/harness-test-advisor/skill.yaml +4 -1
  31. package/dist/agents/skills/claude-code/initialize-harness-project/SKILL.md +86 -18
  32. package/dist/agents/skills/claude-code/initialize-harness-project/skill.yaml +1 -0
  33. package/dist/agents/skills/claude-code/outcome-eval/SKILL.md +97 -0
  34. package/dist/agents/skills/claude-code/outcome-eval/skill.yaml +51 -0
  35. package/dist/agents/skills/codex/align-design-system/SKILL.md +18 -0
  36. package/dist/agents/skills/codex/align-design-system/skill.yaml +3 -0
  37. package/dist/agents/skills/codex/harness-audit-harness-strength/SKILL.md +188 -0
  38. package/dist/agents/skills/codex/harness-audit-harness-strength/skill.yaml +54 -0
  39. package/dist/agents/skills/codex/harness-autopilot/SKILL.md +2 -0
  40. package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +58 -12
  41. package/dist/agents/skills/codex/harness-code-review/SKILL.md +107 -22
  42. package/dist/agents/skills/codex/harness-code-review/references/confidence-rubric.md +45 -0
  43. package/dist/agents/skills/codex/harness-code-review/references/risk-keywords.md +40 -0
  44. package/dist/agents/skills/codex/harness-code-review/skill.yaml +3 -0
  45. package/dist/agents/skills/codex/harness-compound/SKILL.md +7 -4
  46. package/dist/agents/skills/codex/harness-execution/SKILL.md +1 -1
  47. package/dist/agents/skills/codex/harness-git-workflow/SKILL.md +2 -0
  48. package/dist/agents/skills/codex/harness-ideate/SKILL.md +279 -0
  49. package/dist/agents/skills/codex/harness-ideate/references/scoring.md +88 -0
  50. package/dist/agents/skills/codex/harness-ideate/skill.yaml +66 -0
  51. package/dist/agents/skills/codex/harness-knowledge-pipeline/SKILL.md +2 -0
  52. package/dist/agents/skills/codex/harness-planning/SKILL.md +14 -4
  53. package/dist/agents/skills/codex/harness-pulse/SKILL.md +12 -16
  54. package/dist/agents/skills/codex/harness-roadmap/SKILL.md +62 -4
  55. package/dist/agents/skills/codex/harness-roadmap-pilot/SKILL.md +36 -6
  56. package/dist/agents/skills/codex/harness-strategy/SKILL.md +152 -0
  57. package/dist/agents/skills/codex/harness-strategy/references/interview.md +122 -0
  58. package/dist/agents/skills/codex/harness-strategy/skill.yaml +54 -0
  59. package/dist/agents/skills/codex/harness-test-advisor/SKILL.md +80 -2
  60. package/dist/agents/skills/codex/harness-test-advisor/skill.yaml +4 -1
  61. package/dist/agents/skills/codex/initialize-harness-project/SKILL.md +86 -18
  62. package/dist/agents/skills/codex/initialize-harness-project/skill.yaml +1 -0
  63. package/dist/agents/skills/codex/outcome-eval/SKILL.md +97 -0
  64. package/dist/agents/skills/codex/outcome-eval/skill.yaml +51 -0
  65. package/dist/agents/skills/cursor/align-design-system/SKILL.md +18 -0
  66. package/dist/agents/skills/cursor/align-design-system/skill.yaml +3 -0
  67. package/dist/agents/skills/cursor/harness-audit-harness-strength/SKILL.md +188 -0
  68. package/dist/agents/skills/cursor/harness-audit-harness-strength/skill.yaml +54 -0
  69. package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +2 -0
  70. package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +58 -12
  71. package/dist/agents/skills/cursor/harness-code-review/SKILL.md +107 -22
  72. package/dist/agents/skills/cursor/harness-code-review/references/confidence-rubric.md +45 -0
  73. package/dist/agents/skills/cursor/harness-code-review/references/risk-keywords.md +40 -0
  74. package/dist/agents/skills/cursor/harness-code-review/skill.yaml +3 -0
  75. package/dist/agents/skills/cursor/harness-compound/SKILL.md +7 -4
  76. package/dist/agents/skills/cursor/harness-execution/SKILL.md +1 -1
  77. package/dist/agents/skills/cursor/harness-git-workflow/SKILL.md +2 -0
  78. package/dist/agents/skills/cursor/harness-ideate/SKILL.md +279 -0
  79. package/dist/agents/skills/cursor/harness-ideate/references/scoring.md +88 -0
  80. package/dist/agents/skills/cursor/harness-ideate/skill.yaml +66 -0
  81. package/dist/agents/skills/cursor/harness-knowledge-pipeline/SKILL.md +2 -0
  82. package/dist/agents/skills/cursor/harness-planning/SKILL.md +14 -4
  83. package/dist/agents/skills/cursor/harness-pulse/SKILL.md +12 -16
  84. package/dist/agents/skills/cursor/harness-roadmap/SKILL.md +62 -4
  85. package/dist/agents/skills/cursor/harness-roadmap-pilot/SKILL.md +36 -6
  86. package/dist/agents/skills/cursor/harness-strategy/SKILL.md +152 -0
  87. package/dist/agents/skills/cursor/harness-strategy/references/interview.md +122 -0
  88. package/dist/agents/skills/cursor/harness-strategy/skill.yaml +54 -0
  89. package/dist/agents/skills/cursor/harness-test-advisor/SKILL.md +80 -2
  90. package/dist/agents/skills/cursor/harness-test-advisor/skill.yaml +4 -1
  91. package/dist/agents/skills/cursor/initialize-harness-project/SKILL.md +86 -18
  92. package/dist/agents/skills/cursor/initialize-harness-project/skill.yaml +1 -0
  93. package/dist/agents/skills/cursor/outcome-eval/SKILL.md +97 -0
  94. package/dist/agents/skills/cursor/outcome-eval/skill.yaml +51 -0
  95. package/dist/agents/skills/gemini-cli/align-design-system/SKILL.md +18 -0
  96. package/dist/agents/skills/gemini-cli/align-design-system/skill.yaml +3 -0
  97. package/dist/agents/skills/gemini-cli/harness-audit-harness-strength/SKILL.md +188 -0
  98. package/dist/agents/skills/gemini-cli/harness-audit-harness-strength/skill.yaml +54 -0
  99. package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +2 -0
  100. package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +58 -12
  101. package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +107 -22
  102. package/dist/agents/skills/gemini-cli/harness-code-review/references/confidence-rubric.md +45 -0
  103. package/dist/agents/skills/gemini-cli/harness-code-review/references/risk-keywords.md +40 -0
  104. package/dist/agents/skills/gemini-cli/harness-code-review/skill.yaml +3 -0
  105. package/dist/agents/skills/gemini-cli/harness-compound/SKILL.md +7 -4
  106. package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +1 -1
  107. package/dist/agents/skills/gemini-cli/harness-git-workflow/SKILL.md +2 -0
  108. package/dist/agents/skills/gemini-cli/harness-ideate/SKILL.md +279 -0
  109. package/dist/agents/skills/gemini-cli/harness-ideate/references/scoring.md +88 -0
  110. package/dist/agents/skills/gemini-cli/harness-ideate/skill.yaml +66 -0
  111. package/dist/agents/skills/gemini-cli/harness-knowledge-pipeline/SKILL.md +2 -0
  112. package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +14 -4
  113. package/dist/agents/skills/gemini-cli/harness-pulse/SKILL.md +12 -16
  114. package/dist/agents/skills/gemini-cli/harness-roadmap/SKILL.md +62 -4
  115. package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/SKILL.md +36 -6
  116. package/dist/agents/skills/gemini-cli/harness-strategy/SKILL.md +152 -0
  117. package/dist/agents/skills/gemini-cli/harness-strategy/references/interview.md +122 -0
  118. package/dist/agents/skills/gemini-cli/harness-strategy/skill.yaml +54 -0
  119. package/dist/agents/skills/gemini-cli/harness-test-advisor/SKILL.md +80 -2
  120. package/dist/agents/skills/gemini-cli/harness-test-advisor/skill.yaml +4 -1
  121. package/dist/agents/skills/gemini-cli/initialize-harness-project/SKILL.md +86 -18
  122. package/dist/agents/skills/gemini-cli/initialize-harness-project/skill.yaml +1 -0
  123. package/dist/agents/skills/gemini-cli/outcome-eval/SKILL.md +97 -0
  124. package/dist/agents/skills/gemini-cli/outcome-eval/skill.yaml +51 -0
  125. package/dist/agents/skills/package.json +1 -1
  126. package/dist/agents/skills/tests/harness-strategy.test.ts +145 -0
  127. package/dist/agents/skills/tests/harness-test-advisor.test.ts +94 -0
  128. package/dist/agents-md-XOJE5ETA.js +13 -0
  129. package/dist/analyzer-V633GUHY-MBCQWKDU.js +26 -0
  130. package/dist/{architecture-LUR2I67H.js → architecture-JEZPJ725.js} +6 -6
  131. package/dist/{assess-project-OJWECOP2.js → assess-project-RHXOQNMM.js} +1 -1
  132. package/dist/bin/harness-mcp.js +17 -17
  133. package/dist/bin/harness.js +27 -27
  134. package/dist/{check-phase-gate-HS5KYLRO.js → check-phase-gate-GNDOMS35.js} +6 -6
  135. package/dist/{chunk-6UHDQP2N.js → chunk-2N4OENGE.js} +1 -1
  136. package/dist/{chunk-O2ASYKA6.js → chunk-3ISHDWO7.js} +2 -2
  137. package/dist/{chunk-GGSNWH7P.js → chunk-527G27VI.js} +5 -5
  138. package/dist/{chunk-N5NSSLMU.js → chunk-6WQCLCBO.js} +2 -2
  139. package/dist/{chunk-OH3NXXUY.js → chunk-BDGTZRZ6.js} +11 -1
  140. package/dist/{chunk-Z3TMCCZB.js → chunk-BYVT5LVO.js} +9 -9
  141. package/dist/{chunk-TIH53QXY.js → chunk-CLI4K2CH.js} +1 -1
  142. package/dist/{chunk-VSIRUZQP.js → chunk-DE5U6KOL.js} +2 -2
  143. package/dist/{chunk-FXZI6NJ2.js → chunk-GGKRA7A7.js} +51 -4
  144. package/dist/{chunk-RJ2WEES5.js → chunk-GSP2XIVS.js} +2 -2
  145. package/dist/{chunk-CZPOPMMI.js → chunk-HEIMJJI4.js} +3 -3
  146. package/dist/{chunk-7AF6C5GE.js → chunk-HWTUUQOW.js} +3 -3
  147. package/dist/{chunk-FC4JPM6W.js → chunk-KAJOS3BA.js} +3 -3
  148. package/dist/{chunk-NIVWM7OW.js → chunk-MGUPSE6D.js} +10 -10
  149. package/dist/{chunk-WZY5U6NS.js → chunk-N24HCQA4.js} +3351 -887
  150. package/dist/{chunk-Y4T6ENKQ.js → chunk-N55WOGN3.js} +86 -17
  151. package/dist/{chunk-INBTDBV2.js → chunk-NWLGL3IR.js} +1 -1
  152. package/dist/{chunk-FEKBXX2J.js → chunk-ONCPJGHY.js} +9 -9
  153. package/dist/{chunk-PTHX545Q.js → chunk-PC2R5RUJ.js} +2 -2
  154. package/dist/{chunk-H2ZJOJ7A.js → chunk-PP6ZRL5T.js} +316 -42
  155. package/dist/{chunk-LECXPXS3.js → chunk-QBC7DI4Q.js} +2 -2
  156. package/dist/{chunk-B2VAYLYI.js → chunk-UX3PQKVZ.js} +8 -3
  157. package/dist/{chunk-7PLIWP7U.js → chunk-WWEVS7RO.js} +4409 -743
  158. package/dist/{chunk-LGYXR2KZ.js → chunk-XFU6SB2Q.js} +1122 -689
  159. package/dist/{chunk-KN3EMDZ5.js → chunk-XX4OLNWQ.js} +23 -3
  160. package/dist/{chunk-VI4IS55S.js → chunk-YQSYCBAH.js} +6 -6
  161. package/dist/{chunk-LYIPI2SJ.js → chunk-Z4AWEIBY.js} +6 -6
  162. package/dist/{ci-workflow-MDSTHJOY.js → ci-workflow-ORZ4F45F.js} +5 -5
  163. package/dist/{dist-E3SAAHCM.js → dist-ICW4QUEW.js} +5 -1
  164. package/dist/{dist-72ID44UE.js → dist-LHINSVK4.js} +136 -4
  165. package/dist/{dist-R3TOOPJ7.js → dist-OWHMNL4W.js} +1 -1
  166. package/dist/{docs-2RFOJ6XY.js → docs-AU3DXFFO.js} +6 -6
  167. package/dist/engine-6GPWOYQH.js +13 -0
  168. package/dist/{entropy-3UX6644G.js → entropy-VLKDRMRT.js} +5 -5
  169. package/dist/{feedback-CVCFYND4.js → feedback-YXYY44ZC.js} +1 -1
  170. package/dist/{generate-agent-definitions-HZ3XENWO.js → generate-agent-definitions-XIHQPKG3.js} +6 -6
  171. package/dist/{glob-helper-EX4YZKZO.js → glob-helper-GLZAURJC.js} +1 -1
  172. package/dist/{graph-loader-EIFEOUVI.js → graph-loader-HHXN5FLP.js} +1 -1
  173. package/dist/hooks/cost-tracker.js +29 -6
  174. package/dist/index.d.ts +202 -0
  175. package/dist/index.js +27 -27
  176. package/dist/{loader-6RHWU5FH.js → loader-YAN56MT3.js} +5 -5
  177. package/dist/{mcp-OYR26JDI.js → mcp-RK3SFVYB.js} +17 -17
  178. package/dist/{performance-JJMIRXCH.js → performance-64DPTLLQ.js} +6 -6
  179. package/dist/{review-pipeline-BHQZIXWZ.js → review-pipeline-NENG6LW7.js} +5 -5
  180. package/dist/{runtime-DALTAVTN.js → runtime-FFIIRT2T.js} +5 -5
  181. package/dist/{scan-LYKLM4EQ.js → scan-P7YFKB77.js} +1 -1
  182. package/dist/{security-RMLMYFPB.js → security-3PIBN35B.js} +1 -1
  183. package/dist/templates/basic/harness.config.json.hbs +34 -0
  184. package/dist/templates/ci/README.md +86 -0
  185. package/dist/templates/ci/required-review.ruleset.json +20 -0
  186. package/dist/templates/ci/required-review.yml.hbs +57 -0
  187. package/dist/templates/ci/template.json +5 -0
  188. package/dist/templates/intermediate/harness.config.json.hbs +36 -0
  189. package/dist/templates/orchestrator/harness.orchestrator.md +9 -0
  190. package/dist/{tool-tiers-B7JC2XC3.js → tool-tiers-OKK5FE57.js} +2 -0
  191. package/dist/{validate-R7DZRDFK.js → validate-7IAF2ES3.js} +6 -6
  192. package/dist/validate-cross-check-QPSAOZKD.js +13 -0
  193. package/package.json +8 -8
  194. package/dist/agents-md-FKMKH6ZF.js +0 -13
  195. package/dist/analyzer-H3AHBFSL-KPOPJYRB.js +0 -26
  196. package/dist/engine-BSFKOGPN.js +0 -13
  197. package/dist/validate-cross-check-AUUZFNVL.js +0 -13
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  createGenerateAgentDefinitionsCommand,
3
3
  generateAgentDefinitions
4
- } from "./chunk-INBTDBV2.js";
4
+ } from "./chunk-NWLGL3IR.js";
5
5
  import "./chunk-KET4QQZB.js";
6
- import "./chunk-PTHX545Q.js";
6
+ import "./chunk-PC2R5RUJ.js";
7
7
  import "./chunk-3ISINLYT.js";
8
8
  import "./chunk-6B6UN6SG.js";
9
9
  import "./chunk-3WGJMBKH.js";
10
- import "./chunk-WZY5U6NS.js";
11
- import "./chunk-Y4T6ENKQ.js";
12
- import "./chunk-OH3NXXUY.js";
13
- import "./chunk-H2ZJOJ7A.js";
10
+ import "./chunk-N24HCQA4.js";
11
+ import "./chunk-N55WOGN3.js";
12
+ import "./chunk-BDGTZRZ6.js";
13
+ import "./chunk-PP6ZRL5T.js";
14
14
  import "./chunk-QCLOIUMX.js";
15
15
  import "./chunk-XARGEOJV.js";
16
16
  import "./chunk-KFQGP6VL.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_SKIP_DIRS,
3
3
  init_dist
4
- } from "./chunk-H2ZJOJ7A.js";
4
+ } from "./chunk-PP6ZRL5T.js";
5
5
  import "./chunk-KFQGP6VL.js";
6
6
 
7
7
  // src/mcp/utils/glob-helper.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  clearGraphStoreCache,
3
3
  loadGraphStore
4
- } from "./chunk-TIH53QXY.js";
4
+ } from "./chunk-CLI4K2CH.js";
5
5
  import "./chunk-KFQGP6VL.js";
6
6
  export {
7
7
  clearGraphStoreCache,
@@ -7,13 +7,36 @@ import { readFileSync, mkdirSync, appendFileSync } from 'node:fs';
7
7
  import { join } from 'node:path';
8
8
  import process from 'node:process';
9
9
 
10
- function main() {
11
- let raw = '';
12
- try {
13
- raw = readFileSync(0, 'utf-8');
14
- } catch {
15
- process.exit(0);
10
+ /** Synchronous sleep (no busy-spin) used to back off between stdin read retries. */
11
+ function sleepMs(ms) {
12
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
13
+ }
14
+
15
+ /**
16
+ * Read all of stdin synchronously, tolerating the EAGAIN that fd 0 throws when
17
+ * it is a non-blocking pipe with data not yet delivered. Under load (notably CI
18
+ * under v8 coverage) the first read can race ahead of the writer; without the
19
+ * retry the hook silently fail-opens and drops the cost entry. A genuinely empty
20
+ * stdin returns '' immediately (EOF, no EAGAIN), so the empty/malformed paths
21
+ * stay fast. Bounded so a stuck pipe can't hang the hook.
22
+ */
23
+ function readStdin() {
24
+ const deadline = Date.now() + 2000;
25
+ for (;;) {
26
+ try {
27
+ return readFileSync(0, 'utf-8');
28
+ } catch (err) {
29
+ if (err && err.code === 'EAGAIN' && Date.now() < deadline) {
30
+ sleepMs(10);
31
+ continue;
32
+ }
33
+ return '';
34
+ }
16
35
  }
36
+ }
37
+
38
+ function main() {
39
+ const raw = readStdin();
17
40
 
18
41
  if (!raw.trim()) {
19
42
  process.exit(0);
package/dist/index.d.ts CHANGED
@@ -1857,6 +1857,154 @@ declare const HarnessConfigSchema: z.ZodObject<{
1857
1857
  enabled?: boolean | undefined;
1858
1858
  cacheTtlHours?: number | undefined;
1859
1859
  }>>;
1860
+ /**
1861
+ * Local Model Lifecycle Manager (LMLM) configuration. Optional and
1862
+ * disabled by default (`enabled: false`); see
1863
+ * `docs/changes/local-model-lifecycle-manager/proposal.md`.
1864
+ */
1865
+ localModels: z.ZodOptional<z.ZodObject<{
1866
+ /** Opt-in switch. Default false preserves today's behavior. */
1867
+ enabled: z.ZodDefault<z.ZodBoolean>;
1868
+ pool: z.ZodDefault<z.ZodObject<{
1869
+ /** Hard ceiling on total on-disk size of installed pool members. */
1870
+ diskBudgetGb: z.ZodDefault<z.ZodNumber>;
1871
+ /** Hugging Face org allowlist. Models outside these orgs cannot be installed (D1). */
1872
+ allowedOrgs: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1873
+ /** Optional family allowlist; empty means "all families under the allowed orgs". */
1874
+ allowedFamilies: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1875
+ }, "strip", z.ZodTypeAny, {
1876
+ diskBudgetGb: number;
1877
+ allowedOrgs: string[];
1878
+ allowedFamilies: string[];
1879
+ }, {
1880
+ diskBudgetGb?: number | undefined;
1881
+ allowedOrgs?: string[] | undefined;
1882
+ allowedFamilies?: string[] | undefined;
1883
+ }>>;
1884
+ refresh: z.ZodDefault<z.ZodObject<{
1885
+ /** Re-rank cadence in ms. Floor 1h to keep HF API usage civil (D9). */
1886
+ intervalMs: z.ZodDefault<z.ZodNumber>;
1887
+ /** Minimum score delta to emit a swap proposal (D2). */
1888
+ proposalThreshold: z.ZodDefault<z.ZodNumber>;
1889
+ /** Random jitter added to the interval to avoid thundering herd (D9). */
1890
+ jitterMs: z.ZodDefault<z.ZodNumber>;
1891
+ }, "strip", z.ZodTypeAny, {
1892
+ proposalThreshold: number;
1893
+ intervalMs: number;
1894
+ jitterMs: number;
1895
+ }, {
1896
+ proposalThreshold?: number | undefined;
1897
+ intervalMs?: number | undefined;
1898
+ jitterMs?: number | undefined;
1899
+ }>>;
1900
+ installer: z.ZodDefault<z.ZodObject<{
1901
+ /** `'ollama'` performs auto-install via REST; `'advisory'` emits copy-paste only (D4). */
1902
+ backend: z.ZodDefault<z.ZodEnum<["ollama", "advisory"]>>;
1903
+ /** Ollama REST endpoint. Only consulted when `backend === 'ollama'`. */
1904
+ ollamaEndpoint: z.ZodDefault<z.ZodString>;
1905
+ }, "strip", z.ZodTypeAny, {
1906
+ backend: "ollama" | "advisory";
1907
+ ollamaEndpoint: string;
1908
+ }, {
1909
+ backend?: "ollama" | "advisory" | undefined;
1910
+ ollamaEndpoint?: string | undefined;
1911
+ }>>;
1912
+ hardware: z.ZodOptional<z.ZodObject<{
1913
+ /** Manual override that skips autodetection (D7 fallback path). */
1914
+ override: z.ZodOptional<z.ZodObject<{
1915
+ platform: z.ZodEnum<["macos", "nvidia", "cpu"]>;
1916
+ vramGb: z.ZodNumber;
1917
+ bandwidthGbps: z.ZodNumber;
1918
+ ramGb: z.ZodOptional<z.ZodNumber>;
1919
+ gpuName: z.ZodOptional<z.ZodString>;
1920
+ cpuName: z.ZodOptional<z.ZodString>;
1921
+ }, "strip", z.ZodTypeAny, {
1922
+ platform: "macos" | "nvidia" | "cpu";
1923
+ vramGb: number;
1924
+ bandwidthGbps: number;
1925
+ ramGb?: number | undefined;
1926
+ gpuName?: string | undefined;
1927
+ cpuName?: string | undefined;
1928
+ }, {
1929
+ platform: "macos" | "nvidia" | "cpu";
1930
+ vramGb: number;
1931
+ bandwidthGbps: number;
1932
+ ramGb?: number | undefined;
1933
+ gpuName?: string | undefined;
1934
+ cpuName?: string | undefined;
1935
+ }>>;
1936
+ }, "strip", z.ZodTypeAny, {
1937
+ override?: {
1938
+ platform: "macos" | "nvidia" | "cpu";
1939
+ vramGb: number;
1940
+ bandwidthGbps: number;
1941
+ ramGb?: number | undefined;
1942
+ gpuName?: string | undefined;
1943
+ cpuName?: string | undefined;
1944
+ } | undefined;
1945
+ }, {
1946
+ override?: {
1947
+ platform: "macos" | "nvidia" | "cpu";
1948
+ vramGb: number;
1949
+ bandwidthGbps: number;
1950
+ ramGb?: number | undefined;
1951
+ gpuName?: string | undefined;
1952
+ cpuName?: string | undefined;
1953
+ } | undefined;
1954
+ }>>;
1955
+ }, "strip", z.ZodTypeAny, {
1956
+ enabled: boolean;
1957
+ pool: {
1958
+ diskBudgetGb: number;
1959
+ allowedOrgs: string[];
1960
+ allowedFamilies: string[];
1961
+ };
1962
+ refresh: {
1963
+ proposalThreshold: number;
1964
+ intervalMs: number;
1965
+ jitterMs: number;
1966
+ };
1967
+ installer: {
1968
+ backend: "ollama" | "advisory";
1969
+ ollamaEndpoint: string;
1970
+ };
1971
+ hardware?: {
1972
+ override?: {
1973
+ platform: "macos" | "nvidia" | "cpu";
1974
+ vramGb: number;
1975
+ bandwidthGbps: number;
1976
+ ramGb?: number | undefined;
1977
+ gpuName?: string | undefined;
1978
+ cpuName?: string | undefined;
1979
+ } | undefined;
1980
+ } | undefined;
1981
+ }, {
1982
+ enabled?: boolean | undefined;
1983
+ pool?: {
1984
+ diskBudgetGb?: number | undefined;
1985
+ allowedOrgs?: string[] | undefined;
1986
+ allowedFamilies?: string[] | undefined;
1987
+ } | undefined;
1988
+ refresh?: {
1989
+ proposalThreshold?: number | undefined;
1990
+ intervalMs?: number | undefined;
1991
+ jitterMs?: number | undefined;
1992
+ } | undefined;
1993
+ installer?: {
1994
+ backend?: "ollama" | "advisory" | undefined;
1995
+ ollamaEndpoint?: string | undefined;
1996
+ } | undefined;
1997
+ hardware?: {
1998
+ override?: {
1999
+ platform: "macos" | "nvidia" | "cpu";
2000
+ vramGb: number;
2001
+ bandwidthGbps: number;
2002
+ ramGb?: number | undefined;
2003
+ gpuName?: string | undefined;
2004
+ cpuName?: string | undefined;
2005
+ } | undefined;
2006
+ } | undefined;
2007
+ }>>;
1860
2008
  }, "strip", z.ZodTypeAny, {
1861
2009
  version: 1;
1862
2010
  rootDir: string;
@@ -2148,6 +2296,33 @@ declare const HarnessConfigSchema: z.ZodObject<{
2148
2296
  enabled: boolean;
2149
2297
  cacheTtlHours: number;
2150
2298
  } | undefined;
2299
+ localModels?: {
2300
+ enabled: boolean;
2301
+ pool: {
2302
+ diskBudgetGb: number;
2303
+ allowedOrgs: string[];
2304
+ allowedFamilies: string[];
2305
+ };
2306
+ refresh: {
2307
+ proposalThreshold: number;
2308
+ intervalMs: number;
2309
+ jitterMs: number;
2310
+ };
2311
+ installer: {
2312
+ backend: "ollama" | "advisory";
2313
+ ollamaEndpoint: string;
2314
+ };
2315
+ hardware?: {
2316
+ override?: {
2317
+ platform: "macos" | "nvidia" | "cpu";
2318
+ vramGb: number;
2319
+ bandwidthGbps: number;
2320
+ ramGb?: number | undefined;
2321
+ gpuName?: string | undefined;
2322
+ cpuName?: string | undefined;
2323
+ } | undefined;
2324
+ } | undefined;
2325
+ } | undefined;
2151
2326
  }, {
2152
2327
  version: 1;
2153
2328
  name?: string | undefined;
@@ -2439,6 +2614,33 @@ declare const HarnessConfigSchema: z.ZodObject<{
2439
2614
  enabled?: boolean | undefined;
2440
2615
  cacheTtlHours?: number | undefined;
2441
2616
  } | undefined;
2617
+ localModels?: {
2618
+ enabled?: boolean | undefined;
2619
+ pool?: {
2620
+ diskBudgetGb?: number | undefined;
2621
+ allowedOrgs?: string[] | undefined;
2622
+ allowedFamilies?: string[] | undefined;
2623
+ } | undefined;
2624
+ refresh?: {
2625
+ proposalThreshold?: number | undefined;
2626
+ intervalMs?: number | undefined;
2627
+ jitterMs?: number | undefined;
2628
+ } | undefined;
2629
+ installer?: {
2630
+ backend?: "ollama" | "advisory" | undefined;
2631
+ ollamaEndpoint?: string | undefined;
2632
+ } | undefined;
2633
+ hardware?: {
2634
+ override?: {
2635
+ platform: "macos" | "nvidia" | "cpu";
2636
+ vramGb: number;
2637
+ bandwidthGbps: number;
2638
+ ramGb?: number | undefined;
2639
+ gpuName?: string | undefined;
2640
+ cpuName?: string | undefined;
2641
+ } | undefined;
2642
+ } | undefined;
2643
+ } | undefined;
2442
2644
  }>;
2443
2645
  /**
2444
2646
  * Type representing the full Harness configuration.
package/dist/index.js CHANGED
@@ -12,19 +12,19 @@ import {
12
12
  runSnapshotCapture,
13
13
  runUninstall,
14
14
  runUninstallConstraints
15
- } from "./chunk-LGYXR2KZ.js";
15
+ } from "./chunk-XFU6SB2Q.js";
16
16
  import {
17
17
  generateRuntime
18
- } from "./chunk-N5NSSLMU.js";
18
+ } from "./chunk-6WQCLCBO.js";
19
19
  import {
20
20
  generateAgentsMd
21
- } from "./chunk-LECXPXS3.js";
21
+ } from "./chunk-QBC7DI4Q.js";
22
22
  import {
23
23
  generateCIWorkflow
24
- } from "./chunk-RJ2WEES5.js";
24
+ } from "./chunk-GSP2XIVS.js";
25
25
  import {
26
26
  runCrossCheck
27
- } from "./chunk-O2ASYKA6.js";
27
+ } from "./chunk-3ISHDWO7.js";
28
28
  import {
29
29
  AGENT_DESCRIPTIONS,
30
30
  DEFAULT_TOOLS,
@@ -33,14 +33,14 @@ import {
33
33
  generateAgentDefinitions,
34
34
  renderClaudeCodeAgent,
35
35
  renderGeminiAgent
36
- } from "./chunk-INBTDBV2.js";
36
+ } from "./chunk-NWLGL3IR.js";
37
37
  import "./chunk-KET4QQZB.js";
38
38
  import {
39
39
  runScan
40
- } from "./chunk-6UHDQP2N.js";
40
+ } from "./chunk-2N4OENGE.js";
41
41
  import {
42
42
  TemplateEngine
43
- } from "./chunk-B2VAYLYI.js";
43
+ } from "./chunk-UX3PQKVZ.js";
44
44
  import "./chunk-CQ553GZO.js";
45
45
  import {
46
46
  generateSkillFiles
@@ -48,7 +48,7 @@ import {
48
48
  import {
49
49
  listPersonas,
50
50
  loadPersona
51
- } from "./chunk-PTHX545Q.js";
51
+ } from "./chunk-PC2R5RUJ.js";
52
52
  import {
53
53
  detectTrigger,
54
54
  runPersona
@@ -63,26 +63,26 @@ import {
63
63
  OutputFormatter,
64
64
  OutputMode,
65
65
  runCheckPhaseGate
66
- } from "./chunk-FC4JPM6W.js";
66
+ } from "./chunk-KAJOS3BA.js";
67
67
  import {
68
68
  createHarnessServer,
69
69
  generateSlashCommands,
70
70
  getToolDefinitions,
71
71
  startServer
72
- } from "./chunk-7PLIWP7U.js";
73
- import "./chunk-CZPOPMMI.js";
74
- import "./chunk-KN3EMDZ5.js";
75
- import "./chunk-VI4IS55S.js";
76
- import "./chunk-LYIPI2SJ.js";
77
- import "./chunk-FEKBXX2J.js";
72
+ } from "./chunk-WWEVS7RO.js";
73
+ import "./chunk-HEIMJJI4.js";
74
+ import "./chunk-XX4OLNWQ.js";
75
+ import "./chunk-YQSYCBAH.js";
76
+ import "./chunk-Z4AWEIBY.js";
77
+ import "./chunk-ONCPJGHY.js";
78
78
  import "./chunk-IOW3MW2K.js";
79
- import "./chunk-Z3TMCCZB.js";
79
+ import "./chunk-BYVT5LVO.js";
80
80
  import "./chunk-3ISINLYT.js";
81
- import "./chunk-TIH53QXY.js";
82
- import "./chunk-7AF6C5GE.js";
83
- import "./chunk-GGSNWH7P.js";
84
- import "./chunk-VSIRUZQP.js";
85
- import "./chunk-NIVWM7OW.js";
81
+ import "./chunk-CLI4K2CH.js";
82
+ import "./chunk-HWTUUQOW.js";
83
+ import "./chunk-527G27VI.js";
84
+ import "./chunk-DE5U6KOL.js";
85
+ import "./chunk-MGUPSE6D.js";
86
86
  import "./chunk-RC3OI5NK.js";
87
87
  import "./chunk-W6Y7ZW3Y.js";
88
88
  import "./chunk-27AJKSQY.js";
@@ -92,7 +92,7 @@ import {
92
92
  findConfigFile,
93
93
  loadConfig,
94
94
  resolveConfig
95
- } from "./chunk-FXZI6NJ2.js";
95
+ } from "./chunk-GGKRA7A7.js";
96
96
  import "./chunk-ZCZD7FHU.js";
97
97
  import {
98
98
  logger
@@ -102,11 +102,11 @@ import {
102
102
  ExitCode,
103
103
  handleError
104
104
  } from "./chunk-3WGJMBKH.js";
105
- import "./chunk-WZY5U6NS.js";
105
+ import "./chunk-N24HCQA4.js";
106
106
  import "./chunk-BM3PWGXQ.js";
107
- import "./chunk-Y4T6ENKQ.js";
108
- import "./chunk-OH3NXXUY.js";
109
- import "./chunk-H2ZJOJ7A.js";
107
+ import "./chunk-N55WOGN3.js";
108
+ import "./chunk-BDGTZRZ6.js";
109
+ import "./chunk-PP6ZRL5T.js";
110
110
  import "./chunk-QCLOIUMX.js";
111
111
  import "./chunk-XARGEOJV.js";
112
112
  import "./chunk-KFQGP6VL.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  listPersonas,
3
3
  loadPersona
4
- } from "./chunk-PTHX545Q.js";
5
- import "./chunk-WZY5U6NS.js";
6
- import "./chunk-Y4T6ENKQ.js";
7
- import "./chunk-OH3NXXUY.js";
8
- import "./chunk-H2ZJOJ7A.js";
4
+ } from "./chunk-PC2R5RUJ.js";
5
+ import "./chunk-N24HCQA4.js";
6
+ import "./chunk-N55WOGN3.js";
7
+ import "./chunk-BDGTZRZ6.js";
8
+ import "./chunk-PP6ZRL5T.js";
9
9
  import "./chunk-QCLOIUMX.js";
10
10
  import "./chunk-XARGEOJV.js";
11
11
  import "./chunk-KFQGP6VL.js";
@@ -2,22 +2,22 @@ import {
2
2
  createHarnessServer,
3
3
  getToolDefinitions,
4
4
  startServer
5
- } from "./chunk-7PLIWP7U.js";
6
- import "./chunk-CZPOPMMI.js";
7
- import "./chunk-KN3EMDZ5.js";
8
- import "./chunk-VI4IS55S.js";
9
- import "./chunk-LYIPI2SJ.js";
10
- import "./chunk-FEKBXX2J.js";
5
+ } from "./chunk-WWEVS7RO.js";
6
+ import "./chunk-HEIMJJI4.js";
7
+ import "./chunk-XX4OLNWQ.js";
8
+ import "./chunk-YQSYCBAH.js";
9
+ import "./chunk-Z4AWEIBY.js";
10
+ import "./chunk-ONCPJGHY.js";
11
11
  import "./chunk-IOW3MW2K.js";
12
- import "./chunk-Z3TMCCZB.js";
12
+ import "./chunk-BYVT5LVO.js";
13
13
  import "./chunk-3ISINLYT.js";
14
- import "./chunk-TIH53QXY.js";
15
- import "./chunk-7AF6C5GE.js";
16
- import "./chunk-GGSNWH7P.js";
14
+ import "./chunk-CLI4K2CH.js";
15
+ import "./chunk-HWTUUQOW.js";
16
+ import "./chunk-527G27VI.js";
17
17
  import {
18
18
  resolveProjectConfig
19
- } from "./chunk-VSIRUZQP.js";
20
- import "./chunk-NIVWM7OW.js";
19
+ } from "./chunk-DE5U6KOL.js";
20
+ import "./chunk-MGUPSE6D.js";
21
21
  import {
22
22
  resultToMcpResponse
23
23
  } from "./chunk-RC3OI5NK.js";
@@ -25,14 +25,14 @@ import "./chunk-W6Y7ZW3Y.js";
25
25
  import "./chunk-27AJKSQY.js";
26
26
  import "./chunk-6B6UN6SG.js";
27
27
  import "./chunk-HIK6OEUF.js";
28
- import "./chunk-FXZI6NJ2.js";
28
+ import "./chunk-GGKRA7A7.js";
29
29
  import "./chunk-ZCZD7FHU.js";
30
30
  import "./chunk-EBJQ6N4M.js";
31
31
  import "./chunk-3WGJMBKH.js";
32
- import "./chunk-WZY5U6NS.js";
33
- import "./chunk-Y4T6ENKQ.js";
34
- import "./chunk-OH3NXXUY.js";
35
- import "./chunk-H2ZJOJ7A.js";
32
+ import "./chunk-N24HCQA4.js";
33
+ import "./chunk-N55WOGN3.js";
34
+ import "./chunk-BDGTZRZ6.js";
35
+ import "./chunk-PP6ZRL5T.js";
36
36
  import "./chunk-QCLOIUMX.js";
37
37
  import "./chunk-XARGEOJV.js";
38
38
  import "./chunk-KFQGP6VL.js";
@@ -7,16 +7,16 @@ import {
7
7
  handleGetPerfBaselines,
8
8
  handleUpdatePerfBaselines,
9
9
  updatePerfBaselinesDefinition
10
- } from "./chunk-FEKBXX2J.js";
10
+ } from "./chunk-ONCPJGHY.js";
11
11
  import "./chunk-RC3OI5NK.js";
12
12
  import "./chunk-W6Y7ZW3Y.js";
13
- import "./chunk-FXZI6NJ2.js";
13
+ import "./chunk-GGKRA7A7.js";
14
14
  import "./chunk-ZCZD7FHU.js";
15
15
  import "./chunk-3WGJMBKH.js";
16
- import "./chunk-WZY5U6NS.js";
17
- import "./chunk-Y4T6ENKQ.js";
18
- import "./chunk-OH3NXXUY.js";
19
- import "./chunk-H2ZJOJ7A.js";
16
+ import "./chunk-N24HCQA4.js";
17
+ import "./chunk-N55WOGN3.js";
18
+ import "./chunk-BDGTZRZ6.js";
19
+ import "./chunk-PP6ZRL5T.js";
20
20
  import "./chunk-QCLOIUMX.js";
21
21
  import "./chunk-XARGEOJV.js";
22
22
  import "./chunk-KFQGP6VL.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  handleRunCodeReview,
3
3
  runCodeReviewDefinition
4
- } from "./chunk-KN3EMDZ5.js";
4
+ } from "./chunk-XX4OLNWQ.js";
5
5
  import "./chunk-W6Y7ZW3Y.js";
6
- import "./chunk-WZY5U6NS.js";
7
- import "./chunk-Y4T6ENKQ.js";
8
- import "./chunk-OH3NXXUY.js";
9
- import "./chunk-H2ZJOJ7A.js";
6
+ import "./chunk-N24HCQA4.js";
7
+ import "./chunk-N55WOGN3.js";
8
+ import "./chunk-BDGTZRZ6.js";
9
+ import "./chunk-PP6ZRL5T.js";
10
10
  import "./chunk-QCLOIUMX.js";
11
11
  import "./chunk-XARGEOJV.js";
12
12
  import "./chunk-KFQGP6VL.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  generateRuntime
3
- } from "./chunk-N5NSSLMU.js";
3
+ } from "./chunk-6WQCLCBO.js";
4
4
  import "./chunk-KET4QQZB.js";
5
- import "./chunk-WZY5U6NS.js";
6
- import "./chunk-Y4T6ENKQ.js";
7
- import "./chunk-OH3NXXUY.js";
8
- import "./chunk-H2ZJOJ7A.js";
5
+ import "./chunk-N24HCQA4.js";
6
+ import "./chunk-N55WOGN3.js";
7
+ import "./chunk-BDGTZRZ6.js";
8
+ import "./chunk-PP6ZRL5T.js";
9
9
  import "./chunk-QCLOIUMX.js";
10
10
  import "./chunk-XARGEOJV.js";
11
11
  import "./chunk-KFQGP6VL.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createScanCommand,
3
3
  runScan
4
- } from "./chunk-6UHDQP2N.js";
4
+ } from "./chunk-2N4OENGE.js";
5
5
  import "./chunk-ZCZD7FHU.js";
6
6
  import "./chunk-KFQGP6VL.js";
7
7
  export {
@@ -3,7 +3,7 @@ import {
3
3
  handleGetSecurityTrends,
4
4
  handleRunSecurityScan,
5
5
  runSecurityScanDefinition
6
- } from "./chunk-CZPOPMMI.js";
6
+ } from "./chunk-HEIMJJI4.js";
7
7
  import "./chunk-W6Y7ZW3Y.js";
8
8
  import "./chunk-KFQGP6VL.js";
9
9
  export {
@@ -7,8 +7,42 @@
7
7
  { "name": "services", "pattern": "src/services/**", "allowedDependencies": ["types", "domain"] },
8
8
  { "name": "api", "pattern": "src/api/**", "allowedDependencies": ["types", "domain", "services"] }
9
9
  ],
10
+ "architecture": {
11
+ "enabled": true,
12
+ "baselinePath": ".harness/arch/baselines.json",
13
+ "thresholds": {
14
+ "circular-deps": { "max": 0 },
15
+ "layer-violations": { "max": 0 },
16
+ "complexity": { "max": 20 },
17
+ "module-size": { "maxFiles": 50, "maxLoc": 5000 },
18
+ "dependency-depth": { "max": 8 }
19
+ }
20
+ },
10
21
  "agentsMapPath": "./AGENTS.md",
11
22
  "docsDir": "./docs",
23
+ "security": {
24
+ "enabled": true,
25
+ "strict": false,
26
+ "exclude": ["**/node_modules/**", "**/dist/**", "**/*.test.ts"]
27
+ },
28
+ "entropy": {
29
+ "excludePatterns": ["**/node_modules/**", "**/dist/**", "**/*.test.ts"],
30
+ "autoFix": false
31
+ },
32
+ "performance": {
33
+ "complexity": {
34
+ "enabled": true,
35
+ "thresholds": {
36
+ "cyclomaticComplexity": { "error": 20, "warn": 15 }
37
+ }
38
+ },
39
+ "coupling": {
40
+ "enabled": true,
41
+ "thresholds": {
42
+ "fanOut": { "warn": 15 }
43
+ }
44
+ }
45
+ },
12
46
  "template": {
13
47
  "level": "basic",
14
48
  "version": 1