@harness-engineering/cli 1.24.3 → 1.25.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 (116) hide show
  1. package/dist/agents/skills/claude-code/harness-architecture-advisor/SKILL.md +10 -6
  2. package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +40 -5
  3. package/dist/agents/skills/claude-code/harness-git-workflow/SKILL.md +32 -11
  4. package/dist/agents/skills/claude-code/harness-planning/SKILL.md +19 -0
  5. package/dist/agents/skills/claude-code/harness-skill-authoring/SKILL.md +42 -7
  6. package/dist/agents/skills/claude-code/harness-verification/SKILL.md +25 -0
  7. package/dist/agents/skills/codex/harness-architecture-advisor/SKILL.md +10 -6
  8. package/dist/agents/skills/codex/harness-code-review/SKILL.md +40 -5
  9. package/dist/agents/skills/codex/harness-git-workflow/SKILL.md +32 -11
  10. package/dist/agents/skills/codex/harness-planning/SKILL.md +19 -0
  11. package/dist/agents/skills/codex/harness-skill-authoring/SKILL.md +42 -7
  12. package/dist/agents/skills/codex/harness-verification/SKILL.md +25 -0
  13. package/dist/agents/skills/cursor/harness-architecture-advisor/SKILL.md +10 -6
  14. package/dist/agents/skills/cursor/harness-code-review/SKILL.md +40 -5
  15. package/dist/agents/skills/cursor/harness-git-workflow/SKILL.md +32 -11
  16. package/dist/agents/skills/cursor/harness-planning/SKILL.md +19 -0
  17. package/dist/agents/skills/cursor/harness-skill-authoring/SKILL.md +42 -7
  18. package/dist/agents/skills/cursor/harness-verification/SKILL.md +25 -0
  19. package/dist/agents/skills/gemini-cli/harness-architecture-advisor/SKILL.md +10 -6
  20. package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +40 -5
  21. package/dist/agents/skills/gemini-cli/harness-git-workflow/SKILL.md +32 -11
  22. package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +19 -0
  23. package/dist/agents/skills/gemini-cli/harness-skill-authoring/SKILL.md +42 -7
  24. package/dist/agents/skills/gemini-cli/harness-verification/SKILL.md +25 -0
  25. package/dist/agents-md-MCUM4SIZ.js +10 -0
  26. package/dist/{architecture-FBSLURIB.js → architecture-HNIO6AUX.js} +6 -5
  27. package/dist/{assess-project-74UVWPMB.js → assess-project-6MV5TNY3.js} +2 -1
  28. package/dist/bin/harness-mcp.js +18 -17
  29. package/dist/bin/harness.js +47 -31
  30. package/dist/{check-phase-gate-WY6UICCL.js → check-phase-gate-VCBQHQAC.js} +6 -5
  31. package/dist/{chunk-Q3XYV5UC.js → chunk-47N6R2F4.js} +5 -1
  32. package/dist/{chunk-3XAPHB2Z.js → chunk-4NK7Z3BP.js} +1 -1
  33. package/dist/{chunk-I4QR3HNH.js → chunk-5BQ5BOJL.js} +5 -1
  34. package/dist/{chunk-LM5Z2WCA.js → chunk-6VZQJ5CX.js} +5 -1
  35. package/dist/{chunk-NV4FPO7J.js → chunk-AT74HEQM.js} +1 -1
  36. package/dist/{chunk-TDLOFNNQ.js → chunk-BOQRTARD.js} +1 -1
  37. package/dist/{chunk-ZAMT24QN.js → chunk-CJXVNDZZ.js} +1537 -737
  38. package/dist/{chunk-A737JDL4.js → chunk-CXJTVICF.js} +4 -4
  39. package/dist/{chunk-LOUH2LIC.js → chunk-EHRZMOQ2.js} +5 -1
  40. package/dist/{chunk-L5UONZ53.js → chunk-F23H3U5U.js} +6 -2
  41. package/dist/{chunk-YPKKEP3O.js → chunk-FES2YEQU.js} +9 -9
  42. package/dist/{chunk-SPTKLCKC.js → chunk-FIQL2HND.js} +6 -2
  43. package/dist/{chunk-FP53DDB5.js → chunk-FSNPBT74.js} +5 -1
  44. package/dist/{chunk-TB427QOK.js → chunk-GEEYCQDS.js} +13 -9
  45. package/dist/{chunk-ZOVATVQC.js → chunk-HIK6OEUF.js} +6 -1
  46. package/dist/chunk-K2SON7TI.js +5382 -0
  47. package/dist/chunk-KFQGP6VL.js +33 -0
  48. package/dist/{chunk-V2FGX2KD.js → chunk-M55DGGF3.js} +9 -5
  49. package/dist/{chunk-H4U2QNY2.js → chunk-MI6MA6OP.js} +16888 -13143
  50. package/dist/{chunk-YDRB55Q4.js → chunk-P7PANON5.js} +5 -1
  51. package/dist/chunk-RL4VMEXL.js +53 -0
  52. package/dist/{chunk-XNEMDKV5.js → chunk-RRHUCDRD.js} +1 -1
  53. package/dist/{chunk-O6UF33QH.js → chunk-RX7TUMBR.js} +320 -136
  54. package/dist/{chunk-3VYWO6QN.js → chunk-TYV4EUAD.js} +12 -8
  55. package/dist/{chunk-FJYP32IV.js → chunk-UQZBZINS.js} +6 -6
  56. package/dist/{chunk-UFQQBGC3.js → chunk-UV3BZMGT.js} +64 -3
  57. package/dist/{chunk-5PMRARB5.js → chunk-WIQA4BSH.js} +12 -5
  58. package/dist/{chunk-UQEUYRBP.js → chunk-WWACIIBA.js} +1 -1
  59. package/dist/{chunk-LVYPPKZI.js → chunk-XTITAVUR.js} +5 -1
  60. package/dist/{chunk-WEN5Z7CL.js → chunk-YTP2UDPV.js} +3 -3
  61. package/dist/ci-workflow-RTM7VVTD.js +10 -0
  62. package/dist/{constants-5JGUXPEK.js → constants-P4M3C2T3.js} +1 -0
  63. package/dist/{create-skill-QCXINA5Q.js → create-skill-6QWJHQYS.js} +3 -2
  64. package/dist/{dist-666AAZQ6.js → dist-3EWNRFFQ.js} +6 -1
  65. package/dist/{dist-RRMRZRV7.js → dist-ABTKRYZH.js} +1 -0
  66. package/dist/{dist-QW5G3GX3.js → dist-RADHOOXG.js} +4 -1
  67. package/dist/{dist-7EBSGAHX.js → dist-WCSJHQPK.js} +106 -3
  68. package/dist/{docs-H34GBVRS.js → docs-UBOGGHTY.js} +6 -5
  69. package/dist/engine-MJJAP5CH.js +10 -0
  70. package/dist/{entropy-ZAY73R6A.js → entropy-EMSXF2PX.js} +5 -4
  71. package/dist/{feedback-TMEGYMWU.js → feedback-ZLUX72HD.js} +2 -1
  72. package/dist/{generate-agent-definitions-PQPG6SX5.js → generate-agent-definitions-AWLPJ27C.js} +6 -5
  73. package/dist/{glob-helper-SRXMZPKM.js → glob-helper-VCQXK5XY.js} +2 -0
  74. package/dist/{graph-loader-M6FXJAKK.js → graph-loader-JHQVQRUS.js} +2 -1
  75. package/dist/hooks/adoption-tracker.js +189 -0
  76. package/dist/hooks/block-no-verify.js +50 -0
  77. package/dist/hooks/cost-tracker.js +66 -0
  78. package/dist/hooks/pre-compact-state.js +115 -0
  79. package/dist/hooks/profiles.ts +48 -0
  80. package/dist/hooks/protect-config.js +75 -0
  81. package/dist/hooks/quality-gate.js +131 -0
  82. package/dist/hooks/sentinel-post.js +159 -0
  83. package/dist/hooks/sentinel-pre.js +244 -0
  84. package/dist/hooks/telemetry-reporter.js +248 -0
  85. package/dist/index.d.ts +13 -7
  86. package/dist/index.js +30 -29
  87. package/dist/loader-JVSJZSWZ.js +12 -0
  88. package/dist/mcp-2553PNUC.js +38 -0
  89. package/dist/{performance-N67YJJDG.js → performance-7AGWJUY4.js} +6 -5
  90. package/dist/review-pipeline-ZWVQJTJX.js +13 -0
  91. package/dist/{runner-TY7DJGQV.js → runner-AAEF2TXY.js} +1 -0
  92. package/dist/runtime-D6YUQPP2.js +11 -0
  93. package/dist/{scan-U67OKDRS.js → scan-MPJ6JHUY.js} +2 -1
  94. package/dist/security-JLZUAQYT.js +14 -0
  95. package/dist/skill-executor-MOCUIAYS.js +9 -0
  96. package/dist/templates/base/.agnix.toml +16 -0
  97. package/dist/templates/orchestrator/WORKFLOW.md +55 -7
  98. package/dist/templates/orchestrator/template.json +1 -0
  99. package/dist/tool-tiers-7QGZ3FKY.js +98 -0
  100. package/dist/validate-TIIHRPMA.js +14 -0
  101. package/dist/validate-cross-check-ZOWFA3DB.js +10 -0
  102. package/dist/{version-KFFPOQAX.js → version-CUI434OP.js} +1 -0
  103. package/package.json +4 -4
  104. package/dist/agents-md-PBKKTSQY.js +0 -9
  105. package/dist/chunk-5LMZA5LZ.js +0 -38
  106. package/dist/chunk-OZIHPMA7.js +0 -5171
  107. package/dist/ci-workflow-QZRHAIO2.js +0 -9
  108. package/dist/engine-VUQEAJFZ.js +0 -9
  109. package/dist/loader-Y6A42WBD.js +0 -11
  110. package/dist/mcp-LCHC4NZ5.js +0 -37
  111. package/dist/review-pipeline-YXF5ITL2.js +0 -12
  112. package/dist/runtime-XNJUJCSG.js +0 -10
  113. package/dist/security-L2YN3CTI.js +0 -9
  114. package/dist/skill-executor-GA7BDX3F.js +0 -8
  115. package/dist/validate-MNE25KLZ.js +0 -13
  116. package/dist/validate-cross-check-Y4PDR63C.js +0 -9
package/dist/index.d.ts CHANGED
@@ -391,6 +391,8 @@ declare const HarnessConfigSchema: z.ZodObject<{
391
391
  }>>;
392
392
  /** Drift and stale code management settings */
393
393
  entropy: z.ZodOptional<z.ZodObject<{
394
+ /** Explicit entry points for reachability analysis (overrides auto-detection) */
395
+ entryPoints: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
394
396
  /** Patterns to exclude from entropy analysis */
395
397
  excludePatterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
396
398
  /** Whether to automatically attempt to fix simple entropy issues */
@@ -398,7 +400,9 @@ declare const HarnessConfigSchema: z.ZodObject<{
398
400
  }, "strip", z.ZodTypeAny, {
399
401
  excludePatterns: string[];
400
402
  autoFix: boolean;
403
+ entryPoints?: string[] | undefined;
401
404
  }, {
405
+ entryPoints?: string[] | undefined;
402
406
  excludePatterns?: string[] | undefined;
403
407
  autoFix?: boolean | undefined;
404
408
  }>>;
@@ -791,18 +795,18 @@ declare const HarnessConfigSchema: z.ZodObject<{
791
795
  /** Labels auto-applied to synced issues for filtering */
792
796
  labels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
793
797
  /** Maps roadmap status -> external status */
794
- statusMap: z.ZodRecord<z.ZodEnum<["backlog", "planned", "in-progress", "done", "blocked"]>, z.ZodString>;
798
+ statusMap: z.ZodRecord<z.ZodEnum<["backlog", "planned", "in-progress", "done", "blocked", "needs-human"]>, z.ZodString>;
795
799
  /** Maps external status (optionally with label) -> roadmap status */
796
800
  reverseStatusMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
797
801
  }, "strip", z.ZodTypeAny, {
798
802
  kind: "github";
799
- statusMap: Partial<Record<"backlog" | "planned" | "in-progress" | "done" | "blocked", string>>;
803
+ statusMap: Partial<Record<"backlog" | "planned" | "in-progress" | "done" | "blocked" | "needs-human", string>>;
800
804
  repo?: string | undefined;
801
805
  labels?: string[] | undefined;
802
806
  reverseStatusMap?: Record<string, string> | undefined;
803
807
  }, {
804
808
  kind: "github";
805
- statusMap: Partial<Record<"backlog" | "planned" | "in-progress" | "done" | "blocked", string>>;
809
+ statusMap: Partial<Record<"backlog" | "planned" | "in-progress" | "done" | "blocked" | "needs-human", string>>;
806
810
  repo?: string | undefined;
807
811
  labels?: string[] | undefined;
808
812
  reverseStatusMap?: Record<string, string> | undefined;
@@ -810,7 +814,7 @@ declare const HarnessConfigSchema: z.ZodObject<{
810
814
  }, "strip", z.ZodTypeAny, {
811
815
  tracker?: {
812
816
  kind: "github";
813
- statusMap: Partial<Record<"backlog" | "planned" | "in-progress" | "done" | "blocked", string>>;
817
+ statusMap: Partial<Record<"backlog" | "planned" | "in-progress" | "done" | "blocked" | "needs-human", string>>;
814
818
  repo?: string | undefined;
815
819
  labels?: string[] | undefined;
816
820
  reverseStatusMap?: Record<string, string> | undefined;
@@ -818,7 +822,7 @@ declare const HarnessConfigSchema: z.ZodObject<{
818
822
  }, {
819
823
  tracker?: {
820
824
  kind: "github";
821
- statusMap: Partial<Record<"backlog" | "planned" | "in-progress" | "done" | "blocked", string>>;
825
+ statusMap: Partial<Record<"backlog" | "planned" | "in-progress" | "done" | "blocked" | "needs-human", string>>;
822
826
  repo?: string | undefined;
823
827
  labels?: string[] | undefined;
824
828
  reverseStatusMap?: Record<string, string> | undefined;
@@ -876,6 +880,7 @@ declare const HarnessConfigSchema: z.ZodObject<{
876
880
  entropy?: {
877
881
  excludePatterns: string[];
878
882
  autoFix: boolean;
883
+ entryPoints?: string[] | undefined;
879
884
  } | undefined;
880
885
  security?: z.objectOutputType<{
881
886
  /** Whether security scanning is enabled */
@@ -974,7 +979,7 @@ declare const HarnessConfigSchema: z.ZodObject<{
974
979
  roadmap?: {
975
980
  tracker?: {
976
981
  kind: "github";
977
- statusMap: Partial<Record<"backlog" | "planned" | "in-progress" | "done" | "blocked", string>>;
982
+ statusMap: Partial<Record<"backlog" | "planned" | "in-progress" | "done" | "blocked" | "needs-human", string>>;
978
983
  repo?: string | undefined;
979
984
  labels?: string[] | undefined;
980
985
  reverseStatusMap?: Record<string, string> | undefined;
@@ -1017,6 +1022,7 @@ declare const HarnessConfigSchema: z.ZodObject<{
1017
1022
  skills?: string[] | undefined;
1018
1023
  } | undefined;
1019
1024
  entropy?: {
1025
+ entryPoints?: string[] | undefined;
1020
1026
  excludePatterns?: string[] | undefined;
1021
1027
  autoFix?: boolean | undefined;
1022
1028
  } | undefined;
@@ -1117,7 +1123,7 @@ declare const HarnessConfigSchema: z.ZodObject<{
1117
1123
  roadmap?: {
1118
1124
  tracker?: {
1119
1125
  kind: "github";
1120
- statusMap: Partial<Record<"backlog" | "planned" | "in-progress" | "done" | "blocked", string>>;
1126
+ statusMap: Partial<Record<"backlog" | "planned" | "in-progress" | "done" | "blocked" | "needs-human", string>>;
1121
1127
  repo?: string | undefined;
1122
1128
  labels?: string[] | undefined;
1123
1129
  reverseStatusMap?: Record<string, string> | undefined;
package/dist/index.js CHANGED
@@ -12,30 +12,30 @@ import {
12
12
  runSnapshotCapture,
13
13
  runUninstall,
14
14
  runUninstallConstraints
15
- } from "./chunk-ZAMT24QN.js";
15
+ } from "./chunk-CJXVNDZZ.js";
16
16
  import {
17
17
  generateAgentsMd
18
- } from "./chunk-I4QR3HNH.js";
18
+ } from "./chunk-5BQ5BOJL.js";
19
19
  import {
20
20
  generateCIWorkflow
21
- } from "./chunk-LOUH2LIC.js";
21
+ } from "./chunk-EHRZMOQ2.js";
22
22
  import {
23
23
  runCrossCheck
24
- } from "./chunk-LVYPPKZI.js";
24
+ } from "./chunk-XTITAVUR.js";
25
25
  import {
26
26
  TemplateEngine
27
- } from "./chunk-FP53DDB5.js";
27
+ } from "./chunk-FSNPBT74.js";
28
28
  import "./chunk-CQ553GZO.js";
29
29
  import {
30
30
  generateRuntime
31
- } from "./chunk-LM5Z2WCA.js";
31
+ } from "./chunk-6VZQJ5CX.js";
32
32
  import {
33
33
  detectTrigger,
34
34
  runPersona
35
35
  } from "./chunk-GISMXMVL.js";
36
36
  import {
37
37
  executeSkill
38
- } from "./chunk-UQEUYRBP.js";
38
+ } from "./chunk-WWACIIBA.js";
39
39
  import {
40
40
  ALLOWED_PERSONA_COMMANDS
41
41
  } from "./chunk-TEFCFC4H.js";
@@ -43,7 +43,7 @@ import {
43
43
  OutputFormatter,
44
44
  OutputMode,
45
45
  runCheckPhaseGate
46
- } from "./chunk-SPTKLCKC.js";
46
+ } from "./chunk-FIQL2HND.js";
47
47
  import {
48
48
  AGENT_DESCRIPTIONS,
49
49
  DEFAULT_TOOLS,
@@ -52,57 +52,58 @@ import {
52
52
  generateAgentDefinitions,
53
53
  renderClaudeCodeAgent,
54
54
  renderGeminiAgent
55
- } from "./chunk-NV4FPO7J.js";
55
+ } from "./chunk-AT74HEQM.js";
56
56
  import "./chunk-KET4QQZB.js";
57
57
  import {
58
58
  listPersonas,
59
59
  loadPersona
60
- } from "./chunk-YDRB55Q4.js";
60
+ } from "./chunk-P7PANON5.js";
61
61
  import {
62
62
  runScan
63
- } from "./chunk-3XAPHB2Z.js";
63
+ } from "./chunk-4NK7Z3BP.js";
64
64
  import {
65
65
  createHarnessServer,
66
66
  generateSlashCommands,
67
67
  getToolDefinitions,
68
68
  startServer
69
- } from "./chunk-O6UF33QH.js";
70
- import "./chunk-YPKKEP3O.js";
71
- import "./chunk-UFQQBGC3.js";
72
- import "./chunk-L5UONZ53.js";
73
- import "./chunk-FJYP32IV.js";
74
- import "./chunk-WEN5Z7CL.js";
75
- import "./chunk-A737JDL4.js";
76
- import "./chunk-Q3XYV5UC.js";
77
- import "./chunk-TB427QOK.js";
78
- import "./chunk-V2FGX2KD.js";
79
- import "./chunk-3VYWO6QN.js";
69
+ } from "./chunk-RX7TUMBR.js";
70
+ import "./chunk-FES2YEQU.js";
71
+ import "./chunk-UV3BZMGT.js";
72
+ import "./chunk-F23H3U5U.js";
73
+ import "./chunk-UQZBZINS.js";
74
+ import "./chunk-YTP2UDPV.js";
75
+ import "./chunk-CXJTVICF.js";
76
+ import "./chunk-47N6R2F4.js";
77
+ import "./chunk-GEEYCQDS.js";
78
+ import "./chunk-M55DGGF3.js";
79
+ import "./chunk-TYV4EUAD.js";
80
80
  import "./chunk-EPUKTTJZ.js";
81
81
  import "./chunk-W6Y7ZW3Y.js";
82
82
  import {
83
83
  findConfigFile,
84
84
  loadConfig,
85
85
  resolveConfig
86
- } from "./chunk-5PMRARB5.js";
86
+ } from "./chunk-WIQA4BSH.js";
87
87
  import "./chunk-3ISINLYT.js";
88
88
  import "./chunk-6B6UN6SG.js";
89
- import "./chunk-TDLOFNNQ.js";
89
+ import "./chunk-BOQRTARD.js";
90
90
  import "./chunk-BM3PWGXQ.js";
91
- import "./chunk-H4U2QNY2.js";
92
- import "./chunk-5LMZA5LZ.js";
93
- import "./chunk-OZIHPMA7.js";
91
+ import "./chunk-MI6MA6OP.js";
92
+ import "./chunk-RL4VMEXL.js";
93
+ import "./chunk-K2SON7TI.js";
94
94
  import {
95
95
  generateSkillFiles
96
- } from "./chunk-XNEMDKV5.js";
96
+ } from "./chunk-RRHUCDRD.js";
97
97
  import {
98
98
  logger
99
99
  } from "./chunk-EBJQ6N4M.js";
100
- import "./chunk-ZOVATVQC.js";
100
+ import "./chunk-HIK6OEUF.js";
101
101
  import {
102
102
  CLIError,
103
103
  ExitCode,
104
104
  handleError
105
105
  } from "./chunk-3WGJMBKH.js";
106
+ import "./chunk-KFQGP6VL.js";
106
107
  export {
107
108
  AGENT_DESCRIPTIONS,
108
109
  ALLOWED_PERSONA_COMMANDS,
@@ -0,0 +1,12 @@
1
+ import {
2
+ listPersonas,
3
+ loadPersona
4
+ } from "./chunk-P7PANON5.js";
5
+ import "./chunk-MI6MA6OP.js";
6
+ import "./chunk-RL4VMEXL.js";
7
+ import "./chunk-K2SON7TI.js";
8
+ import "./chunk-KFQGP6VL.js";
9
+ export {
10
+ listPersonas,
11
+ loadPersona
12
+ };
@@ -0,0 +1,38 @@
1
+ import {
2
+ createHarnessServer,
3
+ getToolDefinitions,
4
+ startServer
5
+ } from "./chunk-RX7TUMBR.js";
6
+ import "./chunk-FES2YEQU.js";
7
+ import "./chunk-UV3BZMGT.js";
8
+ import "./chunk-F23H3U5U.js";
9
+ import "./chunk-UQZBZINS.js";
10
+ import "./chunk-YTP2UDPV.js";
11
+ import "./chunk-CXJTVICF.js";
12
+ import {
13
+ resolveProjectConfig
14
+ } from "./chunk-47N6R2F4.js";
15
+ import "./chunk-GEEYCQDS.js";
16
+ import "./chunk-M55DGGF3.js";
17
+ import "./chunk-TYV4EUAD.js";
18
+ import {
19
+ resultToMcpResponse
20
+ } from "./chunk-EPUKTTJZ.js";
21
+ import "./chunk-W6Y7ZW3Y.js";
22
+ import "./chunk-WIQA4BSH.js";
23
+ import "./chunk-3ISINLYT.js";
24
+ import "./chunk-6B6UN6SG.js";
25
+ import "./chunk-BOQRTARD.js";
26
+ import "./chunk-MI6MA6OP.js";
27
+ import "./chunk-RL4VMEXL.js";
28
+ import "./chunk-K2SON7TI.js";
29
+ import "./chunk-HIK6OEUF.js";
30
+ import "./chunk-3WGJMBKH.js";
31
+ import "./chunk-KFQGP6VL.js";
32
+ export {
33
+ createHarnessServer,
34
+ getToolDefinitions,
35
+ resolveProjectConfig,
36
+ resultToMcpResponse,
37
+ startServer
38
+ };
@@ -7,14 +7,15 @@ import {
7
7
  handleGetPerfBaselines,
8
8
  handleUpdatePerfBaselines,
9
9
  updatePerfBaselinesDefinition
10
- } from "./chunk-3VYWO6QN.js";
10
+ } from "./chunk-TYV4EUAD.js";
11
11
  import "./chunk-EPUKTTJZ.js";
12
12
  import "./chunk-W6Y7ZW3Y.js";
13
- import "./chunk-5PMRARB5.js";
14
- import "./chunk-H4U2QNY2.js";
15
- import "./chunk-5LMZA5LZ.js";
16
- import "./chunk-OZIHPMA7.js";
13
+ import "./chunk-WIQA4BSH.js";
14
+ import "./chunk-MI6MA6OP.js";
15
+ import "./chunk-RL4VMEXL.js";
16
+ import "./chunk-K2SON7TI.js";
17
17
  import "./chunk-3WGJMBKH.js";
18
+ import "./chunk-KFQGP6VL.js";
18
19
  export {
19
20
  checkPerformanceDefinition,
20
21
  getCriticalPathsDefinition,
@@ -0,0 +1,13 @@
1
+ import {
2
+ handleRunCodeReview,
3
+ runCodeReviewDefinition
4
+ } from "./chunk-F23H3U5U.js";
5
+ import "./chunk-W6Y7ZW3Y.js";
6
+ import "./chunk-MI6MA6OP.js";
7
+ import "./chunk-RL4VMEXL.js";
8
+ import "./chunk-K2SON7TI.js";
9
+ import "./chunk-KFQGP6VL.js";
10
+ export {
11
+ handleRunCodeReview,
12
+ runCodeReviewDefinition
13
+ };
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  runPersona
3
3
  } from "./chunk-GISMXMVL.js";
4
+ import "./chunk-KFQGP6VL.js";
4
5
  export {
5
6
  runPersona
6
7
  };
@@ -0,0 +1,11 @@
1
+ import {
2
+ generateRuntime
3
+ } from "./chunk-6VZQJ5CX.js";
4
+ import "./chunk-KET4QQZB.js";
5
+ import "./chunk-MI6MA6OP.js";
6
+ import "./chunk-RL4VMEXL.js";
7
+ import "./chunk-K2SON7TI.js";
8
+ import "./chunk-KFQGP6VL.js";
9
+ export {
10
+ generateRuntime
11
+ };
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  createScanCommand,
3
3
  runScan
4
- } from "./chunk-3XAPHB2Z.js";
4
+ } from "./chunk-4NK7Z3BP.js";
5
+ import "./chunk-KFQGP6VL.js";
5
6
  export {
6
7
  createScanCommand,
7
8
  runScan
@@ -0,0 +1,14 @@
1
+ import {
2
+ getSecurityTrendsDefinition,
3
+ handleGetSecurityTrends,
4
+ handleRunSecurityScan,
5
+ runSecurityScanDefinition
6
+ } from "./chunk-UV3BZMGT.js";
7
+ import "./chunk-W6Y7ZW3Y.js";
8
+ import "./chunk-KFQGP6VL.js";
9
+ export {
10
+ getSecurityTrendsDefinition,
11
+ handleGetSecurityTrends,
12
+ handleRunSecurityScan,
13
+ runSecurityScanDefinition
14
+ };
@@ -0,0 +1,9 @@
1
+ import {
2
+ executeSkill
3
+ } from "./chunk-WWACIIBA.js";
4
+ import "./chunk-6B6UN6SG.js";
5
+ import "./chunk-HIK6OEUF.js";
6
+ import "./chunk-KFQGP6VL.js";
7
+ export {
8
+ executeSkill
9
+ };
@@ -0,0 +1,16 @@
1
+ # agnix configuration — validates CLAUDE.md, hooks, skills, and agent configs.
2
+ # Reference: https://agent-sh.github.io/agnix/docs/configuration
3
+ #
4
+ # Harness runs this config via `harness validate --agent-configs` (hybrid mode):
5
+ # - If the `agnix` binary is on PATH, harness shells out to it (385+ rules).
6
+ # - Otherwise, harness runs a built-in fallback rule set covering the
7
+ # highest-value checks (CLAUDE.md size, invalid hooks, unreachable skills).
8
+ # Install agnix for the full rule catalogue: `cargo install agnix-cli`.
9
+
10
+ target = "claude-code"
11
+ strict = false
12
+ max_files = 10000
13
+ locale = "en"
14
+
15
+ [rules]
16
+ disabled_rules = []
@@ -17,13 +17,37 @@ hooks:
17
17
  agent:
18
18
  backend: claude
19
19
  command: claude
20
+ # Local model for autonomous execution of simple tasks
21
+ localBackend: pi
22
+ localEndpoint: http://localhost:1234/v1
23
+ localModel: gemma-4-e4b
24
+ # Escalation routing — controls what runs locally vs primary vs human
25
+ escalation:
26
+ alwaysHuman: [full-exploration]
27
+ autoExecute: [quick-fix, diagnostic]
28
+ primaryExecute: [guided-change]
29
+ signalGated: []
30
+ diagnosticRetryBudget: 1
20
31
  maxConcurrentAgents: 1
21
32
  maxTurns: 10
22
33
  maxRetryBackoffMs: 5000
23
34
  maxConcurrentAgentsByState: {}
35
+ globalCooldownMs: 60000
36
+ maxRequestsPerMinute: 50
37
+ maxRequestsPerSecond: 1
38
+ # Default limits based on Anthropic Tier 3. Adjust according to your account tier.
39
+ # Tier 1: 40k ITPM / 10k OTPM
40
+ # Tier 2: 200k ITPM / 40k OTPM
41
+ # Tier 3: 400k ITPM / 80k OTPM
42
+ # Tier 4: 1m ITPM / 200k OTPM
43
+ maxInputTokensPerMinute: 400000
44
+ maxOutputTokensPerMinute: 80000
24
45
  turnTimeoutMs: 300000
25
46
  readTimeoutMs: 30000
26
47
  stallTimeoutMs: 60000
48
+ intelligence:
49
+ enabled: true
50
+ requestTimeoutMs: 180000
27
51
  server:
28
52
  port: 8080
29
53
  ---
@@ -31,18 +55,42 @@ server:
31
55
  # Prompt Template
32
56
 
33
57
  You are an expert coding agent working on the Harness Engineering project.
34
- Your goal is to implement the following issue:
58
+ Your goal is to implement the following issue using the standard Harness Engineering workflow.
35
59
 
36
60
  ## Issue: {{ issue.title }}
37
61
 
38
62
  **Identifier:** {{ issue.identifier }}
39
- **Summary:** {{ issue.summary }}
63
+ **Description:** {{ issue.description }}
40
64
 
41
- ## Instructions
65
+ ## Standard Workflow
42
66
 
43
- 1. Research the codebase to understand the requirements.
44
- 2. Implement the changes following the project's engineering standards.
45
- 3. Write tests to verify your changes.
46
- 4. Ensure `harness validate` passes.
67
+ Follow these steps exactly, using the corresponding slash commands to ensure high-quality, architecturally sound delivery:
68
+
69
+ 1. **Brainstorming:** Use `/harness:brainstorming` to explore the problem space and draft a technical proposal in `docs/changes/`.
70
+ 2. **Planning:** Use `/harness:planning` to create a detailed implementation plan and task breakdown.
71
+ 3. **Execution:** Use `/harness:execution` to implement the changes task-by-task, following TDD principles.
72
+ 4. **Verification:** Use `/harness:verification` to ensure the implementation is complete, wired correctly, and meets all requirements.
73
+ 5. **Code Review:** Use `/harness:code-review` and `/harness:pre-commit-review` to perform a final quality check before completing the task.
74
+ 6. **Ship:** When the review is clean, you are pre-authorized to ship without asking:
75
+ - Create a topic branch if you are still on `main`/`master` (e.g. `feat/{{ issue.identifier }}`).
76
+ - Stage your changes and create a descriptive commit (Conventional Commits style).
77
+ - Push the branch with `git push -u origin HEAD`.
78
+ - Open a pull request. Use a HEREDOC for the body to preserve newlines:
79
+ ```
80
+ gh pr create --title "<title>" --body "$(cat <<'EOF'
81
+ ## Summary
82
+ <body content with real newlines>
83
+ EOF
84
+ )"
85
+ ```
86
+ Or use `gh pr create --fill` to auto-generate from commit messages.
87
+ - Report the PR URL as your final output, then stop. Do not await further instructions — this is the terminal step of the workflow.
88
+
89
+ ## Rules
90
+
91
+ - Always verify your changes with `harness validate`.
92
+ - Adhere to the architectural constraints defined in `harness.config.json`.
93
+ - Document your progress and any learnings in `.harness/learnings.md`.
94
+ - Step 6 (Ship) is part of the standard workflow. Do not pause to ask for commit authorization — completing the issue means the PR has been opened.
47
95
 
48
96
  Attempt Number: {{ attempt }}
@@ -2,5 +2,6 @@
2
2
  "name": "orchestrator",
3
3
  "description": "Standard WORKFLOW.md for the Harness Orchestrator",
4
4
  "level": "basic",
5
+ "extends": "base",
5
6
  "version": 1
6
7
  }
@@ -0,0 +1,98 @@
1
+ import "./chunk-KFQGP6VL.js";
2
+
3
+ // src/mcp/tool-tiers.ts
4
+ var CORE_TOOL_NAMES = [
5
+ "validate_project",
6
+ "check_dependencies",
7
+ "check_docs",
8
+ "query_graph",
9
+ "get_impact",
10
+ "manage_state",
11
+ "run_skill",
12
+ "code_search",
13
+ "code_outline",
14
+ "compact"
15
+ ];
16
+ var STANDARD_EXTRA = [
17
+ // Review / scan / analysis
18
+ "run_code_review",
19
+ "run_security_scan",
20
+ "detect_entropy",
21
+ "check_performance",
22
+ "review_changes",
23
+ "analyze_diff",
24
+ // Graph navigation
25
+ "find_context_for",
26
+ "get_relationships",
27
+ "search_similar",
28
+ "compute_blast_radius",
29
+ "ask_graph",
30
+ // Workflow
31
+ "manage_roadmap",
32
+ "check_phase_gate",
33
+ "gather_context",
34
+ "assess_project",
35
+ "recommend_skills",
36
+ "search_skills",
37
+ "code_unfold"
38
+ ];
39
+ var STANDARD_TOOL_NAMES = [...CORE_TOOL_NAMES, ...STANDARD_EXTRA];
40
+ var DEFAULT_CHARS_PER_TOKEN = 4;
41
+ function estimateBaselineTokens(definitions, charsPerToken = DEFAULT_CHARS_PER_TOKEN) {
42
+ if (charsPerToken <= 0) {
43
+ throw new Error("charsPerToken must be > 0");
44
+ }
45
+ let totalChars = 0;
46
+ for (const def of definitions) {
47
+ totalChars += def.name.length;
48
+ totalChars += def.description.length;
49
+ totalChars += JSON.stringify(def.inputSchema).length;
50
+ }
51
+ return Math.ceil(totalChars / charsPerToken);
52
+ }
53
+ var DEFAULT_BUDGETS = {
54
+ coreMax: 4e3,
55
+ standardMax: 12e3
56
+ };
57
+ function selectTier(definitions, options = {}) {
58
+ const budgets = options.budgets ?? DEFAULT_BUDGETS;
59
+ const charsPerToken = options.charsPerToken ?? DEFAULT_CHARS_PER_TOKEN;
60
+ const tier = resolveTier(options, budgets);
61
+ const filter = filterForTier(tier, definitions);
62
+ const effectiveDefs = filter === void 0 ? definitions : definitions.filter((d) => filter.includes(d.name));
63
+ const estimatedTokens = estimateBaselineTokens(effectiveDefs, charsPerToken);
64
+ return {
65
+ tier,
66
+ filter,
67
+ estimatedTokens,
68
+ reason: explainTier(tier, options, budgets)
69
+ };
70
+ }
71
+ function resolveTier(options, budgets) {
72
+ if (options.overrideTier) return options.overrideTier;
73
+ const budget = options.tokenBudget;
74
+ if (budget === void 0) return "full";
75
+ if (budget < budgets.coreMax) return "core";
76
+ if (budget < budgets.standardMax) return "standard";
77
+ return "full";
78
+ }
79
+ function filterForTier(tier, definitions) {
80
+ if (tier === "full") return void 0;
81
+ const allow = tier === "core" ? CORE_TOOL_NAMES : STANDARD_TOOL_NAMES;
82
+ const allowSet = new Set(allow);
83
+ const present = new Set(definitions.map((d) => d.name));
84
+ return allow.filter((name) => present.has(name) && allowSet.has(name));
85
+ }
86
+ function explainTier(tier, options, budgets) {
87
+ if (options.overrideTier) return `override: ${options.overrideTier}`;
88
+ if (options.tokenBudget === void 0) return "no budget specified; defaulting to full";
89
+ return `tokenBudget=${options.tokenBudget} \u2192 ${tier} (thresholds: core<${budgets.coreMax}, standard<${budgets.standardMax})`;
90
+ }
91
+ export {
92
+ CORE_TOOL_NAMES,
93
+ DEFAULT_BUDGETS,
94
+ DEFAULT_CHARS_PER_TOKEN,
95
+ STANDARD_TOOL_NAMES,
96
+ estimateBaselineTokens,
97
+ selectTier
98
+ };
@@ -0,0 +1,14 @@
1
+ import {
2
+ handleValidateProject,
3
+ validateToolDefinition
4
+ } from "./chunk-YTP2UDPV.js";
5
+ import "./chunk-47N6R2F4.js";
6
+ import "./chunk-W6Y7ZW3Y.js";
7
+ import "./chunk-MI6MA6OP.js";
8
+ import "./chunk-RL4VMEXL.js";
9
+ import "./chunk-K2SON7TI.js";
10
+ import "./chunk-KFQGP6VL.js";
11
+ export {
12
+ handleValidateProject,
13
+ validateToolDefinition
14
+ };
@@ -0,0 +1,10 @@
1
+ import {
2
+ runCrossCheck
3
+ } from "./chunk-XTITAVUR.js";
4
+ import "./chunk-MI6MA6OP.js";
5
+ import "./chunk-RL4VMEXL.js";
6
+ import "./chunk-K2SON7TI.js";
7
+ import "./chunk-KFQGP6VL.js";
8
+ export {
9
+ runCrossCheck
10
+ };
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  CLI_VERSION
3
3
  } from "./chunk-BM3PWGXQ.js";
4
+ import "./chunk-KFQGP6VL.js";
4
5
  export {
5
6
  CLI_VERSION
6
7
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harness-engineering/cli",
3
- "version": "1.24.3",
3
+ "version": "1.25.1",
4
4
  "description": "CLI for Harness Engineering toolkit",
5
5
  "type": "module",
6
6
  "bin": {
@@ -37,11 +37,11 @@
37
37
  "web-tree-sitter": "^0.24.7",
38
38
  "yaml": "^2.8.3",
39
39
  "zod": "^3.25.76",
40
- "@harness-engineering/core": "0.21.4",
41
- "@harness-engineering/dashboard": "0.1.4",
40
+ "@harness-engineering/core": "0.22.0",
41
+ "@harness-engineering/dashboard": "0.1.5",
42
42
  "@harness-engineering/graph": "0.4.3",
43
+ "@harness-engineering/orchestrator": "0.2.8",
43
44
  "@harness-engineering/linter-gen": "0.1.6",
44
- "@harness-engineering/orchestrator": "0.2.7",
45
45
  "@harness-engineering/types": "0.9.2"
46
46
  },
47
47
  "devDependencies": {
@@ -1,9 +0,0 @@
1
- import {
2
- generateAgentsMd
3
- } from "./chunk-I4QR3HNH.js";
4
- import "./chunk-H4U2QNY2.js";
5
- import "./chunk-5LMZA5LZ.js";
6
- import "./chunk-OZIHPMA7.js";
7
- export {
8
- generateAgentsMd
9
- };