@harness-engineering/cli 1.12.0 → 1.13.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.
- package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +57 -9
- package/dist/agents/skills/claude-code/harness-brainstorming/SKILL.md +1 -1
- package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +19 -2
- package/dist/agents/skills/claude-code/harness-execution/SKILL.md +39 -12
- package/dist/agents/skills/claude-code/harness-planning/SKILL.md +28 -11
- package/dist/agents/skills/claude-code/harness-roadmap/SKILL.md +34 -0
- package/dist/agents/skills/claude-code/harness-verification/SKILL.md +42 -0
- package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +57 -9
- package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +1 -1
- package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +19 -2
- package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +39 -12
- package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +28 -11
- package/dist/agents/skills/gemini-cli/harness-roadmap/SKILL.md +34 -0
- package/dist/agents/skills/gemini-cli/harness-verification/SKILL.md +42 -0
- package/dist/{agents-md-KIS2RSMG.js → agents-md-P2RHSUV7.js} +1 -1
- package/dist/{architecture-AJAUDRQQ.js → architecture-ESOOE26S.js} +2 -2
- package/dist/bin/harness-mcp.js +10 -10
- package/dist/bin/harness.js +12 -12
- package/dist/{check-phase-gate-K7QCSYRJ.js → check-phase-gate-S2MZKLFQ.js} +2 -2
- package/dist/{chunk-2SWJ4VO7.js → chunk-2VU4MFM3.js} +4 -4
- package/dist/{chunk-ZU2UBYBY.js → chunk-3KOLLWWE.js} +1 -1
- package/dist/{chunk-EAURF4LH.js → chunk-5VY23YK3.js} +1 -1
- package/dist/{chunk-747VBPA4.js → chunk-7KQSUZVG.js} +96 -50
- package/dist/{chunk-FLOEMHDF.js → chunk-7PZWR4LI.js} +3 -3
- package/dist/{chunk-AE2OWWDH.js → chunk-KELT6K6M.js} +590 -253
- package/dist/{chunk-TJVVU3HB.js → chunk-LD3DKUK5.js} +1 -1
- package/dist/{chunk-JLXOEO5C.js → chunk-MACVXDZK.js} +2 -2
- package/dist/{chunk-CTTFXXKJ.js → chunk-MI5XJQDY.js} +3 -3
- package/dist/{chunk-YXOG2277.js → chunk-PSNN4LWX.js} +2 -2
- package/dist/{chunk-B5SBNH4S.js → chunk-RZSUJBZZ.js} +74 -14
- package/dist/{chunk-OIGVQF5V.js → chunk-WPPDRIJL.js} +1 -1
- package/dist/{ci-workflow-NBL4OT4A.js → ci-workflow-4NYBUG6R.js} +1 -1
- package/dist/{dist-IJ4J4C5G.js → dist-WF4C7A4A.js} +25 -1
- package/dist/{docs-CPTMH3VY.js → docs-BPYCN2DR.js} +2 -2
- package/dist/{engine-BUWPAAGD.js → engine-LXLIWQQ3.js} +1 -1
- package/dist/{entropy-Z4FYVQ7L.js → entropy-4VDVV5CR.js} +2 -2
- package/dist/{feedback-TT6WF5YX.js → feedback-63QB5RCA.js} +1 -1
- package/dist/{generate-agent-definitions-J5HANRNR.js → generate-agent-definitions-QABOJG56.js} +1 -1
- package/dist/index.d.ts +41 -41
- package/dist/index.js +12 -12
- package/dist/{loader-PCU5YWRH.js → loader-Z2IT7QX3.js} +1 -1
- package/dist/{mcp-YM6QLHLZ.js → mcp-KQHEL5IF.js} +10 -10
- package/dist/{performance-YJVXOKIB.js → performance-26BH47O4.js} +2 -2
- package/dist/{review-pipeline-KGMIMLIE.js → review-pipeline-GHR3WFBI.js} +1 -1
- package/dist/{runtime-F6R27LD6.js → runtime-PDWD7UIK.js} +1 -1
- package/dist/{security-MX5VVXBC.js → security-UQFUZXEN.js} +1 -1
- package/dist/{validate-EFNMSFKD.js → validate-N7QJOKFZ.js} +2 -2
- package/dist/{validate-cross-check-LJX65SBS.js → validate-cross-check-EDQ5QGTM.js} +1 -1
- package/package.json +4 -4
|
@@ -45,7 +45,7 @@ var runCodeReviewDefinition = {
|
|
|
45
45
|
};
|
|
46
46
|
async function handleRunCodeReview(input) {
|
|
47
47
|
try {
|
|
48
|
-
const { parseDiff, runReviewPipeline } = await import("./dist-
|
|
48
|
+
const { parseDiff, runReviewPipeline } = await import("./dist-WF4C7A4A.js");
|
|
49
49
|
const parseResult = parseDiff(input.diff);
|
|
50
50
|
if (!parseResult.ok) {
|
|
51
51
|
return {
|
|
@@ -84,7 +84,7 @@ var detectEntropyDefinition = {
|
|
|
84
84
|
};
|
|
85
85
|
async function handleDetectEntropy(input) {
|
|
86
86
|
try {
|
|
87
|
-
const { EntropyAnalyzer } = await import("./dist-
|
|
87
|
+
const { EntropyAnalyzer } = await import("./dist-WF4C7A4A.js");
|
|
88
88
|
const typeFilter = input.type ?? "all";
|
|
89
89
|
const analyzer = new EntropyAnalyzer({
|
|
90
90
|
rootDir: sanitizePath(input.path),
|
|
@@ -144,7 +144,7 @@ async function handleDetectEntropy(input) {
|
|
|
144
144
|
return resultToMcpResponse(result);
|
|
145
145
|
}
|
|
146
146
|
if (!result.ok) return resultToMcpResponse(result);
|
|
147
|
-
const { createFixes, applyFixes, generateSuggestions } = await import("./dist-
|
|
147
|
+
const { createFixes, applyFixes, generateSuggestions } = await import("./dist-WF4C7A4A.js");
|
|
148
148
|
const report = result.value;
|
|
149
149
|
const deadCode = report.deadCode;
|
|
150
150
|
const fixTypesConfig = input.fixTypes ? { fixTypes: input.fixTypes } : void 0;
|
|
@@ -32,12 +32,12 @@ async function handleCheckDocs(input) {
|
|
|
32
32
|
const projectPath = sanitizePath(input.path);
|
|
33
33
|
const scope = input.scope ?? "coverage";
|
|
34
34
|
if (scope === "integrity") {
|
|
35
|
-
const { validateKnowledgeMap } = await import("./dist-
|
|
35
|
+
const { validateKnowledgeMap } = await import("./dist-WF4C7A4A.js");
|
|
36
36
|
const result2 = await validateKnowledgeMap(projectPath);
|
|
37
37
|
return resultToMcpResponse(result2);
|
|
38
38
|
}
|
|
39
39
|
if (scope === "all") {
|
|
40
|
-
const { checkDocCoverage: checkDocCoverage2, validateKnowledgeMap } = await import("./dist-
|
|
40
|
+
const { checkDocCoverage: checkDocCoverage2, validateKnowledgeMap } = await import("./dist-WF4C7A4A.js");
|
|
41
41
|
const domain2 = input.domain ?? "src";
|
|
42
42
|
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-KO4GJ5N2.js");
|
|
43
43
|
const store2 = await loadGraphStore2(projectPath);
|
|
@@ -76,7 +76,7 @@ async function handleCheckDocs(input) {
|
|
|
76
76
|
}
|
|
77
77
|
return resultToMcpResponse(Ok({ coverage, integrity }));
|
|
78
78
|
}
|
|
79
|
-
const { checkDocCoverage } = await import("./dist-
|
|
79
|
+
const { checkDocCoverage } = await import("./dist-WF4C7A4A.js");
|
|
80
80
|
const domain = input.domain ?? "src";
|
|
81
81
|
const { loadGraphStore } = await import("./graph-loader-KO4GJ5N2.js");
|
|
82
82
|
const store = await loadGraphStore(projectPath);
|
|
@@ -49,7 +49,7 @@ async function handleValidateProject(input) {
|
|
|
49
49
|
checks.config = "pass";
|
|
50
50
|
const config = configResult.value;
|
|
51
51
|
try {
|
|
52
|
-
const core = await import("./dist-
|
|
52
|
+
const core = await import("./dist-WF4C7A4A.js");
|
|
53
53
|
if (typeof core.validateFileStructure === "function" && Array.isArray(config.conventions)) {
|
|
54
54
|
const conventions = config.conventions;
|
|
55
55
|
const structureResult = await core.validateFileStructure(projectPath, conventions);
|
|
@@ -68,7 +68,7 @@ async function handleValidateProject(input) {
|
|
|
68
68
|
} catch {
|
|
69
69
|
}
|
|
70
70
|
try {
|
|
71
|
-
const core = await import("./dist-
|
|
71
|
+
const core = await import("./dist-WF4C7A4A.js");
|
|
72
72
|
if (typeof core.validateAgentsMap === "function") {
|
|
73
73
|
const agentsMapPath = path.join(projectPath, "AGENTS.md");
|
|
74
74
|
const agentsResult = await core.validateAgentsMap(agentsMapPath);
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
findConfigFile,
|
|
9
9
|
findFiles,
|
|
10
10
|
resolveConfig
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-3KOLLWWE.js";
|
|
12
12
|
import {
|
|
13
13
|
createGenerateAgentDefinitionsCommand,
|
|
14
14
|
generateAgentDefinitions
|
|
@@ -50,7 +50,7 @@ import {
|
|
|
50
50
|
generateSlashCommands,
|
|
51
51
|
handleGetImpact,
|
|
52
52
|
handleOrphanDeletion
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-7KQSUZVG.js";
|
|
54
54
|
import {
|
|
55
55
|
VALID_PLATFORMS
|
|
56
56
|
} from "./chunk-ZOAWBDWU.js";
|
|
@@ -108,6 +108,7 @@ import {
|
|
|
108
108
|
parseDiff,
|
|
109
109
|
parseManifest,
|
|
110
110
|
parseSecurityConfig,
|
|
111
|
+
pruneLearnings,
|
|
111
112
|
readLockfile,
|
|
112
113
|
removeContributions,
|
|
113
114
|
removeProvenance,
|
|
@@ -122,14 +123,14 @@ import {
|
|
|
122
123
|
validateKnowledgeMap,
|
|
123
124
|
writeConfig,
|
|
124
125
|
writeLockfile
|
|
125
|
-
} from "./chunk-
|
|
126
|
+
} from "./chunk-KELT6K6M.js";
|
|
126
127
|
import {
|
|
127
128
|
Err,
|
|
128
129
|
Ok
|
|
129
130
|
} from "./chunk-MHBMTPW7.js";
|
|
130
131
|
|
|
131
132
|
// src/index.ts
|
|
132
|
-
import { Command as
|
|
133
|
+
import { Command as Command55 } from "commander";
|
|
133
134
|
|
|
134
135
|
// src/commands/validate.ts
|
|
135
136
|
import { Command } from "commander";
|
|
@@ -208,7 +209,7 @@ function createValidateCommand() {
|
|
|
208
209
|
process.exit(result.error.exitCode);
|
|
209
210
|
}
|
|
210
211
|
if (opts.crossCheck) {
|
|
211
|
-
const { runCrossCheck: runCrossCheck2 } = await import("./validate-cross-check-
|
|
212
|
+
const { runCrossCheck: runCrossCheck2 } = await import("./validate-cross-check-EDQ5QGTM.js");
|
|
212
213
|
const cwd = process.cwd();
|
|
213
214
|
const specsDir = path.join(cwd, "docs", "specs");
|
|
214
215
|
const plansDir = path.join(cwd, "docs", "plans");
|
|
@@ -566,7 +567,7 @@ function createPerfCommand() {
|
|
|
566
567
|
perf.command("bench [glob]").description("Run benchmarks via vitest bench").action(async (glob, _opts, cmd) => {
|
|
567
568
|
const globalOpts = cmd.optsWithGlobals();
|
|
568
569
|
const cwd = process.cwd();
|
|
569
|
-
const { BenchmarkRunner } = await import("./dist-
|
|
570
|
+
const { BenchmarkRunner } = await import("./dist-WF4C7A4A.js");
|
|
570
571
|
const runner = new BenchmarkRunner();
|
|
571
572
|
const benchFiles = runner.discover(cwd, glob);
|
|
572
573
|
if (benchFiles.length === 0) {
|
|
@@ -635,7 +636,7 @@ Results (${result.results.length} benchmarks):`);
|
|
|
635
636
|
baselines.command("update").description("Update baselines from latest benchmark run").action(async (_opts, cmd) => {
|
|
636
637
|
const globalOpts = cmd.optsWithGlobals();
|
|
637
638
|
const cwd = process.cwd();
|
|
638
|
-
const { BenchmarkRunner } = await import("./dist-
|
|
639
|
+
const { BenchmarkRunner } = await import("./dist-WF4C7A4A.js");
|
|
639
640
|
const runner = new BenchmarkRunner();
|
|
640
641
|
const manager = new BaselineManager(cwd);
|
|
641
642
|
logger.info("Running benchmarks to update baselines...");
|
|
@@ -663,7 +664,7 @@ Results (${result.results.length} benchmarks):`);
|
|
|
663
664
|
perf.command("report").description("Full performance report with metrics, trends, and hotspots").action(async (_opts, cmd) => {
|
|
664
665
|
const globalOpts = cmd.optsWithGlobals();
|
|
665
666
|
const cwd = process.cwd();
|
|
666
|
-
const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./dist-
|
|
667
|
+
const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./dist-WF4C7A4A.js");
|
|
667
668
|
const analyzer = new EntropyAnalyzer2({
|
|
668
669
|
rootDir: path5.resolve(cwd),
|
|
669
670
|
analyze: { complexity: true, coupling: true }
|
|
@@ -3027,8 +3028,8 @@ function createResetCommand() {
|
|
|
3027
3028
|
}
|
|
3028
3029
|
if (!opts.yes) {
|
|
3029
3030
|
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
3030
|
-
const answer = await new Promise((
|
|
3031
|
-
rl.question("Reset project state? This cannot be undone. [y/N] ",
|
|
3031
|
+
const answer = await new Promise((resolve28) => {
|
|
3032
|
+
rl.question("Reset project state? This cannot be undone. [y/N] ", resolve28);
|
|
3032
3033
|
});
|
|
3033
3034
|
rl.close();
|
|
3034
3035
|
if (answer.toLowerCase() !== "y" && answer.toLowerCase() !== "yes") {
|
|
@@ -3435,10 +3436,10 @@ function prompt(question) {
|
|
|
3435
3436
|
input: process.stdin,
|
|
3436
3437
|
output: process.stdout
|
|
3437
3438
|
});
|
|
3438
|
-
return new Promise((
|
|
3439
|
+
return new Promise((resolve28) => {
|
|
3439
3440
|
rl.question(question, (answer) => {
|
|
3440
3441
|
rl.close();
|
|
3441
|
-
|
|
3442
|
+
resolve28(answer.trim().toLowerCase());
|
|
3442
3443
|
});
|
|
3443
3444
|
});
|
|
3444
3445
|
}
|
|
@@ -3920,7 +3921,7 @@ function createGraphCommand() {
|
|
|
3920
3921
|
import { Command as Command43 } from "commander";
|
|
3921
3922
|
function createMcpCommand() {
|
|
3922
3923
|
return new Command43("mcp").description("Start the MCP (Model Context Protocol) server on stdio").action(async () => {
|
|
3923
|
-
const { startServer: startServer2 } = await import("./mcp-
|
|
3924
|
+
const { startServer: startServer2 } = await import("./mcp-KQHEL5IF.js");
|
|
3924
3925
|
await startServer2();
|
|
3925
3926
|
});
|
|
3926
3927
|
}
|
|
@@ -5108,9 +5109,67 @@ function createOrchestratorCommand() {
|
|
|
5108
5109
|
return orchestrator;
|
|
5109
5110
|
}
|
|
5110
5111
|
|
|
5112
|
+
// src/commands/learnings/index.ts
|
|
5113
|
+
import { Command as Command54 } from "commander";
|
|
5114
|
+
|
|
5115
|
+
// src/commands/learnings/prune.ts
|
|
5116
|
+
import { Command as Command53 } from "commander";
|
|
5117
|
+
import * as path44 from "path";
|
|
5118
|
+
async function handlePrune(opts) {
|
|
5119
|
+
const projectPath = path44.resolve(opts.path);
|
|
5120
|
+
const result = await pruneLearnings(projectPath, opts.stream);
|
|
5121
|
+
if (!result.ok) {
|
|
5122
|
+
logger.error(result.error.message);
|
|
5123
|
+
process.exit(ExitCode.ERROR);
|
|
5124
|
+
return;
|
|
5125
|
+
}
|
|
5126
|
+
const { kept, archived, patterns } = result.value;
|
|
5127
|
+
if (archived === 0 && patterns.length === 0) {
|
|
5128
|
+
logger.info(`Nothing to prune. ${kept} learnings in file, all within retention window.`);
|
|
5129
|
+
process.exit(ExitCode.SUCCESS);
|
|
5130
|
+
return;
|
|
5131
|
+
}
|
|
5132
|
+
if (patterns.length > 0) {
|
|
5133
|
+
printPatternProposals(patterns);
|
|
5134
|
+
}
|
|
5135
|
+
if (archived > 0) {
|
|
5136
|
+
logger.success(`Pruned ${archived} entries. ${kept} most recent entries retained.`);
|
|
5137
|
+
logger.info("Archived entries written to .harness/learnings-archive/");
|
|
5138
|
+
} else {
|
|
5139
|
+
logger.info(`No entries archived. ${kept} entries retained.`);
|
|
5140
|
+
}
|
|
5141
|
+
process.exit(ExitCode.SUCCESS);
|
|
5142
|
+
}
|
|
5143
|
+
function printPatternProposals(patterns) {
|
|
5144
|
+
console.log("\n--- Improvement Proposals ---\n");
|
|
5145
|
+
for (const pattern of patterns) {
|
|
5146
|
+
console.log(` [${pattern.tag}] ${pattern.count} learnings with this theme.`);
|
|
5147
|
+
console.log(` Proposal: These learnings suggest a recurring pattern in "${pattern.tag}".`);
|
|
5148
|
+
console.log(
|
|
5149
|
+
` To add to roadmap: harness mcp manage_roadmap --action add --feature "<improvement>" --status planned
|
|
5150
|
+
`
|
|
5151
|
+
);
|
|
5152
|
+
}
|
|
5153
|
+
console.log(
|
|
5154
|
+
"Review the proposals above. If any warrant a process improvement, add them to the roadmap manually or via manage_roadmap.\n"
|
|
5155
|
+
);
|
|
5156
|
+
}
|
|
5157
|
+
function createPruneCommand() {
|
|
5158
|
+
return new Command53("prune").description(
|
|
5159
|
+
"Analyze global learnings for patterns, present improvement proposals, and archive old entries"
|
|
5160
|
+
).option("--path <path>", "Project root path", ".").option("--stream <name>", "Target a specific stream").action(handlePrune);
|
|
5161
|
+
}
|
|
5162
|
+
|
|
5163
|
+
// src/commands/learnings/index.ts
|
|
5164
|
+
function createLearningsCommand() {
|
|
5165
|
+
const command = new Command54("learnings").description("Learnings management commands");
|
|
5166
|
+
command.addCommand(createPruneCommand());
|
|
5167
|
+
return command;
|
|
5168
|
+
}
|
|
5169
|
+
|
|
5111
5170
|
// src/index.ts
|
|
5112
5171
|
function createProgram() {
|
|
5113
|
-
const program = new
|
|
5172
|
+
const program = new Command55();
|
|
5114
5173
|
program.name("harness").description("CLI for Harness Engineering toolkit").version(CLI_VERSION).option("-c, --config <path>", "Path to config file").option("--json", "Output as JSON").option("--verbose", "Verbose output").option("--quiet", "Minimal output");
|
|
5115
5174
|
program.addCommand(createValidateCommand());
|
|
5116
5175
|
program.addCommand(createCheckDepsCommand());
|
|
@@ -5127,6 +5186,7 @@ function createProgram() {
|
|
|
5127
5186
|
program.addCommand(createPersonaCommand());
|
|
5128
5187
|
program.addCommand(createSkillCommand());
|
|
5129
5188
|
program.addCommand(createStateCommand());
|
|
5189
|
+
program.addCommand(createLearningsCommand());
|
|
5130
5190
|
program.addCommand(createCheckPhaseGateCommand());
|
|
5131
5191
|
program.addCommand(createCreateSkillCommand());
|
|
5132
5192
|
program.addCommand(createSetupMcpCommand());
|
|
@@ -38,7 +38,7 @@ async function handleCheckDependencies(input) {
|
|
|
38
38
|
const configResult = resolveProjectConfig(projectPath);
|
|
39
39
|
if (!configResult.ok) return resultToMcpResponse(configResult);
|
|
40
40
|
try {
|
|
41
|
-
const { validateDependencies, TypeScriptParser } = await import("./dist-
|
|
41
|
+
const { validateDependencies, TypeScriptParser } = await import("./dist-WF4C7A4A.js");
|
|
42
42
|
const config = configResult.value;
|
|
43
43
|
const rawLayers = Array.isArray(config.layers) ? config.layers : [];
|
|
44
44
|
const layers = rawLayers.map((l) => ({
|
|
@@ -74,6 +74,7 @@ import {
|
|
|
74
74
|
ViolationSchema,
|
|
75
75
|
addProvenance,
|
|
76
76
|
analyzeDiff,
|
|
77
|
+
analyzeLearningPatterns,
|
|
77
78
|
appendFailure,
|
|
78
79
|
appendLearning,
|
|
79
80
|
applyFixes,
|
|
@@ -82,6 +83,7 @@ import {
|
|
|
82
83
|
archModule,
|
|
83
84
|
architecture,
|
|
84
85
|
archiveFailures,
|
|
86
|
+
archiveLearnings,
|
|
85
87
|
archiveStream,
|
|
86
88
|
buildDependencyGraph,
|
|
87
89
|
buildExclusionSet,
|
|
@@ -89,6 +91,8 @@ import {
|
|
|
89
91
|
checkDocCoverage,
|
|
90
92
|
checkEligibility,
|
|
91
93
|
classifyFinding,
|
|
94
|
+
clearFailuresCache,
|
|
95
|
+
clearLearningsCache,
|
|
92
96
|
configureFeedback,
|
|
93
97
|
constraintRuleId,
|
|
94
98
|
contextBudget,
|
|
@@ -144,16 +148,20 @@ import {
|
|
|
144
148
|
injectionRules,
|
|
145
149
|
isSmallSuggestion,
|
|
146
150
|
isUpdateCheckEnabled,
|
|
151
|
+
listActiveSessions,
|
|
147
152
|
listStreams,
|
|
153
|
+
loadBudgetedLearnings,
|
|
148
154
|
loadFailures,
|
|
149
155
|
loadHandoff,
|
|
150
156
|
loadRelevantLearnings,
|
|
157
|
+
loadSessionSummary,
|
|
151
158
|
loadState,
|
|
152
159
|
loadStreamIndex,
|
|
153
160
|
logAgentAction,
|
|
154
161
|
migrateToStreams,
|
|
155
162
|
networkRules,
|
|
156
163
|
nodeRules,
|
|
164
|
+
parseDateFromEntry,
|
|
157
165
|
parseDiff,
|
|
158
166
|
parseManifest,
|
|
159
167
|
parseRoadmap,
|
|
@@ -161,6 +169,7 @@ import {
|
|
|
161
169
|
parseSize,
|
|
162
170
|
pathTraversalRules,
|
|
163
171
|
previewFix,
|
|
172
|
+
pruneLearnings,
|
|
164
173
|
reactRules,
|
|
165
174
|
readCheckState,
|
|
166
175
|
readLockfile,
|
|
@@ -172,6 +181,7 @@ import {
|
|
|
172
181
|
resolveFileToLayer,
|
|
173
182
|
resolveModelTier,
|
|
174
183
|
resolveRuleSeverity,
|
|
184
|
+
resolveSessionDir,
|
|
175
185
|
resolveStreamPath,
|
|
176
186
|
resolveThresholds,
|
|
177
187
|
runAll,
|
|
@@ -198,6 +208,7 @@ import {
|
|
|
198
208
|
syncRoadmap,
|
|
199
209
|
touchStream,
|
|
200
210
|
trackAction,
|
|
211
|
+
updateSessionIndex,
|
|
201
212
|
validateAgentsMap,
|
|
202
213
|
validateBoundaries,
|
|
203
214
|
validateCommitMessage,
|
|
@@ -210,8 +221,9 @@ import {
|
|
|
210
221
|
violationId,
|
|
211
222
|
writeConfig,
|
|
212
223
|
writeLockfile,
|
|
224
|
+
writeSessionSummary,
|
|
213
225
|
xssRules
|
|
214
|
-
} from "./chunk-
|
|
226
|
+
} from "./chunk-KELT6K6M.js";
|
|
215
227
|
import {
|
|
216
228
|
Err,
|
|
217
229
|
Ok,
|
|
@@ -298,6 +310,7 @@ export {
|
|
|
298
310
|
ViolationSchema,
|
|
299
311
|
addProvenance,
|
|
300
312
|
analyzeDiff,
|
|
313
|
+
analyzeLearningPatterns,
|
|
301
314
|
appendFailure,
|
|
302
315
|
appendLearning,
|
|
303
316
|
applyFixes,
|
|
@@ -306,6 +319,7 @@ export {
|
|
|
306
319
|
archModule,
|
|
307
320
|
architecture,
|
|
308
321
|
archiveFailures,
|
|
322
|
+
archiveLearnings,
|
|
309
323
|
archiveStream,
|
|
310
324
|
buildDependencyGraph,
|
|
311
325
|
buildExclusionSet,
|
|
@@ -313,6 +327,8 @@ export {
|
|
|
313
327
|
checkDocCoverage,
|
|
314
328
|
checkEligibility,
|
|
315
329
|
classifyFinding,
|
|
330
|
+
clearFailuresCache,
|
|
331
|
+
clearLearningsCache,
|
|
316
332
|
configureFeedback,
|
|
317
333
|
constraintRuleId,
|
|
318
334
|
contextBudget,
|
|
@@ -370,16 +386,20 @@ export {
|
|
|
370
386
|
isOk,
|
|
371
387
|
isSmallSuggestion,
|
|
372
388
|
isUpdateCheckEnabled,
|
|
389
|
+
listActiveSessions,
|
|
373
390
|
listStreams,
|
|
391
|
+
loadBudgetedLearnings,
|
|
374
392
|
loadFailures,
|
|
375
393
|
loadHandoff,
|
|
376
394
|
loadRelevantLearnings,
|
|
395
|
+
loadSessionSummary,
|
|
377
396
|
loadState,
|
|
378
397
|
loadStreamIndex,
|
|
379
398
|
logAgentAction,
|
|
380
399
|
migrateToStreams,
|
|
381
400
|
networkRules,
|
|
382
401
|
nodeRules,
|
|
402
|
+
parseDateFromEntry,
|
|
383
403
|
parseDiff,
|
|
384
404
|
parseManifest,
|
|
385
405
|
parseRoadmap,
|
|
@@ -387,6 +407,7 @@ export {
|
|
|
387
407
|
parseSize,
|
|
388
408
|
pathTraversalRules,
|
|
389
409
|
previewFix,
|
|
410
|
+
pruneLearnings,
|
|
390
411
|
reactRules,
|
|
391
412
|
readCheckState,
|
|
392
413
|
readLockfile,
|
|
@@ -398,6 +419,7 @@ export {
|
|
|
398
419
|
resolveFileToLayer,
|
|
399
420
|
resolveModelTier,
|
|
400
421
|
resolveRuleSeverity,
|
|
422
|
+
resolveSessionDir,
|
|
401
423
|
resolveStreamPath,
|
|
402
424
|
resolveThresholds,
|
|
403
425
|
runAll,
|
|
@@ -424,6 +446,7 @@ export {
|
|
|
424
446
|
syncRoadmap,
|
|
425
447
|
touchStream,
|
|
426
448
|
trackAction,
|
|
449
|
+
updateSessionIndex,
|
|
427
450
|
validateAgentsMap,
|
|
428
451
|
validateBoundaries,
|
|
429
452
|
validateCommitMessage,
|
|
@@ -436,5 +459,6 @@ export {
|
|
|
436
459
|
violationId,
|
|
437
460
|
writeConfig,
|
|
438
461
|
writeLockfile,
|
|
462
|
+
writeSessionSummary,
|
|
439
463
|
xssRules
|
|
440
464
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
checkDocsDefinition,
|
|
3
3
|
handleCheckDocs
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-MI5XJQDY.js";
|
|
5
5
|
import "./chunk-IDZNPTYD.js";
|
|
6
6
|
import "./chunk-W6Y7ZW3Y.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-KELT6K6M.js";
|
|
8
8
|
import "./chunk-MHBMTPW7.js";
|
|
9
9
|
export {
|
|
10
10
|
checkDocsDefinition,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
detectEntropyDefinition,
|
|
3
3
|
handleDetectEntropy
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-MACVXDZK.js";
|
|
5
5
|
import "./chunk-IDZNPTYD.js";
|
|
6
6
|
import "./chunk-W6Y7ZW3Y.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-KELT6K6M.js";
|
|
8
8
|
import "./chunk-MHBMTPW7.js";
|
|
9
9
|
export {
|
|
10
10
|
detectEntropyDefinition,
|
package/dist/{generate-agent-definitions-J5HANRNR.js → generate-agent-definitions-QABOJG56.js}
RENAMED
|
@@ -7,7 +7,7 @@ import "./chunk-KET4QQZB.js";
|
|
|
7
7
|
import "./chunk-ZOAWBDWU.js";
|
|
8
8
|
import "./chunk-HD4IBGLA.js";
|
|
9
9
|
import "./chunk-3WGJMBKH.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-KELT6K6M.js";
|
|
11
11
|
import "./chunk-MHBMTPW7.js";
|
|
12
12
|
export {
|
|
13
13
|
createGenerateAgentDefinitionsCommand,
|
package/dist/index.d.ts
CHANGED
|
@@ -164,6 +164,39 @@ interface SkillSource {
|
|
|
164
164
|
source: 'project' | 'community' | 'global';
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
+
interface ImpactPreviewOptions {
|
|
168
|
+
detailed?: boolean;
|
|
169
|
+
perFile?: boolean;
|
|
170
|
+
path?: string;
|
|
171
|
+
}
|
|
172
|
+
declare function runImpactPreview(options: ImpactPreviewOptions): Promise<string>;
|
|
173
|
+
|
|
174
|
+
interface CheckArchOptions {
|
|
175
|
+
cwd?: string;
|
|
176
|
+
configPath?: string;
|
|
177
|
+
updateBaseline?: boolean;
|
|
178
|
+
json?: boolean;
|
|
179
|
+
module?: string;
|
|
180
|
+
}
|
|
181
|
+
interface CheckArchResult {
|
|
182
|
+
passed: boolean;
|
|
183
|
+
mode: 'baseline' | 'threshold-only';
|
|
184
|
+
totalViolations: number;
|
|
185
|
+
newViolations: Violation[];
|
|
186
|
+
resolvedViolations: string[];
|
|
187
|
+
preExisting: string[];
|
|
188
|
+
regressions: Array<{
|
|
189
|
+
category: string;
|
|
190
|
+
baselineValue: number;
|
|
191
|
+
currentValue: number;
|
|
192
|
+
delta: number;
|
|
193
|
+
}>;
|
|
194
|
+
thresholdViolations: Violation[];
|
|
195
|
+
baselineUpdated?: boolean;
|
|
196
|
+
warning?: string;
|
|
197
|
+
}
|
|
198
|
+
declare function runCheckArch(options: CheckArchOptions): Promise<Result<CheckArchResult, CLIError>>;
|
|
199
|
+
|
|
167
200
|
/**
|
|
168
201
|
* Supported output modes for the CLI.
|
|
169
202
|
*/
|
|
@@ -627,15 +660,15 @@ declare const HarnessConfigSchema: z.ZodObject<{
|
|
|
627
660
|
thresholds: z.ZodDefault<z.ZodRecord<z.ZodEnum<["circular-deps", "layer-violations", "complexity", "coupling", "forbidden-imports", "module-size", "dependency-depth"]>, z.ZodUnion<[z.ZodNumber, z.ZodRecord<z.ZodString, z.ZodNumber>]>>>;
|
|
628
661
|
modules: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodEnum<["circular-deps", "layer-violations", "complexity", "coupling", "forbidden-imports", "module-size", "dependency-depth"]>, z.ZodUnion<[z.ZodNumber, z.ZodRecord<z.ZodString, z.ZodNumber>]>>>>;
|
|
629
662
|
}, "strip", z.ZodTypeAny, {
|
|
630
|
-
thresholds: Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>;
|
|
631
|
-
modules: Record<string, Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>>;
|
|
632
663
|
enabled: boolean;
|
|
633
664
|
baselinePath: string;
|
|
665
|
+
thresholds: Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>;
|
|
666
|
+
modules: Record<string, Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>>;
|
|
634
667
|
}, {
|
|
635
|
-
thresholds?: Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>> | undefined;
|
|
636
|
-
modules?: Record<string, Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>> | undefined;
|
|
637
668
|
enabled?: boolean | undefined;
|
|
638
669
|
baselinePath?: string | undefined;
|
|
670
|
+
thresholds?: Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>> | undefined;
|
|
671
|
+
modules?: Record<string, Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>> | undefined;
|
|
639
672
|
}>>;
|
|
640
673
|
/** How often (in ms) to check for CLI updates */
|
|
641
674
|
updateCheckInterval: z.ZodOptional<z.ZodNumber>;
|
|
@@ -735,10 +768,10 @@ declare const HarnessConfigSchema: z.ZodObject<{
|
|
|
735
768
|
} | undefined;
|
|
736
769
|
} | undefined;
|
|
737
770
|
architecture?: {
|
|
738
|
-
thresholds: Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>;
|
|
739
|
-
modules: Record<string, Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>>;
|
|
740
771
|
enabled: boolean;
|
|
741
772
|
baselinePath: string;
|
|
773
|
+
thresholds: Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>;
|
|
774
|
+
modules: Record<string, Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>>;
|
|
742
775
|
} | undefined;
|
|
743
776
|
updateCheckInterval?: number | undefined;
|
|
744
777
|
}, {
|
|
@@ -837,10 +870,10 @@ declare const HarnessConfigSchema: z.ZodObject<{
|
|
|
837
870
|
} | undefined;
|
|
838
871
|
} | undefined;
|
|
839
872
|
architecture?: {
|
|
840
|
-
thresholds?: Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>> | undefined;
|
|
841
|
-
modules?: Record<string, Partial<Record<"complexity" | "coupling" | "circular-deps" | "layer-violations" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>> | undefined;
|
|
842
873
|
enabled?: boolean | undefined;
|
|
843
874
|
baselinePath?: string | undefined;
|
|
875
|
+
thresholds?: Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>> | undefined;
|
|
876
|
+
modules?: Record<string, Partial<Record<"circular-deps" | "layer-violations" | "complexity" | "coupling" | "forbidden-imports" | "module-size" | "dependency-depth", number | Record<string, number>>>> | undefined;
|
|
844
877
|
} | undefined;
|
|
845
878
|
updateCheckInterval?: number | undefined;
|
|
846
879
|
}>;
|
|
@@ -1221,39 +1254,6 @@ declare function renderClaudeCodeAgent(def: AgentDefinition): string;
|
|
|
1221
1254
|
|
|
1222
1255
|
declare function renderGeminiAgent(def: AgentDefinition): string;
|
|
1223
1256
|
|
|
1224
|
-
interface ImpactPreviewOptions {
|
|
1225
|
-
detailed?: boolean;
|
|
1226
|
-
perFile?: boolean;
|
|
1227
|
-
path?: string;
|
|
1228
|
-
}
|
|
1229
|
-
declare function runImpactPreview(options: ImpactPreviewOptions): Promise<string>;
|
|
1230
|
-
|
|
1231
|
-
interface CheckArchOptions {
|
|
1232
|
-
cwd?: string;
|
|
1233
|
-
configPath?: string;
|
|
1234
|
-
updateBaseline?: boolean;
|
|
1235
|
-
json?: boolean;
|
|
1236
|
-
module?: string;
|
|
1237
|
-
}
|
|
1238
|
-
interface CheckArchResult {
|
|
1239
|
-
passed: boolean;
|
|
1240
|
-
mode: 'baseline' | 'threshold-only';
|
|
1241
|
-
totalViolations: number;
|
|
1242
|
-
newViolations: Violation[];
|
|
1243
|
-
resolvedViolations: string[];
|
|
1244
|
-
preExisting: string[];
|
|
1245
|
-
regressions: Array<{
|
|
1246
|
-
category: string;
|
|
1247
|
-
baselineValue: number;
|
|
1248
|
-
currentValue: number;
|
|
1249
|
-
delta: number;
|
|
1250
|
-
}>;
|
|
1251
|
-
thresholdViolations: Violation[];
|
|
1252
|
-
baselineUpdated?: boolean;
|
|
1253
|
-
warning?: string;
|
|
1254
|
-
}
|
|
1255
|
-
declare function runCheckArch(options: CheckArchOptions): Promise<Result<CheckArchResult, CLIError>>;
|
|
1256
|
-
|
|
1257
1257
|
type ToolDefinition = {
|
|
1258
1258
|
name: string;
|
|
1259
1259
|
description: string;
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
runScan,
|
|
13
13
|
runUninstall,
|
|
14
14
|
runUninstallConstraints
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-RZSUJBZZ.js";
|
|
16
16
|
import {
|
|
17
17
|
generateCIWorkflow
|
|
18
18
|
} from "./chunk-VUCPTQ6G.js";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
loadConfig,
|
|
24
24
|
resolveConfig,
|
|
25
25
|
runCheckPhaseGate
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-3KOLLWWE.js";
|
|
27
27
|
import {
|
|
28
28
|
AGENT_DESCRIPTIONS,
|
|
29
29
|
DEFAULT_TOOLS,
|
|
@@ -66,18 +66,18 @@ import {
|
|
|
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-
|
|
69
|
+
} from "./chunk-7KQSUZVG.js";
|
|
70
|
+
import "./chunk-MACVXDZK.js";
|
|
71
|
+
import "./chunk-2VU4MFM3.js";
|
|
72
|
+
import "./chunk-7PZWR4LI.js";
|
|
73
|
+
import "./chunk-5VY23YK3.js";
|
|
74
|
+
import "./chunk-LD3DKUK5.js";
|
|
75
75
|
import "./chunk-ZOAWBDWU.js";
|
|
76
|
-
import "./chunk-
|
|
76
|
+
import "./chunk-PSNN4LWX.js";
|
|
77
77
|
import "./chunk-2YPZKGAG.js";
|
|
78
|
-
import "./chunk-
|
|
78
|
+
import "./chunk-WPPDRIJL.js";
|
|
79
79
|
import "./chunk-K6XAPGML.js";
|
|
80
|
-
import "./chunk-
|
|
80
|
+
import "./chunk-MI5XJQDY.js";
|
|
81
81
|
import "./chunk-IDZNPTYD.js";
|
|
82
82
|
import "./chunk-W6Y7ZW3Y.js";
|
|
83
83
|
import "./chunk-HD4IBGLA.js";
|
|
@@ -94,7 +94,7 @@ import {
|
|
|
94
94
|
import {
|
|
95
95
|
TemplateEngine
|
|
96
96
|
} from "./chunk-C2ERUR3L.js";
|
|
97
|
-
import "./chunk-
|
|
97
|
+
import "./chunk-KELT6K6M.js";
|
|
98
98
|
import "./chunk-MHBMTPW7.js";
|
|
99
99
|
export {
|
|
100
100
|
AGENT_DESCRIPTIONS,
|