@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.
- package/dist/agents/skills/claude-code/harness-architecture-advisor/SKILL.md +10 -6
- package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +40 -5
- package/dist/agents/skills/claude-code/harness-git-workflow/SKILL.md +32 -11
- package/dist/agents/skills/claude-code/harness-planning/SKILL.md +19 -0
- package/dist/agents/skills/claude-code/harness-skill-authoring/SKILL.md +42 -7
- package/dist/agents/skills/claude-code/harness-verification/SKILL.md +25 -0
- package/dist/agents/skills/codex/harness-architecture-advisor/SKILL.md +10 -6
- package/dist/agents/skills/codex/harness-code-review/SKILL.md +40 -5
- package/dist/agents/skills/codex/harness-git-workflow/SKILL.md +32 -11
- package/dist/agents/skills/codex/harness-planning/SKILL.md +19 -0
- package/dist/agents/skills/codex/harness-skill-authoring/SKILL.md +42 -7
- package/dist/agents/skills/codex/harness-verification/SKILL.md +25 -0
- package/dist/agents/skills/cursor/harness-architecture-advisor/SKILL.md +10 -6
- package/dist/agents/skills/cursor/harness-code-review/SKILL.md +40 -5
- package/dist/agents/skills/cursor/harness-git-workflow/SKILL.md +32 -11
- package/dist/agents/skills/cursor/harness-planning/SKILL.md +19 -0
- package/dist/agents/skills/cursor/harness-skill-authoring/SKILL.md +42 -7
- package/dist/agents/skills/cursor/harness-verification/SKILL.md +25 -0
- package/dist/agents/skills/gemini-cli/harness-architecture-advisor/SKILL.md +10 -6
- package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +40 -5
- package/dist/agents/skills/gemini-cli/harness-git-workflow/SKILL.md +32 -11
- package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +19 -0
- package/dist/agents/skills/gemini-cli/harness-skill-authoring/SKILL.md +42 -7
- package/dist/agents/skills/gemini-cli/harness-verification/SKILL.md +25 -0
- package/dist/agents-md-MCUM4SIZ.js +10 -0
- package/dist/{architecture-FBSLURIB.js → architecture-HNIO6AUX.js} +6 -5
- package/dist/{assess-project-74UVWPMB.js → assess-project-6MV5TNY3.js} +2 -1
- package/dist/bin/harness-mcp.js +18 -17
- package/dist/bin/harness.js +47 -31
- package/dist/{check-phase-gate-WY6UICCL.js → check-phase-gate-VCBQHQAC.js} +6 -5
- package/dist/{chunk-Q3XYV5UC.js → chunk-47N6R2F4.js} +5 -1
- package/dist/{chunk-3XAPHB2Z.js → chunk-4NK7Z3BP.js} +1 -1
- package/dist/{chunk-I4QR3HNH.js → chunk-5BQ5BOJL.js} +5 -1
- package/dist/{chunk-LM5Z2WCA.js → chunk-6VZQJ5CX.js} +5 -1
- package/dist/{chunk-NV4FPO7J.js → chunk-AT74HEQM.js} +1 -1
- package/dist/{chunk-TDLOFNNQ.js → chunk-BOQRTARD.js} +1 -1
- package/dist/{chunk-ZAMT24QN.js → chunk-CJXVNDZZ.js} +1537 -737
- package/dist/{chunk-A737JDL4.js → chunk-CXJTVICF.js} +4 -4
- package/dist/{chunk-LOUH2LIC.js → chunk-EHRZMOQ2.js} +5 -1
- package/dist/{chunk-L5UONZ53.js → chunk-F23H3U5U.js} +6 -2
- package/dist/{chunk-YPKKEP3O.js → chunk-FES2YEQU.js} +9 -9
- package/dist/{chunk-SPTKLCKC.js → chunk-FIQL2HND.js} +6 -2
- package/dist/{chunk-FP53DDB5.js → chunk-FSNPBT74.js} +5 -1
- package/dist/{chunk-TB427QOK.js → chunk-GEEYCQDS.js} +13 -9
- package/dist/{chunk-ZOVATVQC.js → chunk-HIK6OEUF.js} +6 -1
- package/dist/chunk-K2SON7TI.js +5382 -0
- package/dist/chunk-KFQGP6VL.js +33 -0
- package/dist/{chunk-V2FGX2KD.js → chunk-M55DGGF3.js} +9 -5
- package/dist/{chunk-H4U2QNY2.js → chunk-MI6MA6OP.js} +16888 -13143
- package/dist/{chunk-YDRB55Q4.js → chunk-P7PANON5.js} +5 -1
- package/dist/chunk-RL4VMEXL.js +53 -0
- package/dist/{chunk-XNEMDKV5.js → chunk-RRHUCDRD.js} +1 -1
- package/dist/{chunk-O6UF33QH.js → chunk-RX7TUMBR.js} +320 -136
- package/dist/{chunk-3VYWO6QN.js → chunk-TYV4EUAD.js} +12 -8
- package/dist/{chunk-FJYP32IV.js → chunk-UQZBZINS.js} +6 -6
- package/dist/{chunk-UFQQBGC3.js → chunk-UV3BZMGT.js} +64 -3
- package/dist/{chunk-5PMRARB5.js → chunk-WIQA4BSH.js} +12 -5
- package/dist/{chunk-UQEUYRBP.js → chunk-WWACIIBA.js} +1 -1
- package/dist/{chunk-LVYPPKZI.js → chunk-XTITAVUR.js} +5 -1
- package/dist/{chunk-WEN5Z7CL.js → chunk-YTP2UDPV.js} +3 -3
- package/dist/ci-workflow-RTM7VVTD.js +10 -0
- package/dist/{constants-5JGUXPEK.js → constants-P4M3C2T3.js} +1 -0
- package/dist/{create-skill-QCXINA5Q.js → create-skill-6QWJHQYS.js} +3 -2
- package/dist/{dist-666AAZQ6.js → dist-3EWNRFFQ.js} +6 -1
- package/dist/{dist-RRMRZRV7.js → dist-ABTKRYZH.js} +1 -0
- package/dist/{dist-QW5G3GX3.js → dist-RADHOOXG.js} +4 -1
- package/dist/{dist-7EBSGAHX.js → dist-WCSJHQPK.js} +106 -3
- package/dist/{docs-H34GBVRS.js → docs-UBOGGHTY.js} +6 -5
- package/dist/engine-MJJAP5CH.js +10 -0
- package/dist/{entropy-ZAY73R6A.js → entropy-EMSXF2PX.js} +5 -4
- package/dist/{feedback-TMEGYMWU.js → feedback-ZLUX72HD.js} +2 -1
- package/dist/{generate-agent-definitions-PQPG6SX5.js → generate-agent-definitions-AWLPJ27C.js} +6 -5
- package/dist/{glob-helper-SRXMZPKM.js → glob-helper-VCQXK5XY.js} +2 -0
- package/dist/{graph-loader-M6FXJAKK.js → graph-loader-JHQVQRUS.js} +2 -1
- package/dist/hooks/adoption-tracker.js +189 -0
- package/dist/hooks/block-no-verify.js +50 -0
- package/dist/hooks/cost-tracker.js +66 -0
- package/dist/hooks/pre-compact-state.js +115 -0
- package/dist/hooks/profiles.ts +48 -0
- package/dist/hooks/protect-config.js +75 -0
- package/dist/hooks/quality-gate.js +131 -0
- package/dist/hooks/sentinel-post.js +159 -0
- package/dist/hooks/sentinel-pre.js +244 -0
- package/dist/hooks/telemetry-reporter.js +248 -0
- package/dist/index.d.ts +13 -7
- package/dist/index.js +30 -29
- package/dist/loader-JVSJZSWZ.js +12 -0
- package/dist/mcp-2553PNUC.js +38 -0
- package/dist/{performance-N67YJJDG.js → performance-7AGWJUY4.js} +6 -5
- package/dist/review-pipeline-ZWVQJTJX.js +13 -0
- package/dist/{runner-TY7DJGQV.js → runner-AAEF2TXY.js} +1 -0
- package/dist/runtime-D6YUQPP2.js +11 -0
- package/dist/{scan-U67OKDRS.js → scan-MPJ6JHUY.js} +2 -1
- package/dist/security-JLZUAQYT.js +14 -0
- package/dist/skill-executor-MOCUIAYS.js +9 -0
- package/dist/templates/base/.agnix.toml +16 -0
- package/dist/templates/orchestrator/WORKFLOW.md +55 -7
- package/dist/templates/orchestrator/template.json +1 -0
- package/dist/tool-tiers-7QGZ3FKY.js +98 -0
- package/dist/validate-TIIHRPMA.js +14 -0
- package/dist/validate-cross-check-ZOWFA3DB.js +10 -0
- package/dist/{version-KFFPOQAX.js → version-CUI434OP.js} +1 -0
- package/package.json +4 -4
- package/dist/agents-md-PBKKTSQY.js +0 -9
- package/dist/chunk-5LMZA5LZ.js +0 -38
- package/dist/chunk-OZIHPMA7.js +0 -5171
- package/dist/ci-workflow-QZRHAIO2.js +0 -9
- package/dist/engine-VUQEAJFZ.js +0 -9
- package/dist/loader-Y6A42WBD.js +0 -11
- package/dist/mcp-LCHC4NZ5.js +0 -37
- package/dist/review-pipeline-YXF5ITL2.js +0 -12
- package/dist/runtime-XNJUJCSG.js +0 -10
- package/dist/security-L2YN3CTI.js +0 -9
- package/dist/skill-executor-GA7BDX3F.js +0 -8
- package/dist/validate-MNE25KLZ.js +0 -13
- 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-
|
|
15
|
+
} from "./chunk-CJXVNDZZ.js";
|
|
16
16
|
import {
|
|
17
17
|
generateAgentsMd
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-5BQ5BOJL.js";
|
|
19
19
|
import {
|
|
20
20
|
generateCIWorkflow
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-EHRZMOQ2.js";
|
|
22
22
|
import {
|
|
23
23
|
runCrossCheck
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-XTITAVUR.js";
|
|
25
25
|
import {
|
|
26
26
|
TemplateEngine
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-FSNPBT74.js";
|
|
28
28
|
import "./chunk-CQ553GZO.js";
|
|
29
29
|
import {
|
|
30
30
|
generateRuntime
|
|
31
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
55
|
+
} from "./chunk-AT74HEQM.js";
|
|
56
56
|
import "./chunk-KET4QQZB.js";
|
|
57
57
|
import {
|
|
58
58
|
listPersonas,
|
|
59
59
|
loadPersona
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-P7PANON5.js";
|
|
61
61
|
import {
|
|
62
62
|
runScan
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-4NK7Z3BP.js";
|
|
64
64
|
import {
|
|
65
65
|
createHarnessServer,
|
|
66
66
|
generateSlashCommands,
|
|
67
67
|
getToolDefinitions,
|
|
68
68
|
startServer
|
|
69
|
-
} from "./chunk-
|
|
70
|
-
import "./chunk-
|
|
71
|
-
import "./chunk-
|
|
72
|
-
import "./chunk-
|
|
73
|
-
import "./chunk-
|
|
74
|
-
import "./chunk-
|
|
75
|
-
import "./chunk-
|
|
76
|
-
import "./chunk-
|
|
77
|
-
import "./chunk-
|
|
78
|
-
import "./chunk-
|
|
79
|
-
import "./chunk-
|
|
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-
|
|
86
|
+
} from "./chunk-WIQA4BSH.js";
|
|
87
87
|
import "./chunk-3ISINLYT.js";
|
|
88
88
|
import "./chunk-6B6UN6SG.js";
|
|
89
|
-
import "./chunk-
|
|
89
|
+
import "./chunk-BOQRTARD.js";
|
|
90
90
|
import "./chunk-BM3PWGXQ.js";
|
|
91
|
-
import "./chunk-
|
|
92
|
-
import "./chunk-
|
|
93
|
-
import "./chunk-
|
|
91
|
+
import "./chunk-MI6MA6OP.js";
|
|
92
|
+
import "./chunk-RL4VMEXL.js";
|
|
93
|
+
import "./chunk-K2SON7TI.js";
|
|
94
94
|
import {
|
|
95
95
|
generateSkillFiles
|
|
96
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-RRHUCDRD.js";
|
|
97
97
|
import {
|
|
98
98
|
logger
|
|
99
99
|
} from "./chunk-EBJQ6N4M.js";
|
|
100
|
-
import "./chunk-
|
|
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,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-
|
|
10
|
+
} from "./chunk-TYV4EUAD.js";
|
|
11
11
|
import "./chunk-EPUKTTJZ.js";
|
|
12
12
|
import "./chunk-W6Y7ZW3Y.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
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
|
+
};
|
|
@@ -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,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
|
-
**
|
|
63
|
+
**Description:** {{ issue.description }}
|
|
40
64
|
|
|
41
|
-
##
|
|
65
|
+
## Standard Workflow
|
|
42
66
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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 }}
|
|
@@ -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
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@harness-engineering/cli",
|
|
3
|
-
"version": "1.
|
|
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.
|
|
41
|
-
"@harness-engineering/dashboard": "0.1.
|
|
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": {
|