@harness-engineering/cli 1.24.3 → 1.25.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 (106) 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-ZAMT24QN.js → chunk-AZT567I6.js} +1525 -735
  37. package/dist/{chunk-TDLOFNNQ.js → chunk-BOQRTARD.js} +1 -1
  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/index.d.ts +13 -7
  76. package/dist/index.js +30 -29
  77. package/dist/loader-JVSJZSWZ.js +12 -0
  78. package/dist/mcp-2553PNUC.js +38 -0
  79. package/dist/{performance-N67YJJDG.js → performance-7AGWJUY4.js} +6 -5
  80. package/dist/review-pipeline-ZWVQJTJX.js +13 -0
  81. package/dist/{runner-TY7DJGQV.js → runner-AAEF2TXY.js} +1 -0
  82. package/dist/runtime-D6YUQPP2.js +11 -0
  83. package/dist/{scan-U67OKDRS.js → scan-MPJ6JHUY.js} +2 -1
  84. package/dist/security-JLZUAQYT.js +14 -0
  85. package/dist/skill-executor-MOCUIAYS.js +9 -0
  86. package/dist/templates/base/.agnix.toml +16 -0
  87. package/dist/templates/orchestrator/WORKFLOW.md +55 -7
  88. package/dist/templates/orchestrator/template.json +1 -0
  89. package/dist/tool-tiers-7QGZ3FKY.js +98 -0
  90. package/dist/validate-TIIHRPMA.js +14 -0
  91. package/dist/validate-cross-check-ZOWFA3DB.js +10 -0
  92. package/dist/{version-KFFPOQAX.js → version-CUI434OP.js} +1 -0
  93. package/package.json +4 -4
  94. package/dist/agents-md-PBKKTSQY.js +0 -9
  95. package/dist/chunk-5LMZA5LZ.js +0 -38
  96. package/dist/chunk-OZIHPMA7.js +0 -5171
  97. package/dist/ci-workflow-QZRHAIO2.js +0 -9
  98. package/dist/engine-VUQEAJFZ.js +0 -9
  99. package/dist/loader-Y6A42WBD.js +0 -11
  100. package/dist/mcp-LCHC4NZ5.js +0 -37
  101. package/dist/review-pipeline-YXF5ITL2.js +0 -12
  102. package/dist/runtime-XNJUJCSG.js +0 -10
  103. package/dist/security-L2YN3CTI.js +0 -9
  104. package/dist/skill-executor-GA7BDX3F.js +0 -8
  105. package/dist/validate-MNE25KLZ.js +0 -13
  106. package/dist/validate-cross-check-Y4PDR63C.js +0 -9
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-AZT567I6.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.0",
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
43
  "@harness-engineering/linter-gen": "0.1.6",
44
- "@harness-engineering/orchestrator": "0.2.7",
44
+ "@harness-engineering/orchestrator": "0.2.8",
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
- };
@@ -1,38 +0,0 @@
1
- // ../types/dist/index.mjs
2
- function Ok(value) {
3
- return { ok: true, value };
4
- }
5
- function Err(error) {
6
- return { ok: false, error };
7
- }
8
- function isOk(result) {
9
- return result.ok === true;
10
- }
11
- function isErr(result) {
12
- return result.ok === false;
13
- }
14
- var STANDARD_COGNITIVE_MODES = [
15
- "adversarial-reviewer",
16
- "constructive-architect",
17
- "meticulous-implementer",
18
- "diagnostic-investigator",
19
- "advisory-guide",
20
- "meticulous-verifier"
21
- ];
22
- var SESSION_SECTION_NAMES = [
23
- "terminology",
24
- "decisions",
25
- "constraints",
26
- "risks",
27
- "openQuestions",
28
- "evidence"
29
- ];
30
-
31
- export {
32
- Ok,
33
- Err,
34
- isOk,
35
- isErr,
36
- STANDARD_COGNITIVE_MODES,
37
- SESSION_SECTION_NAMES
38
- };