@harness-engineering/cli 1.25.4 → 1.25.6
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/enforce-architecture/SKILL.md +12 -0
- package/dist/agents/skills/claude-code/harness-api-design/SKILL.md +12 -0
- package/dist/agents/skills/claude-code/harness-architecture-advisor/SKILL.md +12 -0
- package/dist/agents/skills/claude-code/harness-auth/SKILL.md +12 -0
- package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +30 -6
- package/dist/agents/skills/claude-code/harness-database/SKILL.md +12 -0
- package/dist/agents/skills/claude-code/harness-debugging/SKILL.md +38 -6
- package/dist/agents/skills/claude-code/harness-deployment/SKILL.md +12 -0
- package/dist/agents/skills/claude-code/harness-execution/SKILL.md +30 -6
- package/dist/agents/skills/claude-code/harness-planning/SKILL.md +20 -9
- package/dist/agents/skills/claude-code/harness-pre-commit-review/SKILL.md +59 -6
- package/dist/agents/skills/claude-code/harness-refactoring/SKILL.md +28 -7
- package/dist/agents/skills/claude-code/harness-security-scan/SKILL.md +12 -0
- package/dist/agents/skills/claude-code/harness-skill-authoring/SKILL.md +43 -8
- package/dist/agents/skills/claude-code/harness-soundness-review/SKILL.md +59 -7
- package/dist/agents/skills/claude-code/harness-tdd/SKILL.md +21 -0
- package/dist/agents/skills/claude-code/harness-verification/SKILL.md +31 -6
- package/dist/agents/skills/codex/enforce-architecture/SKILL.md +12 -0
- package/dist/agents/skills/codex/harness-api-design/SKILL.md +12 -0
- package/dist/agents/skills/codex/harness-architecture-advisor/SKILL.md +12 -0
- package/dist/agents/skills/codex/harness-auth/SKILL.md +12 -0
- package/dist/agents/skills/codex/harness-code-review/SKILL.md +30 -6
- package/dist/agents/skills/codex/harness-database/SKILL.md +12 -0
- package/dist/agents/skills/codex/harness-debugging/SKILL.md +38 -6
- package/dist/agents/skills/codex/harness-deployment/SKILL.md +12 -0
- package/dist/agents/skills/codex/harness-execution/SKILL.md +30 -6
- package/dist/agents/skills/codex/harness-planning/SKILL.md +20 -9
- package/dist/agents/skills/codex/harness-pre-commit-review/SKILL.md +59 -6
- package/dist/agents/skills/codex/harness-refactoring/SKILL.md +28 -7
- package/dist/agents/skills/codex/harness-security-scan/SKILL.md +12 -0
- package/dist/agents/skills/codex/harness-skill-authoring/SKILL.md +43 -8
- package/dist/agents/skills/codex/harness-soundness-review/SKILL.md +59 -7
- package/dist/agents/skills/codex/harness-tdd/SKILL.md +21 -0
- package/dist/agents/skills/codex/harness-verification/SKILL.md +31 -6
- package/dist/agents/skills/cursor/enforce-architecture/SKILL.md +12 -0
- package/dist/agents/skills/cursor/harness-api-design/SKILL.md +12 -0
- package/dist/agents/skills/cursor/harness-architecture-advisor/SKILL.md +12 -0
- package/dist/agents/skills/cursor/harness-auth/SKILL.md +12 -0
- package/dist/agents/skills/cursor/harness-code-review/SKILL.md +30 -6
- package/dist/agents/skills/cursor/harness-database/SKILL.md +12 -0
- package/dist/agents/skills/cursor/harness-debugging/SKILL.md +38 -6
- package/dist/agents/skills/cursor/harness-deployment/SKILL.md +12 -0
- package/dist/agents/skills/cursor/harness-execution/SKILL.md +30 -6
- package/dist/agents/skills/cursor/harness-planning/SKILL.md +20 -9
- package/dist/agents/skills/cursor/harness-pre-commit-review/SKILL.md +59 -6
- package/dist/agents/skills/cursor/harness-refactoring/SKILL.md +28 -7
- package/dist/agents/skills/cursor/harness-security-scan/SKILL.md +12 -0
- package/dist/agents/skills/cursor/harness-skill-authoring/SKILL.md +43 -8
- package/dist/agents/skills/cursor/harness-soundness-review/SKILL.md +59 -7
- package/dist/agents/skills/cursor/harness-tdd/SKILL.md +21 -0
- package/dist/agents/skills/cursor/harness-verification/SKILL.md +31 -6
- package/dist/agents/skills/gemini-cli/enforce-architecture/SKILL.md +12 -0
- package/dist/agents/skills/gemini-cli/harness-api-design/SKILL.md +12 -0
- package/dist/agents/skills/gemini-cli/harness-architecture-advisor/SKILL.md +12 -0
- package/dist/agents/skills/gemini-cli/harness-auth/SKILL.md +12 -0
- package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +30 -6
- package/dist/agents/skills/gemini-cli/harness-database/SKILL.md +12 -0
- package/dist/agents/skills/gemini-cli/harness-debugging/SKILL.md +38 -6
- package/dist/agents/skills/gemini-cli/harness-deployment/SKILL.md +12 -0
- package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +30 -6
- package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +20 -9
- package/dist/agents/skills/gemini-cli/harness-pre-commit-review/SKILL.md +59 -6
- package/dist/agents/skills/gemini-cli/harness-refactoring/SKILL.md +28 -7
- package/dist/agents/skills/gemini-cli/harness-security-scan/SKILL.md +12 -0
- package/dist/agents/skills/gemini-cli/harness-skill-authoring/SKILL.md +43 -8
- package/dist/agents/skills/gemini-cli/harness-soundness-review/SKILL.md +59 -7
- package/dist/agents/skills/gemini-cli/harness-tdd/SKILL.md +21 -0
- package/dist/agents/skills/gemini-cli/harness-verification/SKILL.md +31 -6
- package/dist/{agents-md-MCUM4SIZ.js → agents-md-2PYJM2MK.js} +3 -3
- package/dist/{architecture-HNIO6AUX.js → architecture-VCLB7A23.js} +4 -4
- package/dist/{assess-project-6MV5TNY3.js → assess-project-64C6LIKN.js} +1 -1
- package/dist/bin/harness-mcp.js +16 -15
- package/dist/bin/harness.js +27 -115
- package/dist/business-knowledge-6RHYJOB3.js +7 -0
- package/dist/{check-phase-gate-VCBQHQAC.js → check-phase-gate-RT6PGEHY.js} +4 -4
- package/dist/{chunk-MI6MA6OP.js → chunk-42ZZLMYD.js} +169 -118
- package/dist/{chunk-BUYW3SA2.js → chunk-43VBX44J.js} +219 -107
- package/dist/{chunk-UV3BZMGT.js → chunk-4YEBV2FT.js} +2 -2
- package/dist/{chunk-5BQ5BOJL.js → chunk-7BAGSY5Q.js} +1 -1
- package/dist/{chunk-FSNPBT74.js → chunk-BUJOMC3O.js} +1 -1
- package/dist/{chunk-M55DGGF3.js → chunk-CBZECDCW.js} +5 -5
- package/dist/{chunk-XTITAVUR.js → chunk-EY6F2QXW.js} +1 -1
- package/dist/{chunk-6VZQJ5CX.js → chunk-FL6A72LV.js} +1 -1
- package/dist/{chunk-CXJTVICF.js → chunk-JQCS75DY.js} +4 -4
- package/dist/{chunk-WIQA4BSH.js → chunk-JUXFYB2K.js} +1 -1
- package/dist/{chunk-FES2YEQU.js → chunk-KJC4SE7C.js} +9 -9
- package/dist/{chunk-4NK7Z3BP.js → chunk-R2BI5UPK.js} +1 -1
- package/dist/{chunk-2KZAXESR.js → chunk-R7P2FMJT.js} +360 -183
- package/dist/chunk-RC5ZY3EV.js +82 -0
- package/dist/{chunk-K2SON7TI.js → chunk-RDQGCHKD.js} +252 -57
- package/dist/{chunk-EHRZMOQ2.js → chunk-RKZW3FDF.js} +1 -1
- package/dist/{chunk-BOQRTARD.js → chunk-SMY35HJM.js} +1 -1
- package/dist/{chunk-UQZBZINS.js → chunk-SZZ5UQL7.js} +6 -6
- package/dist/{chunk-AT74HEQM.js → chunk-U2OMWI7Z.js} +1 -1
- package/dist/{chunk-P7PANON5.js → chunk-VELT5VAG.js} +1 -1
- package/dist/{chunk-YTP2UDPV.js → chunk-WEOGCL7B.js} +3 -3
- package/dist/{chunk-TYV4EUAD.js → chunk-X2JJ3CPG.js} +8 -8
- package/dist/{chunk-GEEYCQDS.js → chunk-XLO4AXXM.js} +9 -9
- package/dist/{chunk-47N6R2F4.js → chunk-XMEEYMGE.js} +1 -1
- package/dist/{chunk-FIQL2HND.js → chunk-Y5JA4J2M.js} +2 -2
- package/dist/{chunk-F23H3U5U.js → chunk-ZAKUCM7O.js} +2 -2
- package/dist/{ci-workflow-RTM7VVTD.js → ci-workflow-SZL3KVUK.js} +3 -3
- package/dist/{dist-RADHOOXG.js → dist-GRW3X2ZQ.js} +3 -1
- package/dist/{dist-WCSJHQPK.js → dist-T3DGV5UN.js} +16 -2
- package/dist/{docs-UBOGGHTY.js → docs-WDLJORLK.js} +4 -4
- package/dist/{engine-MJJAP5CH.js → engine-2YWYRCKK.js} +3 -3
- package/dist/{entropy-EMSXF2PX.js → entropy-PJGTOORX.js} +3 -3
- package/dist/{feedback-ZLUX72HD.js → feedback-M5KCJKL2.js} +1 -1
- package/dist/{generate-agent-definitions-AWLPJ27C.js → generate-agent-definitions-MFDW6LZT.js} +4 -4
- package/dist/{graph-loader-JHQVQRUS.js → graph-loader-QMKXT454.js} +1 -1
- package/dist/hooks/telemetry-reporter.js +22 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +26 -25
- package/dist/{loader-JVSJZSWZ.js → loader-6O52FYHE.js} +3 -3
- package/dist/{mcp-JZ7YB7TD.js → mcp-GGNFWKVC.js} +16 -15
- package/dist/{performance-7AGWJUY4.js → performance-337U5URQ.js} +4 -4
- package/dist/{review-pipeline-ZWVQJTJX.js → review-pipeline-DB5RD4SN.js} +3 -3
- package/dist/{runtime-D6YUQPP2.js → runtime-B74EN2WD.js} +3 -3
- package/dist/{scan-MPJ6JHUY.js → scan-DXQUHGTT.js} +1 -1
- package/dist/{security-JLZUAQYT.js → security-3AYN6FVU.js} +1 -1
- package/dist/{validate-TIIHRPMA.js → validate-35CD7VWN.js} +4 -4
- package/dist/{validate-cross-check-ZOWFA3DB.js → validate-cross-check-LJKXBQYH.js} +3 -3
- package/package.json +5 -5
|
@@ -13,13 +13,13 @@ import {
|
|
|
13
13
|
NODE_STABILITY,
|
|
14
14
|
init_dist as init_dist2,
|
|
15
15
|
queryTraceability
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-RDQGCHKD.js";
|
|
17
17
|
import {
|
|
18
18
|
__esm,
|
|
19
19
|
__export
|
|
20
20
|
} from "./chunk-KFQGP6VL.js";
|
|
21
21
|
|
|
22
|
-
// ../core/dist/chunk-
|
|
22
|
+
// ../core/dist/chunk-UWAI34RR.mjs
|
|
23
23
|
import { z } from "zod";
|
|
24
24
|
import { createHash } from "crypto";
|
|
25
25
|
import { minimatch } from "minimatch";
|
|
@@ -1734,8 +1734,8 @@ async function toHaveMaxDepDepth(received, maxDepth) {
|
|
|
1734
1734
|
};
|
|
1735
1735
|
}
|
|
1736
1736
|
var ArchMetricCategorySchema, ViolationSchema, MetricResultSchema, CategoryBaselineSchema, ArchBaselineSchema, CategoryRegressionSchema, ArchDiffResultSchema, ThresholdConfigSchema, ArchConfigSchema, ConstraintRuleSchema, ViolationSnapshotSchema, ViolationHistorySchema, EmergenceConfidenceSchema, EmergentConstraintSuggestionSchema, EmergenceResultSchema, accessAsync, readFileAsync, EXTENSION_BY_LANG, CircularDepsCollector, TypeScriptParser, EXTENSION_MAP, parserCache, initialized, GRAMMAR_MAP, TOP_LEVEL_TYPES, METHOD_TYPES, IDENTIFIER_TYPES, NAME_EXTRACTORS, pythonStrategy, goStrategy, RUST_USE_ARG_TYPES, RUST_PUB_ITEM_TYPES, rustStrategy, JAVA_IMPORT_TYPES, JAVA_EXPORT_TYPES, javaStrategy, STRATEGIES, TreeSitterParser, ParserRegistry, defaultRegistry, LayerViolationCollector, ArchBaselineManager, DEFAULT_THRESHOLDS, FUNCTION_PATTERNS, DECISION_PATTERNS, ComplexityCollector, DEFAULT_THRESHOLDS2, CouplingCollector, ForbiddenImportCollector, ModuleSizeCollector, DepDepthCollector, defaultCollectors, archMatchers;
|
|
1737
|
-
var
|
|
1738
|
-
"../core/dist/chunk-
|
|
1737
|
+
var init_chunk_UWAI34RR = __esm({
|
|
1738
|
+
"../core/dist/chunk-UWAI34RR.mjs"() {
|
|
1739
1739
|
"use strict";
|
|
1740
1740
|
init_dist();
|
|
1741
1741
|
ArchMetricCategorySchema = z.enum([
|
|
@@ -2780,6 +2780,7 @@ var init_chunk_QLTIBLN5 = __esm({
|
|
|
2780
2780
|
var dist_exports = {};
|
|
2781
2781
|
__export(dist_exports, {
|
|
2782
2782
|
AGENT_DESCRIPTORS: () => AGENT_DESCRIPTORS,
|
|
2783
|
+
AGREEMENT_LINE_GAP: () => AGREEMENT_LINE_GAP,
|
|
2783
2784
|
ARCHITECTURE_DESCRIPTOR: () => ARCHITECTURE_DESCRIPTOR,
|
|
2784
2785
|
AdjustedForecastSchema: () => AdjustedForecastSchema,
|
|
2785
2786
|
AgentActionEmitter: () => AgentActionEmitter,
|
|
@@ -2798,6 +2799,7 @@ __export(dist_exports, {
|
|
|
2798
2799
|
CACHE_TTL_MS: () => CACHE_TTL_MS,
|
|
2799
2800
|
CINotifier: () => CINotifier,
|
|
2800
2801
|
COMPLIANCE_DESCRIPTOR: () => COMPLIANCE_DESCRIPTOR,
|
|
2802
|
+
CORROBORATED_AGREEMENT: () => CORROBORATED_AGREEMENT,
|
|
2801
2803
|
CategoryBaselineSchema: () => CategoryBaselineSchema,
|
|
2802
2804
|
CategoryForecastSchema: () => CategoryForecastSchema,
|
|
2803
2805
|
CategoryRegressionSchema: () => CategoryRegressionSchema,
|
|
@@ -2823,9 +2825,11 @@ __export(dist_exports, {
|
|
|
2823
2825
|
DEFAULT_STREAM_INDEX: () => DEFAULT_STREAM_INDEX,
|
|
2824
2826
|
DEFAULT_TOKEN_BUDGET: () => DEFAULT_TOKEN_BUDGET,
|
|
2825
2827
|
DESTRUCTIVE_BASH: () => DESTRUCTIVE_BASH,
|
|
2828
|
+
DOMAIN_BASELINES: () => DOMAIN_BASELINES,
|
|
2826
2829
|
DepDepthCollector: () => DepDepthCollector,
|
|
2827
2830
|
DirectionSchema: () => DirectionSchema,
|
|
2828
2831
|
EMPTY_SUPPLY_CHAIN: () => EMPTY_SUPPLY_CHAIN,
|
|
2832
|
+
EVIDENCE_SATURATION: () => EVIDENCE_SATURATION,
|
|
2829
2833
|
EXTENSION_MAP: () => EXTENSION_MAP,
|
|
2830
2834
|
EmergenceConfidenceSchema: () => EmergenceConfidenceSchema,
|
|
2831
2835
|
EmergenceResultSchema: () => EmergenceResultSchema,
|
|
@@ -2835,6 +2839,7 @@ __export(dist_exports, {
|
|
|
2835
2839
|
EntropyConfigSchema: () => EntropyConfigSchema,
|
|
2836
2840
|
Err: () => Err,
|
|
2837
2841
|
ExclusionSet: () => ExclusionSet,
|
|
2842
|
+
FACTOR_WEIGHTS: () => FACTOR_WEIGHTS,
|
|
2838
2843
|
FailureEntrySchema: () => FailureEntrySchema,
|
|
2839
2844
|
FileSink: () => FileSink,
|
|
2840
2845
|
FindingLifecycleSchema: () => FindingLifecycleSchema,
|
|
@@ -2872,6 +2877,7 @@ __export(dist_exports, {
|
|
|
2872
2877
|
SECURITY_DESCRIPTOR: () => SECURITY_DESCRIPTOR,
|
|
2873
2878
|
SESSION_SECTION_NAMES: () => SESSION_SECTION_NAMES,
|
|
2874
2879
|
STALENESS_WARNING_DAYS: () => STALENESS_WARNING_DAYS,
|
|
2880
|
+
STANDALONE_AGREEMENT: () => STANDALONE_AGREEMENT,
|
|
2875
2881
|
STANDARD_COGNITIVE_MODES: () => STANDARD_COGNITIVE_MODES,
|
|
2876
2882
|
STATUS_RANK: () => STATUS_RANK,
|
|
2877
2883
|
SecurityCategorySnapshotSchema: () => SecurityCategorySnapshotSchema,
|
|
@@ -2908,6 +2914,7 @@ __export(dist_exports, {
|
|
|
2908
2914
|
TrendResultSchema: () => TrendResultSchema,
|
|
2909
2915
|
TruncationStrategy: () => TruncationStrategy,
|
|
2910
2916
|
TypeScriptParser: () => TypeScriptParser,
|
|
2917
|
+
VALIDATION_SCORES: () => VALIDATION_SCORES,
|
|
2911
2918
|
VALID_SCOPES: () => VALID_SCOPES,
|
|
2912
2919
|
VERSION: () => VERSION,
|
|
2913
2920
|
ViolationHistoryManager: () => ViolationHistoryManager,
|
|
@@ -3320,6 +3327,7 @@ import * as fs35 from "fs";
|
|
|
3320
3327
|
import * as path34 from "path";
|
|
3321
3328
|
import * as fs37 from "fs";
|
|
3322
3329
|
import * as path36 from "path";
|
|
3330
|
+
import { execFileSync as execFileSync2 } from "child_process";
|
|
3323
3331
|
import * as fs36 from "fs";
|
|
3324
3332
|
import * as path35 from "path";
|
|
3325
3333
|
import * as crypto4 from "crypto";
|
|
@@ -8812,6 +8820,27 @@ async function loadBudgetedLearnings(projectPath, options) {
|
|
|
8812
8820
|
}
|
|
8813
8821
|
return Ok(budgeted);
|
|
8814
8822
|
}
|
|
8823
|
+
function buildEntryFromFrontmatter(line, fm) {
|
|
8824
|
+
const rootCauseMatch = line.match(/\[root_cause:([^\]]+)\]/);
|
|
8825
|
+
const triedMatch = line.match(/\[tried:([^\]]+)\]/);
|
|
8826
|
+
return {
|
|
8827
|
+
hash: fm.hash,
|
|
8828
|
+
tags: fm.tags,
|
|
8829
|
+
summary: line,
|
|
8830
|
+
fullText: "",
|
|
8831
|
+
...rootCauseMatch?.[1] ? { rootCause: rootCauseMatch[1] } : {},
|
|
8832
|
+
...triedMatch?.[1] ? { triedAndFailed: triedMatch[1].split(",").map((s) => s.trim()) } : {}
|
|
8833
|
+
};
|
|
8834
|
+
}
|
|
8835
|
+
function buildEntryFromLine(line) {
|
|
8836
|
+
const idx = extractIndexEntry(line);
|
|
8837
|
+
return {
|
|
8838
|
+
hash: idx.hash,
|
|
8839
|
+
tags: idx.tags,
|
|
8840
|
+
summary: line,
|
|
8841
|
+
fullText: ""
|
|
8842
|
+
};
|
|
8843
|
+
}
|
|
8815
8844
|
async function loadIndexEntries(projectPath, skillName, stream, session) {
|
|
8816
8845
|
try {
|
|
8817
8846
|
const dirResult = await getStateDir(projectPath, stream, session);
|
|
@@ -8833,31 +8862,11 @@ async function loadIndexEntries(projectPath, skillName, stream, session) {
|
|
|
8833
8862
|
pendingFrontmatter = fm;
|
|
8834
8863
|
continue;
|
|
8835
8864
|
}
|
|
8836
|
-
const
|
|
8837
|
-
|
|
8838
|
-
|
|
8839
|
-
|
|
8840
|
-
|
|
8841
|
-
const triedMatch = line.match(/\[tried:([^\]]+)\]/);
|
|
8842
|
-
indexEntries.push({
|
|
8843
|
-
hash: pendingFrontmatter.hash,
|
|
8844
|
-
tags: pendingFrontmatter.tags,
|
|
8845
|
-
summary: line,
|
|
8846
|
-
fullText: "",
|
|
8847
|
-
// Placeholder — full text not loaded in index mode
|
|
8848
|
-
...rootCauseMatch?.[1] ? { rootCause: rootCauseMatch[1] } : {},
|
|
8849
|
-
...triedMatch?.[1] ? { triedAndFailed: triedMatch[1].split(",").map((s) => s.trim()) } : {}
|
|
8850
|
-
});
|
|
8851
|
-
pendingFrontmatter = null;
|
|
8852
|
-
} else {
|
|
8853
|
-
const idx = extractIndexEntry(line);
|
|
8854
|
-
indexEntries.push({
|
|
8855
|
-
hash: idx.hash,
|
|
8856
|
-
tags: idx.tags,
|
|
8857
|
-
summary: line,
|
|
8858
|
-
fullText: ""
|
|
8859
|
-
});
|
|
8860
|
-
}
|
|
8865
|
+
const isEntryStart = /^- \*\*\d{4}-\d{2}-\d{2}/.test(line) || /^## \d{4}-\d{2}-\d{2}/.test(line);
|
|
8866
|
+
if (isEntryStart) {
|
|
8867
|
+
const entry = pendingFrontmatter ? buildEntryFromFrontmatter(line, pendingFrontmatter) : buildEntryFromLine(line);
|
|
8868
|
+
indexEntries.push(entry);
|
|
8869
|
+
pendingFrontmatter = null;
|
|
8861
8870
|
currentBlock = [line];
|
|
8862
8871
|
} else if (line.trim() !== "" && currentBlock.length > 0) {
|
|
8863
8872
|
currentBlock.push(line);
|
|
@@ -11614,50 +11623,48 @@ function buildMergedTitle(a, b, domains) {
|
|
|
11614
11623
|
const cleanTitle = primaryFinding.title.replace(/^\[.*?\]\s*/, "");
|
|
11615
11624
|
return { title: `[${domainList}] ${cleanTitle}`, primaryFinding };
|
|
11616
11625
|
}
|
|
11626
|
+
function setIfDefined(target, key, value) {
|
|
11627
|
+
if (value !== void 0) target[key] = value;
|
|
11628
|
+
}
|
|
11617
11629
|
function mergeSecurityFields(merged, primary, a, b) {
|
|
11618
|
-
|
|
11619
|
-
|
|
11620
|
-
|
|
11621
|
-
|
|
11630
|
+
setIfDefined(merged, "cweId", primary.cweId ?? a.cweId ?? b.cweId);
|
|
11631
|
+
setIfDefined(
|
|
11632
|
+
merged,
|
|
11633
|
+
"owaspCategory",
|
|
11634
|
+
primary.owaspCategory ?? a.owaspCategory ?? b.owaspCategory
|
|
11635
|
+
);
|
|
11636
|
+
setIfDefined(merged, "confidence", primary.confidence ?? a.confidence ?? b.confidence);
|
|
11637
|
+
setIfDefined(merged, "remediation", pickLongest(a.remediation, b.remediation));
|
|
11622
11638
|
const mergedRefs = [.../* @__PURE__ */ new Set([...a.references ?? [], ...b.references ?? []])];
|
|
11623
|
-
if (cweId !== void 0) merged.cweId = cweId;
|
|
11624
|
-
if (owaspCategory !== void 0) merged.owaspCategory = owaspCategory;
|
|
11625
|
-
if (confidence !== void 0) merged.confidence = confidence;
|
|
11626
|
-
if (remediation !== void 0) merged.remediation = remediation;
|
|
11627
11639
|
if (mergedRefs.length > 0) merged.references = mergedRefs;
|
|
11628
11640
|
}
|
|
11641
|
+
function pickHigherRank(aVal, bVal, rankMap) {
|
|
11642
|
+
return (rankMap[aVal] ?? 0) >= (rankMap[bVal] ?? 0) ? aVal : bVal;
|
|
11643
|
+
}
|
|
11644
|
+
function mergedLineRange(a, b) {
|
|
11645
|
+
return [Math.min(a[0], b[0]), Math.max(a[1], b[1])];
|
|
11646
|
+
}
|
|
11647
|
+
function mergeTrustScore(a, b) {
|
|
11648
|
+
const max = Math.max(a.trustScore ?? 0, b.trustScore ?? 0);
|
|
11649
|
+
return max > 0 ? max : void 0;
|
|
11650
|
+
}
|
|
11629
11651
|
function mergeFindings(a, b) {
|
|
11630
|
-
const highestSeverity = SEVERITY_RANK[a.severity] >= SEVERITY_RANK[b.severity] ? a.severity : b.severity;
|
|
11631
|
-
const highestValidatedBy = (VALIDATED_BY_RANK[a.validatedBy] ?? 0) >= (VALIDATED_BY_RANK[b.validatedBy] ?? 0) ? a.validatedBy : b.validatedBy;
|
|
11632
|
-
const longestRationale = a.rationale.length >= b.rationale.length ? a.rationale : b.rationale;
|
|
11633
|
-
const evidenceSet = /* @__PURE__ */ new Set([...a.evidence, ...b.evidence]);
|
|
11634
|
-
const lineRange = [
|
|
11635
|
-
Math.min(a.lineRange[0], b.lineRange[0]),
|
|
11636
|
-
Math.max(a.lineRange[1], b.lineRange[1])
|
|
11637
|
-
];
|
|
11638
11652
|
const domains = /* @__PURE__ */ new Set([a.domain, b.domain]);
|
|
11639
|
-
const suggestion = pickLongest(a.suggestion, b.suggestion);
|
|
11640
11653
|
const { title, primaryFinding } = buildMergedTitle(a, b, domains);
|
|
11641
11654
|
const merged = {
|
|
11642
11655
|
id: primaryFinding.id,
|
|
11643
11656
|
file: a.file,
|
|
11644
|
-
lineRange,
|
|
11657
|
+
lineRange: mergedLineRange(a.lineRange, b.lineRange),
|
|
11645
11658
|
domain: primaryFinding.domain,
|
|
11646
|
-
severity:
|
|
11659
|
+
severity: pickHigherRank(a.severity, b.severity, SEVERITY_RANK),
|
|
11647
11660
|
title,
|
|
11648
|
-
rationale:
|
|
11649
|
-
evidence: [...
|
|
11650
|
-
validatedBy:
|
|
11661
|
+
rationale: a.rationale.length >= b.rationale.length ? a.rationale : b.rationale,
|
|
11662
|
+
evidence: [.../* @__PURE__ */ new Set([...a.evidence, ...b.evidence])],
|
|
11663
|
+
validatedBy: pickHigherRank(a.validatedBy, b.validatedBy, VALIDATED_BY_RANK)
|
|
11651
11664
|
};
|
|
11652
|
-
|
|
11653
|
-
|
|
11654
|
-
}
|
|
11665
|
+
setIfDefined(merged, "suggestion", pickLongest(a.suggestion, b.suggestion));
|
|
11666
|
+
setIfDefined(merged, "trustScore", mergeTrustScore(a, b));
|
|
11655
11667
|
mergeSecurityFields(merged, primaryFinding, a, b);
|
|
11656
|
-
const trustA = a.trustScore ?? 0;
|
|
11657
|
-
const trustB = b.trustScore ?? 0;
|
|
11658
|
-
if (trustA > 0 || trustB > 0) {
|
|
11659
|
-
merged.trustScore = Math.max(trustA, trustB);
|
|
11660
|
-
}
|
|
11661
11668
|
return merged;
|
|
11662
11669
|
}
|
|
11663
11670
|
function deduplicateFindings(options) {
|
|
@@ -12004,14 +12011,15 @@ function findCorroboratedIds(findings) {
|
|
|
12004
12011
|
}
|
|
12005
12012
|
return corroborated;
|
|
12006
12013
|
}
|
|
12007
|
-
function computeTrustScores(findings) {
|
|
12014
|
+
function computeTrustScores(findings, options) {
|
|
12008
12015
|
if (findings.length === 0) return [];
|
|
12009
12016
|
const corroboratedIds = findCorroboratedIds(findings);
|
|
12017
|
+
const domainAccuracy = options?.domainAccuracy;
|
|
12010
12018
|
return findings.map((finding) => {
|
|
12011
12019
|
const validationFactor = VALIDATION_SCORES[finding.validatedBy];
|
|
12012
12020
|
const evidenceFactor = Math.min(1, finding.evidence.length / EVIDENCE_SATURATION);
|
|
12013
12021
|
const agreementFactor = corroboratedIds.has(finding.id) ? CORROBORATED_AGREEMENT : STANDALONE_AGREEMENT;
|
|
12014
|
-
const historicalFactor = DOMAIN_BASELINES[finding.domain];
|
|
12022
|
+
const historicalFactor = domainAccuracy?.[finding.domain] ?? DOMAIN_BASELINES[finding.domain];
|
|
12015
12023
|
const raw = FACTOR_WEIGHTS.validation * validationFactor + FACTOR_WEIGHTS.evidence * evidenceFactor + FACTOR_WEIGHTS.agreement * agreementFactor + FACTOR_WEIGHTS.historical * historicalFactor;
|
|
12016
12024
|
const trustScore = Math.round(raw * 100);
|
|
12017
12025
|
return { ...finding, trustScore };
|
|
@@ -12255,7 +12263,8 @@ async function runReviewPipeline(options) {
|
|
|
12255
12263
|
checkDepsOutput,
|
|
12256
12264
|
config = {},
|
|
12257
12265
|
commitHistory,
|
|
12258
|
-
sessionSlug
|
|
12266
|
+
sessionSlug,
|
|
12267
|
+
domainAccuracy
|
|
12259
12268
|
} = options;
|
|
12260
12269
|
if (flags.ci && prMetadata) {
|
|
12261
12270
|
const eligibility = checkEligibility(prMetadata, true);
|
|
@@ -12375,7 +12384,10 @@ async function runReviewPipeline(options) {
|
|
|
12375
12384
|
projectRoot,
|
|
12376
12385
|
fileContents
|
|
12377
12386
|
});
|
|
12378
|
-
const scoredFindings = computeTrustScores(
|
|
12387
|
+
const scoredFindings = computeTrustScores(
|
|
12388
|
+
validatedFindings,
|
|
12389
|
+
domainAccuracy ? { domainAccuracy } : void 0
|
|
12390
|
+
);
|
|
12379
12391
|
let evidenceCoverage;
|
|
12380
12392
|
if (sessionSlug) {
|
|
12381
12393
|
try {
|
|
@@ -13849,23 +13861,54 @@ function getOrCreateInstallId(projectRoot) {
|
|
|
13849
13861
|
fs36.writeFileSync(installIdFile, id, { encoding: "utf-8", mode: 384 });
|
|
13850
13862
|
return id;
|
|
13851
13863
|
}
|
|
13852
|
-
function
|
|
13853
|
-
const
|
|
13864
|
+
function parseIdentityFromTelemetryFile(filePath) {
|
|
13865
|
+
const identity = {};
|
|
13854
13866
|
try {
|
|
13855
13867
|
const raw = fs37.readFileSync(filePath, "utf-8");
|
|
13856
13868
|
const parsed = JSON.parse(raw);
|
|
13857
|
-
|
|
13858
|
-
|
|
13859
|
-
|
|
13860
|
-
|
|
13861
|
-
|
|
13862
|
-
if (typeof alias === "string") identity.alias = alias;
|
|
13863
|
-
return identity;
|
|
13864
|
-
}
|
|
13865
|
-
return {};
|
|
13869
|
+
const src = parsed?.identity;
|
|
13870
|
+
if (!src || typeof src !== "object") return identity;
|
|
13871
|
+
if (typeof src.project === "string") identity.project = src.project;
|
|
13872
|
+
if (typeof src.team === "string") identity.team = src.team;
|
|
13873
|
+
if (typeof src.alias === "string") identity.alias = src.alias;
|
|
13866
13874
|
} catch {
|
|
13867
|
-
return {};
|
|
13868
13875
|
}
|
|
13876
|
+
return identity;
|
|
13877
|
+
}
|
|
13878
|
+
function readProjectNameFallback(configPath) {
|
|
13879
|
+
try {
|
|
13880
|
+
const raw = fs37.readFileSync(configPath, "utf-8");
|
|
13881
|
+
const config = JSON.parse(raw);
|
|
13882
|
+
return typeof config?.name === "string" ? config.name : void 0;
|
|
13883
|
+
} catch {
|
|
13884
|
+
return void 0;
|
|
13885
|
+
}
|
|
13886
|
+
}
|
|
13887
|
+
function readGitAliasFallback(cwd) {
|
|
13888
|
+
try {
|
|
13889
|
+
const gitName = execFileSync2("git", ["config", "user.name"], {
|
|
13890
|
+
cwd,
|
|
13891
|
+
encoding: "utf-8",
|
|
13892
|
+
timeout: 2e3,
|
|
13893
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
13894
|
+
}).trim();
|
|
13895
|
+
return gitName || void 0;
|
|
13896
|
+
} catch {
|
|
13897
|
+
return void 0;
|
|
13898
|
+
}
|
|
13899
|
+
}
|
|
13900
|
+
function readIdentity(projectRoot) {
|
|
13901
|
+
const filePath = path36.join(projectRoot, ".harness", "telemetry.json");
|
|
13902
|
+
const identity = parseIdentityFromTelemetryFile(filePath);
|
|
13903
|
+
if (!identity.project) {
|
|
13904
|
+
const fallbackProject = readProjectNameFallback(path36.join(projectRoot, "harness.config.json"));
|
|
13905
|
+
if (fallbackProject) identity.project = fallbackProject;
|
|
13906
|
+
}
|
|
13907
|
+
if (!identity.alias) {
|
|
13908
|
+
const fallbackAlias = readGitAliasFallback(projectRoot);
|
|
13909
|
+
if (fallbackAlias) identity.alias = fallbackAlias;
|
|
13910
|
+
}
|
|
13911
|
+
return identity;
|
|
13869
13912
|
}
|
|
13870
13913
|
function resolveConsent(projectRoot, config) {
|
|
13871
13914
|
if (process.env.DO_NOT_TRACK === "1") return { allowed: false };
|
|
@@ -13887,7 +13930,7 @@ function collectEvents(projectRoot, consent) {
|
|
|
13887
13930
|
return records.map(
|
|
13888
13931
|
(record) => ({
|
|
13889
13932
|
event: "skill_invocation",
|
|
13890
|
-
distinctId,
|
|
13933
|
+
distinct_id: distinctId,
|
|
13891
13934
|
timestamp: record.startedAt,
|
|
13892
13935
|
properties: {
|
|
13893
13936
|
installId,
|
|
@@ -13928,10 +13971,10 @@ async function send(events, apiKey) {
|
|
|
13928
13971
|
}
|
|
13929
13972
|
}
|
|
13930
13973
|
}
|
|
13931
|
-
var VALID_TYPES, CONVENTIONAL_PATTERN, DEFAULT_AGNIX_TIMEOUT_MS, HARNESS_AGNIX_DISABLE, HARNESS_AGNIX_BIN, CLAUDE_MD_WARN_BYTES, CLAUDE_MD_ERROR_BYTES, CONTEXT_FILES, MIN_DESCRIPTION_LENGTH, SETTINGS_PATHS, KNOWN_HOOK_EVENTS, MCP_SETTINGS_FILES, REQUIRED_SECTIONS, SETTINGS_FILES, KNOWN_AGNIX_TOOLS, DEFAULT_SECTIONS, DEFAULT_RATIOS, NODE_TYPE_TO_CATEGORY, SECTION_LEVEL_MAP, DEFAULT_LEVEL, DEFAULT_BUDGET, DEFAULT_LOADER_CONFIG, LEVEL_FRACTIONS, PHASE_PRIORITIES, ManifestSchema, BundleConstraintsSchema, BundleSchema, ContributionsSchema, LockfilePackageSchema, LockfileSchema, SharableLayerSchema, SharableForbiddenImportSchema, SharableBoundaryConfigSchema, SharableSecurityRulesSchema, VALID_SCOPES, LINE_PATTERN, START_PATTERN, END_PATTERN, CODE_BLOCK_LANGUAGES, DEFAULT_DRIFT_CONFIG, FILE_TYPES, EXPORT_TYPES, CONVENTION_DESCRIPTIONS, RULE_CHECKERS, EntropyAnalyzer, readFile42, writeFile32, unlink22, mkdir22, copyFile2, DEFAULT_FIX_CONFIG, EXPORT_TYPE_KEYWORD, ALWAYS_UNSAFE_TYPES, idCounter, DEAD_CODE_FIX_ACTIONS, MustExportRuleSchema, MustExportDefaultRuleSchema, NoExportRuleSchema, MustImportRuleSchema, NoImportRuleSchema, NamingRuleSchema, MaxExportsRuleSchema, MaxLinesRuleSchema, RequireJSDocRuleSchema, RuleSchema, ConfigPatternSchema, PatternConfigSchema, DriftConfigSchema, DeadCodeConfigSchema, EntropyConfigSchema, BaselineManager, BenchmarkRunner, RegressionDetector, SKIP_DIRS, SOURCE_EXTENSIONS, FUNCTION_DECL_RE, CONST_DECL_RE, CriticalPathResolver, NoOpTelemetryAdapter, NoOpExecutor, ConsoleSink, feedbackConfig, ChecklistBuilder, AgentActionEmitter, globalEmitter, FileSink, NoOpSink, CategorySnapshotSchema, TimelineSnapshotSchema, TimelineFileSchema, TrendLineSchema, TrendResultSchema, DEFAULT_STABILITY_THRESHOLDS, ALL_CATEGORIES, TimelineManager, ConfidenceTierSchema, RegressionResultSchema, DirectionSchema, CategoryForecastSchema, SpecImpactSignalsSchema, SpecImpactEstimateSchema, ContributingFeatureSchema, AdjustedForecastSchema, PredictionWarningSchema, StabilityForecastSchema, PredictionResultSchema, PredictionOptionsSchema, VALID_STATUSES, EM_DASH, VALID_PRIORITIES, ALL_CATEGORIES2, DIRECTION_THRESHOLD, PredictionEngine, DEFAULT_COEFFICIENTS, SpecImpactEstimator, EMPTY_HISTORY, ViolationHistoryManager, NORMALIZERS, MAX_SAMPLES, DEFAULT_WINDOW_WEEKS, DEFAULT_MIN_OCCURRENCES, FailureEntrySchema, HandoffSchema, GateCheckSchema, GateResultSchema, GateConfigSchema, HarnessStateSchema, DEFAULT_STATE, StreamInfoSchema, StreamIndexSchema, DEFAULT_STREAM_INDEX, HARNESS_DIR, STATE_FILE, LEARNINGS_FILE, FAILURES_FILE, HANDOFF_FILE, GATE_CONFIG_FILE, INDEX_FILE, SESSIONS_DIR, SESSION_INDEX_FILE, SUMMARY_FILE, SESSION_STATE_FILE, ARCHIVE_DIR, CONTENT_HASHES_FILE, EVENTS_FILE, STREAMS_DIR, STREAM_NAME_REGEX, branchCache, BRANCH_CACHE_TTL_MS, STATE_FILES, MAX_CACHE_ENTRIES, learningsCacheMap, WEIGHTS, PROMOTABLE_OUTCOMES, failuresCacheMap, FAILURE_LINE_REGEX, SAFE_GATE_COMMAND, SkillEventSchema, knownHashesCache, EVENT_FORMATTERS, RuleRegistry, DEFAULT_SECURITY_CONFIG, RuleOverrideSchema, SecurityConfigSchema, secretRules, injectionRules, xssRules, cryptoRules, pathTraversalRules, networkRules, deserializationRules, agentConfigRules, mcpRules, insecureDefaultsRules, sharpEdgesRules, nodeRules, expressRules, reactRules, goRules, SecurityScanner, hiddenUnicodePatterns, reRolingPatterns, permissionEscalationPatterns, encodedPayloadPatterns, indirectInjectionPatterns, contextManipulationPatterns, socialEngineeringPatterns, suspiciousPatterns, ALL_PATTERNS, DESTRUCTIVE_BASH, TAINT_DURATION_MS, DEFAULT_SESSION_ID, SecurityCategorySnapshotSchema, SupplyChainSnapshotSchema, SecurityTimelineSnapshotSchema, FindingLifecycleSchema, SecurityTimelineFileSchema, DirectionSchema2, SecurityTrendLineSchema, TrendAttributionSchema, SecurityTrendResultSchema, TimeToFixStatsSchema, TimeToFixResultSchema, EMPTY_SUPPLY_CHAIN, SecurityTimelineManager, ALL_CHECKS, STATUS_ICONS, CINotifier, ExclusionSet, PREFIX_PATTERNS, TEST_FILE_PATTERN, MD_FILE_PATTERN, ALL_DOMAINS, SECURITY_PATTERNS, SEVERITY_RANK, SEVERITY_ORDER, SEVERITY_LABELS, VALIDATED_BY_RANK, COMPLIANCE_DESCRIPTOR, EXPORT_RE, BUG_DETECTION_DESCRIPTOR, SECURITY_DESCRIPTOR, EVAL_PATTERN, SECRET_PATTERNS, SQL_CONCAT_PATTERN, SHELL_EXEC_PATTERN, ARCHITECTURE_DESCRIPTOR, LARGE_FILE_THRESHOLD, VIOLATION_FILE_RE, LEARNINGS_DESCRIPTOR, RELEVANCE_THRESHOLD, AGENT_DESCRIPTORS, AGENT_RUNNERS, DOWNGRADE_MAP, DEFAULT_PROVIDER_TIERS, SMALL_SUGGESTION_LINE_LIMIT, FILE_LINE_RANGE_PATTERN, FILE_LINE_PATTERN, FILE_ONLY_PATTERN,
|
|
13974
|
+
var VALID_TYPES, CONVENTIONAL_PATTERN, DEFAULT_AGNIX_TIMEOUT_MS, HARNESS_AGNIX_DISABLE, HARNESS_AGNIX_BIN, CLAUDE_MD_WARN_BYTES, CLAUDE_MD_ERROR_BYTES, CONTEXT_FILES, MIN_DESCRIPTION_LENGTH, SETTINGS_PATHS, KNOWN_HOOK_EVENTS, MCP_SETTINGS_FILES, REQUIRED_SECTIONS, SETTINGS_FILES, KNOWN_AGNIX_TOOLS, DEFAULT_SECTIONS, DEFAULT_RATIOS, NODE_TYPE_TO_CATEGORY, SECTION_LEVEL_MAP, DEFAULT_LEVEL, DEFAULT_BUDGET, DEFAULT_LOADER_CONFIG, LEVEL_FRACTIONS, PHASE_PRIORITIES, ManifestSchema, BundleConstraintsSchema, BundleSchema, ContributionsSchema, LockfilePackageSchema, LockfileSchema, SharableLayerSchema, SharableForbiddenImportSchema, SharableBoundaryConfigSchema, SharableSecurityRulesSchema, VALID_SCOPES, LINE_PATTERN, START_PATTERN, END_PATTERN, CODE_BLOCK_LANGUAGES, DEFAULT_DRIFT_CONFIG, FILE_TYPES, EXPORT_TYPES, CONVENTION_DESCRIPTIONS, RULE_CHECKERS, EntropyAnalyzer, readFile42, writeFile32, unlink22, mkdir22, copyFile2, DEFAULT_FIX_CONFIG, EXPORT_TYPE_KEYWORD, ALWAYS_UNSAFE_TYPES, idCounter, DEAD_CODE_FIX_ACTIONS, MustExportRuleSchema, MustExportDefaultRuleSchema, NoExportRuleSchema, MustImportRuleSchema, NoImportRuleSchema, NamingRuleSchema, MaxExportsRuleSchema, MaxLinesRuleSchema, RequireJSDocRuleSchema, RuleSchema, ConfigPatternSchema, PatternConfigSchema, DriftConfigSchema, DeadCodeConfigSchema, EntropyConfigSchema, BaselineManager, BenchmarkRunner, RegressionDetector, SKIP_DIRS, SOURCE_EXTENSIONS, FUNCTION_DECL_RE, CONST_DECL_RE, CriticalPathResolver, NoOpTelemetryAdapter, NoOpExecutor, ConsoleSink, feedbackConfig, ChecklistBuilder, AgentActionEmitter, globalEmitter, FileSink, NoOpSink, CategorySnapshotSchema, TimelineSnapshotSchema, TimelineFileSchema, TrendLineSchema, TrendResultSchema, DEFAULT_STABILITY_THRESHOLDS, ALL_CATEGORIES, TimelineManager, ConfidenceTierSchema, RegressionResultSchema, DirectionSchema, CategoryForecastSchema, SpecImpactSignalsSchema, SpecImpactEstimateSchema, ContributingFeatureSchema, AdjustedForecastSchema, PredictionWarningSchema, StabilityForecastSchema, PredictionResultSchema, PredictionOptionsSchema, VALID_STATUSES, EM_DASH, VALID_PRIORITIES, ALL_CATEGORIES2, DIRECTION_THRESHOLD, PredictionEngine, DEFAULT_COEFFICIENTS, SpecImpactEstimator, EMPTY_HISTORY, ViolationHistoryManager, NORMALIZERS, MAX_SAMPLES, DEFAULT_WINDOW_WEEKS, DEFAULT_MIN_OCCURRENCES, FailureEntrySchema, HandoffSchema, GateCheckSchema, GateResultSchema, GateConfigSchema, HarnessStateSchema, DEFAULT_STATE, StreamInfoSchema, StreamIndexSchema, DEFAULT_STREAM_INDEX, HARNESS_DIR, STATE_FILE, LEARNINGS_FILE, FAILURES_FILE, HANDOFF_FILE, GATE_CONFIG_FILE, INDEX_FILE, SESSIONS_DIR, SESSION_INDEX_FILE, SUMMARY_FILE, SESSION_STATE_FILE, ARCHIVE_DIR, CONTENT_HASHES_FILE, EVENTS_FILE, STREAMS_DIR, STREAM_NAME_REGEX, branchCache, BRANCH_CACHE_TTL_MS, STATE_FILES, MAX_CACHE_ENTRIES, learningsCacheMap, WEIGHTS, PROMOTABLE_OUTCOMES, failuresCacheMap, FAILURE_LINE_REGEX, SAFE_GATE_COMMAND, SkillEventSchema, knownHashesCache, EVENT_FORMATTERS, RuleRegistry, DEFAULT_SECURITY_CONFIG, RuleOverrideSchema, SecurityConfigSchema, secretRules, injectionRules, xssRules, cryptoRules, pathTraversalRules, networkRules, deserializationRules, agentConfigRules, mcpRules, insecureDefaultsRules, sharpEdgesRules, nodeRules, expressRules, reactRules, goRules, SecurityScanner, hiddenUnicodePatterns, reRolingPatterns, permissionEscalationPatterns, encodedPayloadPatterns, indirectInjectionPatterns, contextManipulationPatterns, socialEngineeringPatterns, suspiciousPatterns, ALL_PATTERNS, DESTRUCTIVE_BASH, TAINT_DURATION_MS, DEFAULT_SESSION_ID, SecurityCategorySnapshotSchema, SupplyChainSnapshotSchema, SecurityTimelineSnapshotSchema, FindingLifecycleSchema, SecurityTimelineFileSchema, DirectionSchema2, SecurityTrendLineSchema, TrendAttributionSchema, SecurityTrendResultSchema, TimeToFixStatsSchema, TimeToFixResultSchema, EMPTY_SUPPLY_CHAIN, SecurityTimelineManager, ALL_CHECKS, STATUS_ICONS, CINotifier, ExclusionSet, PREFIX_PATTERNS, TEST_FILE_PATTERN, MD_FILE_PATTERN, ALL_DOMAINS, SECURITY_PATTERNS, SEVERITY_RANK, SEVERITY_ORDER, SEVERITY_LABELS, VALIDATED_BY_RANK, VALIDATION_SCORES, DOMAIN_BASELINES, FACTOR_WEIGHTS, EVIDENCE_SATURATION, CORROBORATED_AGREEMENT, STANDALONE_AGREEMENT, AGREEMENT_LINE_GAP, COMPLIANCE_DESCRIPTOR, EXPORT_RE, BUG_DETECTION_DESCRIPTOR, SECURITY_DESCRIPTOR, EVAL_PATTERN, SECRET_PATTERNS, SQL_CONCAT_PATTERN, SHELL_EXEC_PATTERN, ARCHITECTURE_DESCRIPTOR, LARGE_FILE_THRESHOLD, VIOLATION_FILE_RE, LEARNINGS_DESCRIPTOR, RELEVANCE_THRESHOLD, AGENT_DESCRIPTORS, AGENT_RUNNERS, DOWNGRADE_MAP, DEFAULT_PROVIDER_TIERS, SMALL_SUGGESTION_LINE_LIMIT, FILE_LINE_RANGE_PATTERN, FILE_LINE_PATTERN, FILE_ONLY_PATTERN, SECURITY_SENSITIVE_PATH, MIGRATION_PATH, TEST_PATH, CONFIG_PATH, STAGE_DOMAINS, EM_DASH2, STATUS_RANK, RETRY_DEFAULTS, GitHubIssuesSyncAdapter, syncMutex, PRIORITY_RANK, POSITION_WEIGHT, DEPENDENTS_WEIGHT, AFFINITY_WEIGHT, InteractionTypeSchema, QuestionSchema, ConfirmationSchema, TransitionSchema, EmitInteractionInputSchema, ProjectScanner, SHELL_TEMPLATE, STYLES, SCRIPTS, MockLLMService, llmService, ContentPipeline, BlueprintGenerator, TOKENS_PER_MILLION, fallback_default, LITELLM_PRICING_URL, CACHE_TTL_MS, STALENESS_WARNING_DAYS, MICRODOLLARS_PER_DOLLAR, TOKENS_PER_MILLION2, StructuralStrategy, DEFAULT_TOKEN_BUDGET, CHARS_PER_TOKEN, TRUNCATION_MARKER, TruncationStrategy, CompactionPipeline, STABILITY_LOOKUP, TIER_ORDER, AnthropicCacheAdapter, TIER_ORDER2, OpenAICacheAdapter, TIER_ORDER3, CACHED_CONTENT_MARKER, GeminiCacheAdapter, VERSION, POSTHOG_BATCH_URL, MAX_ATTEMPTS, TIMEOUT_MS;
|
|
13932
13975
|
var init_dist3 = __esm({
|
|
13933
13976
|
"../core/dist/index.mjs"() {
|
|
13934
|
-
|
|
13977
|
+
init_chunk_UWAI34RR();
|
|
13935
13978
|
init_dist();
|
|
13936
13979
|
init_dist();
|
|
13937
13980
|
init_dist();
|
|
@@ -17527,7 +17570,7 @@ var init_dist3 = __esm({
|
|
|
17527
17570
|
info: 0,
|
|
17528
17571
|
total: 0
|
|
17529
17572
|
};
|
|
17530
|
-
SecurityTimelineManager = class {
|
|
17573
|
+
SecurityTimelineManager = class _SecurityTimelineManager {
|
|
17531
17574
|
rootDir;
|
|
17532
17575
|
timelinePath;
|
|
17533
17576
|
constructor(rootDir) {
|
|
@@ -17799,6 +17842,11 @@ var init_dist3 = __esm({
|
|
|
17799
17842
|
}
|
|
17800
17843
|
}
|
|
17801
17844
|
}
|
|
17845
|
+
static SEVERITY_COUNT_KEY = {
|
|
17846
|
+
error: "errorCount",
|
|
17847
|
+
warning: "warningCount",
|
|
17848
|
+
info: "infoCount"
|
|
17849
|
+
};
|
|
17802
17850
|
aggregateByCategory(findings) {
|
|
17803
17851
|
const result = {};
|
|
17804
17852
|
for (const finding of findings) {
|
|
@@ -17812,9 +17860,8 @@ var init_dist3 = __esm({
|
|
|
17812
17860
|
}
|
|
17813
17861
|
const cat = result[finding.category];
|
|
17814
17862
|
cat.findingCount++;
|
|
17815
|
-
|
|
17816
|
-
|
|
17817
|
-
else cat.infoCount++;
|
|
17863
|
+
const key = _SecurityTimelineManager.SEVERITY_COUNT_KEY[finding.severity] ?? "infoCount";
|
|
17864
|
+
cat[key]++;
|
|
17818
17865
|
}
|
|
17819
17866
|
return result;
|
|
17820
17867
|
}
|
|
@@ -17842,26 +17889,23 @@ var init_dist3 = __esm({
|
|
|
17842
17889
|
return { current, previous, delta, direction };
|
|
17843
17890
|
}
|
|
17844
17891
|
computeAttribution(first, last) {
|
|
17845
|
-
const attribution = [];
|
|
17846
17892
|
const allCategories = /* @__PURE__ */ new Set([
|
|
17847
17893
|
...Object.keys(first.byCategory),
|
|
17848
17894
|
...Object.keys(last.byCategory)
|
|
17849
17895
|
]);
|
|
17896
|
+
const results = [];
|
|
17850
17897
|
for (const category of allCategories) {
|
|
17851
|
-
const
|
|
17852
|
-
|
|
17853
|
-
const delta = currCount - prevCount;
|
|
17854
|
-
if (delta === 0) continue;
|
|
17855
|
-
const direction = delta < 0 ? "improving" : "declining";
|
|
17856
|
-
const sign = delta > 0 ? "+" : "";
|
|
17857
|
-
attribution.push({
|
|
17858
|
-
category,
|
|
17859
|
-
delta,
|
|
17860
|
-
direction,
|
|
17861
|
-
description: `${sign}${delta} ${category} findings`
|
|
17862
|
-
});
|
|
17898
|
+
const attr = this.categoryAttribution(category, first.byCategory, last.byCategory);
|
|
17899
|
+
if (attr) results.push(attr);
|
|
17863
17900
|
}
|
|
17864
|
-
return
|
|
17901
|
+
return results;
|
|
17902
|
+
}
|
|
17903
|
+
categoryAttribution(category, prev, curr) {
|
|
17904
|
+
const delta = (curr[category]?.findingCount ?? 0) - (prev[category]?.findingCount ?? 0);
|
|
17905
|
+
if (delta === 0) return null;
|
|
17906
|
+
const direction = delta < 0 ? "improving" : "declining";
|
|
17907
|
+
const sign = delta > 0 ? "+" : "";
|
|
17908
|
+
return { category, delta, direction, description: `${sign}${delta} ${category} findings` };
|
|
17865
17909
|
}
|
|
17866
17910
|
computeStats(values) {
|
|
17867
17911
|
if (values.length === 0) {
|
|
@@ -18020,6 +18064,28 @@ var init_dist3 = __esm({
|
|
|
18020
18064
|
heuristic: 1,
|
|
18021
18065
|
graph: 2
|
|
18022
18066
|
};
|
|
18067
|
+
VALIDATION_SCORES = {
|
|
18068
|
+
mechanical: 1,
|
|
18069
|
+
graph: 0.8,
|
|
18070
|
+
heuristic: 0.5
|
|
18071
|
+
};
|
|
18072
|
+
DOMAIN_BASELINES = {
|
|
18073
|
+
security: 0.7,
|
|
18074
|
+
bug: 0.6,
|
|
18075
|
+
architecture: 0.65,
|
|
18076
|
+
compliance: 0.75,
|
|
18077
|
+
learnings: 0.5
|
|
18078
|
+
};
|
|
18079
|
+
FACTOR_WEIGHTS = {
|
|
18080
|
+
validation: 0.35,
|
|
18081
|
+
evidence: 0.3,
|
|
18082
|
+
agreement: 0.15,
|
|
18083
|
+
historical: 0.2
|
|
18084
|
+
};
|
|
18085
|
+
EVIDENCE_SATURATION = 3;
|
|
18086
|
+
CORROBORATED_AGREEMENT = 1;
|
|
18087
|
+
STANDALONE_AGREEMENT = 0.5;
|
|
18088
|
+
AGREEMENT_LINE_GAP = 3;
|
|
18023
18089
|
COMPLIANCE_DESCRIPTOR = {
|
|
18024
18090
|
domain: "compliance",
|
|
18025
18091
|
tier: "standard",
|
|
@@ -18133,28 +18199,6 @@ var init_dist3 = __esm({
|
|
|
18133
18199
|
FILE_LINE_RANGE_PATTERN = /^([\w./@-]+\.\w+):(\d+)-(\d+)/;
|
|
18134
18200
|
FILE_LINE_PATTERN = /^([\w./@-]+\.\w+):(\d+)/;
|
|
18135
18201
|
FILE_ONLY_PATTERN = /^([\w./@-]+\.\w+)\s/;
|
|
18136
|
-
VALIDATION_SCORES = {
|
|
18137
|
-
mechanical: 1,
|
|
18138
|
-
graph: 0.8,
|
|
18139
|
-
heuristic: 0.5
|
|
18140
|
-
};
|
|
18141
|
-
DOMAIN_BASELINES = {
|
|
18142
|
-
security: 0.7,
|
|
18143
|
-
bug: 0.6,
|
|
18144
|
-
architecture: 0.65,
|
|
18145
|
-
compliance: 0.75,
|
|
18146
|
-
learnings: 0.5
|
|
18147
|
-
};
|
|
18148
|
-
FACTOR_WEIGHTS = {
|
|
18149
|
-
validation: 0.35,
|
|
18150
|
-
evidence: 0.3,
|
|
18151
|
-
agreement: 0.15,
|
|
18152
|
-
historical: 0.2
|
|
18153
|
-
};
|
|
18154
|
-
EVIDENCE_SATURATION = 3;
|
|
18155
|
-
CORROBORATED_AGREEMENT = 1;
|
|
18156
|
-
STANDALONE_AGREEMENT = 0.5;
|
|
18157
|
-
AGREEMENT_LINE_GAP = 3;
|
|
18158
18202
|
SECURITY_SENSITIVE_PATH = /(auth|crypto|secret|token|password|session|permission)/i;
|
|
18159
18203
|
MIGRATION_PATH = /(migration|schema|db\/|database\/)/i;
|
|
18160
18204
|
TEST_PATH = /\.(test|spec)\.(ts|tsx|js|jsx|mts|cts)$/;
|
|
@@ -19235,6 +19279,13 @@ export {
|
|
|
19235
19279
|
buildExclusionSet,
|
|
19236
19280
|
detectChangeType,
|
|
19237
19281
|
scopeContext,
|
|
19282
|
+
VALIDATION_SCORES,
|
|
19283
|
+
DOMAIN_BASELINES,
|
|
19284
|
+
FACTOR_WEIGHTS,
|
|
19285
|
+
EVIDENCE_SATURATION,
|
|
19286
|
+
CORROBORATED_AGREEMENT,
|
|
19287
|
+
STANDALONE_AGREEMENT,
|
|
19288
|
+
AGREEMENT_LINE_GAP,
|
|
19238
19289
|
COMPLIANCE_DESCRIPTOR,
|
|
19239
19290
|
runComplianceAgent,
|
|
19240
19291
|
BUG_DETECTION_DESCRIPTOR,
|