@harness-engineering/cli 2.1.0 → 2.2.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/initialize-harness-project/SKILL.md +168 -13
- package/dist/agents/skills/codex/initialize-harness-project/SKILL.md +168 -13
- package/dist/agents/skills/cursor/initialize-harness-project/SKILL.md +168 -13
- package/dist/agents/skills/gemini-cli/initialize-harness-project/SKILL.md +168 -13
- package/dist/{agents-md-XCAWON2D.js → agents-md-L4X4MOWT.js} +2 -2
- package/dist/{architecture-KERHEEQZ.js → architecture-WJRIYQ45.js} +3 -3
- package/dist/{assess-project-NPYA3UVI.js → assess-project-PHC2HO3V.js} +1 -1
- package/dist/bin/harness-mcp.js +13 -13
- package/dist/bin/harness.js +22 -22
- package/dist/{check-phase-gate-GE5ALEEU.js → check-phase-gate-646KY67H.js} +3 -3
- package/dist/{chunk-IIX5OJES.js → chunk-224XKVLP.js} +1 -1
- package/dist/{chunk-UWIOBHZL.js → chunk-2QPHCR22.js} +5 -5
- package/dist/{chunk-URLDPALI.js → chunk-2ZURBWEV.js} +3 -3
- package/dist/{chunk-EFA4OEEN.js → chunk-36X7TRUI.js} +2 -2
- package/dist/{chunk-HBQ3BK2E.js → chunk-4HKVZO7R.js} +1 -1
- package/dist/{chunk-OXFFN3FD.js → chunk-CPYL6LJR.js} +1 -1
- package/dist/{chunk-WW6AUOA3.js → chunk-E7W3YOXL.js} +2 -2
- package/dist/{chunk-FQAJAM54.js → chunk-GOOTYTTV.js} +71 -29
- package/dist/{chunk-D5FE4L2O.js → chunk-JPWICLXQ.js} +1 -1
- package/dist/{chunk-MAFI6UWT.js → chunk-K4WRQTEF.js} +137 -39
- package/dist/{chunk-M4C3ZIGL.js → chunk-KV7A5OZT.js} +3 -3
- package/dist/{chunk-T7MNLCUD.js → chunk-L2IDE7WS.js} +122 -76
- package/dist/{chunk-4FVHBBPY.js → chunk-LO7ZLV7S.js} +1 -1
- package/dist/{chunk-GCYGGQFM.js → chunk-OJMO4JBQ.js} +61 -6
- package/dist/{chunk-PCX4GPNT.js → chunk-QTUPHTTK.js} +1 -1
- package/dist/{chunk-AEFZJ543.js → chunk-TNZYQTEE.js} +1 -1
- package/dist/{chunk-DRD7LLFC.js → chunk-VJQLUS5I.js} +1 -1
- package/dist/{chunk-LY2TY6NE.js → chunk-VKDBM3RX.js} +3 -3
- package/dist/{chunk-FBQYKH7R.js → chunk-W4AFGFFB.js} +2 -2
- package/dist/{chunk-YBGVZQQE.js → chunk-YLOAQZLA.js} +2 -2
- package/dist/{chunk-GHPWBWUW.js → chunk-YLTRFZAT.js} +6 -6
- package/dist/{chunk-RCHXBL2M.js → chunk-YWD6WXXM.js} +6 -6
- package/dist/{ci-workflow-A2E2RTOP.js → ci-workflow-TOS5X527.js} +2 -2
- package/dist/{dist-K22DQUYY.js → dist-6RT2AVYU.js} +1 -1
- package/dist/{docs-GXJOFVCF.js → docs-HOJMQYDZ.js} +3 -3
- package/dist/{engine-JBUIA2XO.js → engine-D6UYH6DB.js} +2 -2
- package/dist/{entropy-Y7LUT4BZ.js → entropy-LZ4IDGZR.js} +2 -2
- package/dist/{feedback-BHOBVKI3.js → feedback-WV7EQVK7.js} +1 -1
- package/dist/{generate-agent-definitions-VL3ZVR32.js → generate-agent-definitions-GFNXJCBY.js} +3 -3
- package/dist/index.d.ts +17 -8
- package/dist/index.js +22 -22
- package/dist/{loader-WCKVMDYR.js → loader-Z23JTXIZ.js} +2 -2
- package/dist/{mcp-FA2CKHFY.js → mcp-JDJGELGD.js} +13 -13
- package/dist/{performance-NISUL5AA.js → performance-7ATLHTQU.js} +3 -3
- package/dist/{review-pipeline-CHE5LJ5D.js → review-pipeline-COBGGXHJ.js} +2 -2
- package/dist/{runtime-3SKKEVPF.js → runtime-KCBNQUXK.js} +2 -2
- package/dist/{security-MF54MY3P.js → security-MAPRIFQT.js} +1 -1
- package/dist/{validate-SIWFNTXI.js → validate-74XTQR7Q.js} +3 -3
- package/dist/{validate-cross-check-GBX7B7CQ.js → validate-cross-check-MI5MZ7MB.js} +2 -2
- package/package.json +4 -4
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
__export
|
|
20
20
|
} from "./chunk-KFQGP6VL.js";
|
|
21
21
|
|
|
22
|
-
// ../core/dist/chunk-
|
|
22
|
+
// ../core/dist/chunk-CE225WRK.mjs
|
|
23
23
|
import { z } from "zod";
|
|
24
24
|
import { createHash } from "crypto";
|
|
25
25
|
import { minimatch } from "minimatch";
|
|
@@ -115,20 +115,32 @@ function getExtensionsForLang(lang) {
|
|
|
115
115
|
return [".ts", ".tsx", ".js", ".jsx"];
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
-
function resolveImportPath(importSource, fromFile, _rootDir) {
|
|
118
|
+
async function resolveImportPath(importSource, fromFile, _rootDir) {
|
|
119
119
|
if (!importSource.startsWith(".") && !importSource.startsWith("/")) {
|
|
120
120
|
return null;
|
|
121
121
|
}
|
|
122
122
|
const fromDir = dirname(fromFile);
|
|
123
|
-
|
|
124
|
-
const
|
|
125
|
-
const
|
|
126
|
-
const
|
|
123
|
+
const resolved = resolve(fromDir, importSource);
|
|
124
|
+
const sourceExt = extname(resolved);
|
|
125
|
+
const fromLang = detectLangFromExt(extname(fromFile));
|
|
126
|
+
const fallbacks = JS_EXT_FALLBACKS[sourceExt];
|
|
127
|
+
if (fallbacks) {
|
|
128
|
+
const base = resolved.slice(0, -sourceExt.length);
|
|
129
|
+
for (const ext of fallbacks) {
|
|
130
|
+
const candidate = base + ext;
|
|
131
|
+
if (await fileExists(candidate)) return candidate.replace(/\\/g, "/");
|
|
132
|
+
}
|
|
133
|
+
for (const indexExt of [".ts", ".tsx", ".jsx"]) {
|
|
134
|
+
const indexPath2 = resolve(base, "index" + indexExt);
|
|
135
|
+
if (await fileExists(indexPath2)) return indexPath2.replace(/\\/g, "/");
|
|
136
|
+
}
|
|
137
|
+
}
|
|
127
138
|
const hasKnownExt = Object.values(EXTENSION_BY_LANG).flat().some((e) => resolved.endsWith(e));
|
|
128
|
-
if (
|
|
129
|
-
|
|
139
|
+
if (hasKnownExt) {
|
|
140
|
+
return resolved.replace(/\\/g, "/");
|
|
130
141
|
}
|
|
131
|
-
|
|
142
|
+
const extensions = getExtensionsForLang(fromLang);
|
|
143
|
+
return (resolved + extensions[0]).replace(/\\/g, "/");
|
|
132
144
|
}
|
|
133
145
|
function getImportType(imp) {
|
|
134
146
|
if (imp.kind === "type") return "type-only";
|
|
@@ -157,7 +169,7 @@ async function buildDependencyGraph(files, parser, graphDependencyData) {
|
|
|
157
169
|
continue;
|
|
158
170
|
}
|
|
159
171
|
for (const imp of importsResult.value) {
|
|
160
|
-
const resolvedPath = resolveImportPath(imp.source, file, "");
|
|
172
|
+
const resolvedPath = await resolveImportPath(imp.source, file, "");
|
|
161
173
|
if (resolvedPath) {
|
|
162
174
|
edges.push({
|
|
163
175
|
from: normalizedFile,
|
|
@@ -1733,9 +1745,9 @@ async function toHaveMaxDepDepth(received, maxDepth) {
|
|
|
1733
1745
|
message: () => pass ? `Expected dependency depth in '${received.scope}' to exceed ${maxDepth} but it was ${maxActual}` : `Module '${received.scope}' has dependency depth ${maxActual} (limit: ${maxDepth})`
|
|
1734
1746
|
};
|
|
1735
1747
|
}
|
|
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-
|
|
1748
|
+
var ArchMetricCategorySchema, ViolationSchema, MetricResultSchema, CategoryBaselineSchema, ArchBaselineSchema, CategoryRegressionSchema, ArchDiffResultSchema, ThresholdConfigSchema, ArchConfigSchema, ConstraintRuleSchema, ViolationSnapshotSchema, ViolationHistorySchema, EmergenceConfidenceSchema, EmergentConstraintSuggestionSchema, EmergenceResultSchema, accessAsync, readFileAsync, EXTENSION_BY_LANG, JS_EXT_FALLBACKS, 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;
|
|
1749
|
+
var init_chunk_CE225WRK = __esm({
|
|
1750
|
+
"../core/dist/chunk-CE225WRK.mjs"() {
|
|
1739
1751
|
"use strict";
|
|
1740
1752
|
init_dist();
|
|
1741
1753
|
ArchMetricCategorySchema = z.enum([
|
|
@@ -1853,6 +1865,12 @@ var init_chunk_H73442AZ = __esm({
|
|
|
1853
1865
|
rust: [".rs"],
|
|
1854
1866
|
java: [".java"]
|
|
1855
1867
|
};
|
|
1868
|
+
JS_EXT_FALLBACKS = {
|
|
1869
|
+
".js": [".ts", ".tsx", ".jsx"],
|
|
1870
|
+
".jsx": [".tsx"],
|
|
1871
|
+
".mjs": [".mts"],
|
|
1872
|
+
".cjs": [".cts"]
|
|
1873
|
+
};
|
|
1856
1874
|
CircularDepsCollector = class {
|
|
1857
1875
|
category = "circular-deps";
|
|
1858
1876
|
getRules(_config, _rootDir) {
|
|
@@ -2439,6 +2457,25 @@ var init_chunk_H73442AZ = __esm({
|
|
|
2439
2457
|
return null;
|
|
2440
2458
|
}
|
|
2441
2459
|
}
|
|
2460
|
+
/**
|
|
2461
|
+
* Refresh the on-disk baseline with new results.
|
|
2462
|
+
*
|
|
2463
|
+
* Categories present in `results` overwrite their on-disk entry; categories
|
|
2464
|
+
* absent from `results` are preserved as-is. This prevents silent data loss
|
|
2465
|
+
* when a collector returns no results (e.g. transient failure or a filtered
|
|
2466
|
+
* run) and the regenerated file is committed (issue #268).
|
|
2467
|
+
*
|
|
2468
|
+
* Use this from the `--update-baseline` flow instead of `capture()` + `save()`.
|
|
2469
|
+
*/
|
|
2470
|
+
update(results, commitHash) {
|
|
2471
|
+
const fresh = this.capture(results, commitHash);
|
|
2472
|
+
const existing = this.load();
|
|
2473
|
+
if (existing) {
|
|
2474
|
+
fresh.metrics = { ...existing.metrics, ...fresh.metrics };
|
|
2475
|
+
}
|
|
2476
|
+
this.save(fresh);
|
|
2477
|
+
return fresh;
|
|
2478
|
+
}
|
|
2442
2479
|
/**
|
|
2443
2480
|
* Save an ArchBaseline to disk.
|
|
2444
2481
|
* Creates parent directories if they do not exist.
|
|
@@ -3267,7 +3304,7 @@ import * as fs4 from "fs/promises";
|
|
|
3267
3304
|
import { join as join14, resolve as resolve32 } from "path";
|
|
3268
3305
|
import { minimatch as minimatch22 } from "minimatch";
|
|
3269
3306
|
import { dirname as dirname5, resolve as resolve4 } from "path";
|
|
3270
|
-
import { dirname as dirname6, resolve as resolve5 } from "path";
|
|
3307
|
+
import { dirname as dirname6, extname as extname2, resolve as resolve5 } from "path";
|
|
3271
3308
|
import { minimatch as minimatch3 } from "minimatch";
|
|
3272
3309
|
import { readdirSync, statSync as statSync2 } from "fs";
|
|
3273
3310
|
import { join as join15 } from "path";
|
|
@@ -3344,7 +3381,7 @@ import { z as z11 } from "zod";
|
|
|
3344
3381
|
import { readFileSync as readFileSync23, writeFileSync as writeFileSync16, renameSync as renameSync82, mkdirSync as mkdirSync15, existsSync as existsSync332 } from "fs";
|
|
3345
3382
|
import { execSync as execSync3 } from "child_process";
|
|
3346
3383
|
import { randomBytes as randomBytes22 } from "crypto";
|
|
3347
|
-
import { join as join39, dirname as dirname13 } from "path";
|
|
3384
|
+
import { isAbsolute as isAbsolute4, join as join39, relative as relative32, dirname as dirname13 } from "path";
|
|
3348
3385
|
import * as path24 from "path";
|
|
3349
3386
|
import * as path25 from "path";
|
|
3350
3387
|
import * as path26 from "path";
|
|
@@ -6243,19 +6280,30 @@ function resolveImportToFile(importSource, fromFile, snapshot, fileIndex) {
|
|
|
6243
6280
|
}
|
|
6244
6281
|
const hasFile = fileIndex ? (p) => fileIndex.has(p) : (p) => snapshot.files.some((f) => f.path === p);
|
|
6245
6282
|
const fromDir = dirname6(fromFile);
|
|
6246
|
-
|
|
6247
|
-
|
|
6248
|
-
|
|
6249
|
-
|
|
6250
|
-
|
|
6283
|
+
const resolved = resolve5(fromDir, importSource);
|
|
6284
|
+
const sourceExt = extname2(resolved);
|
|
6285
|
+
const fallbacks = JS_EXT_FALLBACKS2[sourceExt];
|
|
6286
|
+
if (fallbacks) {
|
|
6287
|
+
const base = resolved.slice(0, -sourceExt.length);
|
|
6288
|
+
for (const ext of fallbacks) {
|
|
6289
|
+
const candidate = base + ext;
|
|
6290
|
+
if (hasFile(candidate)) return candidate;
|
|
6251
6291
|
}
|
|
6252
|
-
const
|
|
6253
|
-
|
|
6254
|
-
return
|
|
6292
|
+
for (const indexExt of [".ts", ".tsx", ".jsx"]) {
|
|
6293
|
+
const indexPath2 = resolve5(base, "index" + indexExt);
|
|
6294
|
+
if (hasFile(indexPath2)) return indexPath2;
|
|
6255
6295
|
}
|
|
6256
6296
|
}
|
|
6257
|
-
if (hasFile(resolved))
|
|
6258
|
-
|
|
6297
|
+
if (hasFile(resolved)) return resolved;
|
|
6298
|
+
if (!sourceExt) {
|
|
6299
|
+
for (const ext of [".ts", ".tsx"]) {
|
|
6300
|
+
const candidate = resolved + ext;
|
|
6301
|
+
if (hasFile(candidate)) return candidate;
|
|
6302
|
+
}
|
|
6303
|
+
for (const indexExt of [".ts", ".tsx"]) {
|
|
6304
|
+
const indexPath2 = resolve5(resolved, "index" + indexExt);
|
|
6305
|
+
if (hasFile(indexPath2)) return indexPath2;
|
|
6306
|
+
}
|
|
6259
6307
|
}
|
|
6260
6308
|
return null;
|
|
6261
6309
|
}
|
|
@@ -10915,12 +10963,18 @@ async function resolveImportPath2(projectRoot, fromFile, importSource) {
|
|
|
10915
10963
|
const basePath = path26.resolve(fromDir, importSource);
|
|
10916
10964
|
if (!isWithinProject(basePath, projectRoot)) return null;
|
|
10917
10965
|
const relBase = relativePosix(projectRoot, basePath);
|
|
10918
|
-
const
|
|
10919
|
-
|
|
10920
|
-
|
|
10921
|
-
|
|
10922
|
-
|
|
10923
|
-
|
|
10966
|
+
const sourceExt = path26.extname(relBase);
|
|
10967
|
+
const candidates = [];
|
|
10968
|
+
const fallbacks = JS_EXT_FALLBACKS22[sourceExt];
|
|
10969
|
+
if (fallbacks) {
|
|
10970
|
+
const stripped = relBase.slice(0, -sourceExt.length);
|
|
10971
|
+
for (const ext of fallbacks) candidates.push(stripped + ext);
|
|
10972
|
+
candidates.push(path26.join(stripped, "index.ts"));
|
|
10973
|
+
candidates.push(path26.join(stripped, "index.tsx"));
|
|
10974
|
+
candidates.push(path26.join(stripped, "index.jsx"));
|
|
10975
|
+
}
|
|
10976
|
+
candidates.push(relBase + ".ts", relBase + ".tsx", relBase + ".mts");
|
|
10977
|
+
candidates.push(path26.join(relBase, "index.ts"));
|
|
10924
10978
|
for (const candidate of candidates) {
|
|
10925
10979
|
const absCandidate = path26.join(projectRoot, candidate);
|
|
10926
10980
|
if (await fileExists(absCandidate)) {
|
|
@@ -14710,10 +14764,10 @@ function assembleCandidateReport(input) {
|
|
|
14710
14764
|
}
|
|
14711
14765
|
return lines.join("\n");
|
|
14712
14766
|
}
|
|
14713
|
-
var VALID_TYPES, CONVENTIONAL_PATTERN, LOOKBACK_PATTERN, PulseDbSourceSchema, PulseSourcesSchema, PulseConfigSchema, BUG_TRACK_CATEGORIES, KNOWLEDGE_TRACK_CATEGORIES, ALL_SOLUTION_CATEGORIES, ISO_DATE, BugTrackSchema, KnowledgeTrackSchema, BaseFrontmatter, SolutionDocFrontmatterSchema, TRACK_CATEGORIES, 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, readFile62, 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, LOCK_RETRIES, LOCK_BACKOFFS, 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, CompoundLockHeldError, KNOWN_CATEGORIES, ALLOWED_FIELD_KEYS, PII_TOKENS, PII_FIELD_DENYLIST, PII_LINE_RE, ALLOWED_SET, PulseAdapterAlreadyRegisteredError, REGISTRY, MOCK_ADAPTER_NAME, ALLOWED_FIELD_SET, adapter, LOOKBACK_RE, MAX_LINES, INLINE_TEMPLATE, TRUNCATION_MARKER2, execFileAsync, FIX_RE, EMPTY_REPO_RE, execFileAsync2, TRACK_CATEGORIES2, STOPWORDS, KEYWORD_TO_CATEGORY;
|
|
14767
|
+
var VALID_TYPES, CONVENTIONAL_PATTERN, LOOKBACK_PATTERN, PulseDbSourceSchema, PulseSourcesSchema, PulseConfigSchema, BUG_TRACK_CATEGORIES, KNOWLEDGE_TRACK_CATEGORIES, ALL_SOLUTION_CATEGORIES, ISO_DATE, BugTrackSchema, KnowledgeTrackSchema, BaseFrontmatter, SolutionDocFrontmatterSchema, TRACK_CATEGORIES, 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, JS_EXT_FALLBACKS2, FILE_TYPES, EXPORT_TYPES, CONVENTION_DESCRIPTIONS, RULE_CHECKERS, EntropyAnalyzer, readFile62, 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, LOCK_RETRIES, LOCK_BACKOFFS, 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, JS_EXT_FALLBACKS22, 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, CompoundLockHeldError, KNOWN_CATEGORIES, ALLOWED_FIELD_KEYS, PII_TOKENS, PII_FIELD_DENYLIST, PII_LINE_RE, ALLOWED_SET, PulseAdapterAlreadyRegisteredError, REGISTRY, MOCK_ADAPTER_NAME, ALLOWED_FIELD_SET, adapter, LOOKBACK_RE, MAX_LINES, INLINE_TEMPLATE, TRUNCATION_MARKER2, execFileAsync, FIX_RE, EMPTY_REPO_RE, execFileAsync2, TRACK_CATEGORIES2, STOPWORDS, KEYWORD_TO_CATEGORY;
|
|
14714
14768
|
var init_dist3 = __esm({
|
|
14715
14769
|
"../core/dist/index.mjs"() {
|
|
14716
|
-
|
|
14770
|
+
init_chunk_CE225WRK();
|
|
14717
14771
|
init_dist();
|
|
14718
14772
|
init_dist();
|
|
14719
14773
|
init_dist();
|
|
@@ -15043,6 +15097,12 @@ var init_dist3 = __esm({
|
|
|
15043
15097
|
checkStructure: true,
|
|
15044
15098
|
ignorePatterns: []
|
|
15045
15099
|
};
|
|
15100
|
+
JS_EXT_FALLBACKS2 = {
|
|
15101
|
+
".js": [".ts", ".tsx", ".jsx"],
|
|
15102
|
+
".jsx": [".tsx"],
|
|
15103
|
+
".mjs": [".mts"],
|
|
15104
|
+
".cjs": [".cts"]
|
|
15105
|
+
};
|
|
15046
15106
|
FILE_TYPES = /* @__PURE__ */ new Set(["file", "module"]);
|
|
15047
15107
|
EXPORT_TYPES = /* @__PURE__ */ new Set(["function", "class", "method", "interface", "variable"]);
|
|
15048
15108
|
CONVENTION_DESCRIPTIONS = {
|
|
@@ -18397,6 +18457,10 @@ var init_dist3 = __esm({
|
|
|
18397
18457
|
/**
|
|
18398
18458
|
* Load timeline from disk.
|
|
18399
18459
|
* Returns empty SecurityTimelineFile if file does not exist or is invalid.
|
|
18460
|
+
* Lifecycle entries with absolute paths under rootDir are migrated to repo-relative
|
|
18461
|
+
* form on read (older versions persisted whatever the scanner emitted, which leaked
|
|
18462
|
+
* machine paths into committed timeline.json). Migrated files are re-saved so the
|
|
18463
|
+
* fixup is one-shot.
|
|
18400
18464
|
*/
|
|
18401
18465
|
load() {
|
|
18402
18466
|
if (!existsSync332(this.timelinePath)) {
|
|
@@ -18413,6 +18477,15 @@ var init_dist3 = __esm({
|
|
|
18413
18477
|
);
|
|
18414
18478
|
return { version: 1, snapshots: [], findingLifecycles: [] };
|
|
18415
18479
|
}
|
|
18480
|
+
let mutated = false;
|
|
18481
|
+
for (const lc of parsed.data.findingLifecycles) {
|
|
18482
|
+
const next = this.toRepoRelativePath(lc.file);
|
|
18483
|
+
if (next !== lc.file) {
|
|
18484
|
+
lc.file = next;
|
|
18485
|
+
mutated = true;
|
|
18486
|
+
}
|
|
18487
|
+
}
|
|
18488
|
+
if (mutated) this.save(parsed.data);
|
|
18416
18489
|
return parsed.data;
|
|
18417
18490
|
} catch (error) {
|
|
18418
18491
|
console.error(`Error loading security timeline from ${this.timelinePath}:`, error);
|
|
@@ -18437,16 +18510,17 @@ var init_dist3 = __esm({
|
|
|
18437
18510
|
* appends to timeline (or replaces if same commitHash), and saves.
|
|
18438
18511
|
*/
|
|
18439
18512
|
capture(scanResult, commitHash, supplyChain) {
|
|
18440
|
-
const
|
|
18441
|
-
const
|
|
18442
|
-
const
|
|
18513
|
+
const normalized = scanResult.findings.map((f) => this.normalizeFindingPath(f));
|
|
18514
|
+
const byCategory = this.aggregateByCategory(normalized);
|
|
18515
|
+
const bySeverity = this.aggregateBySeverity(normalized);
|
|
18516
|
+
const findingIds = normalized.map((f) => securityFindingId(f));
|
|
18443
18517
|
const supply = supplyChain ?? EMPTY_SUPPLY_CHAIN;
|
|
18444
18518
|
const snapshot = {
|
|
18445
18519
|
capturedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
18446
18520
|
commitHash,
|
|
18447
18521
|
securityScore: 0,
|
|
18448
18522
|
// computed below
|
|
18449
|
-
totalFindings:
|
|
18523
|
+
totalFindings: normalized.length,
|
|
18450
18524
|
bySeverity,
|
|
18451
18525
|
byCategory,
|
|
18452
18526
|
supplyChain: supply,
|
|
@@ -18509,13 +18583,14 @@ var init_dist3 = __esm({
|
|
|
18509
18583
|
*/
|
|
18510
18584
|
updateLifecycles(currentFindings, commitHash) {
|
|
18511
18585
|
const timeline = this.load();
|
|
18512
|
-
const
|
|
18586
|
+
const normalized = currentFindings.map((f) => this.normalizeFindingPath(f));
|
|
18587
|
+
const currentIds = new Set(normalized.map((f) => securityFindingId(f)));
|
|
18513
18588
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
18514
18589
|
const lifecycleMap = /* @__PURE__ */ new Map();
|
|
18515
18590
|
for (const lc of timeline.findingLifecycles) {
|
|
18516
18591
|
lifecycleMap.set(lc.findingId, lc);
|
|
18517
18592
|
}
|
|
18518
|
-
for (const finding of
|
|
18593
|
+
for (const finding of normalized) {
|
|
18519
18594
|
const id = securityFindingId(finding);
|
|
18520
18595
|
this.upsertLifecycle(lifecycleMap, id, finding, now, commitHash);
|
|
18521
18596
|
}
|
|
@@ -18630,6 +18705,23 @@ var init_dist3 = __esm({
|
|
|
18630
18705
|
return Math.round(Math.max(0, Math.min(100, 100 - penalty)));
|
|
18631
18706
|
}
|
|
18632
18707
|
// --- Private helpers ---
|
|
18708
|
+
/**
|
|
18709
|
+
* Convert a path to repo-relative form using forward slashes. Absolute paths under
|
|
18710
|
+
* rootDir are stripped; already-relative paths are normalized to forward slashes;
|
|
18711
|
+
* paths that escape rootDir (relative starts with `..`) are returned unchanged so we
|
|
18712
|
+
* never silently misattribute a finding outside the project.
|
|
18713
|
+
*/
|
|
18714
|
+
toRepoRelativePath(filePath) {
|
|
18715
|
+
if (!filePath) return filePath;
|
|
18716
|
+
if (!isAbsolute4(filePath)) return filePath.replaceAll("\\", "/");
|
|
18717
|
+
const rel = relative32(this.rootDir, filePath).replaceAll("\\", "/");
|
|
18718
|
+
if (rel === "" || rel.startsWith("../") || rel === "..") return filePath;
|
|
18719
|
+
return rel;
|
|
18720
|
+
}
|
|
18721
|
+
normalizeFindingPath(finding) {
|
|
18722
|
+
const next = this.toRepoRelativePath(finding.file);
|
|
18723
|
+
return next === finding.file ? finding : { ...finding, file: next };
|
|
18724
|
+
}
|
|
18633
18725
|
upsertLifecycle(map, id, finding, now, commitHash) {
|
|
18634
18726
|
if (!map.has(id)) {
|
|
18635
18727
|
map.set(id, {
|
|
@@ -18865,6 +18957,12 @@ var init_dist3 = __esm({
|
|
|
18865
18957
|
MD_FILE_PATTERN = /\.md$/;
|
|
18866
18958
|
ALL_DOMAINS = ["compliance", "bug", "security", "architecture", "learnings"];
|
|
18867
18959
|
SECURITY_PATTERNS = /auth|crypto|password|secret|token|session|cookie|hash|encrypt|decrypt|sql|shell|exec|eval/i;
|
|
18960
|
+
JS_EXT_FALLBACKS22 = {
|
|
18961
|
+
".js": [".ts", ".tsx", ".jsx"],
|
|
18962
|
+
".jsx": [".tsx"],
|
|
18963
|
+
".mjs": [".mts"],
|
|
18964
|
+
".cjs": [".cts"]
|
|
18965
|
+
};
|
|
18868
18966
|
SEVERITY_RANK = {
|
|
18869
18967
|
suggestion: 0,
|
|
18870
18968
|
important: 1,
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-W6Y7ZW3Y.js";
|
|
7
7
|
import {
|
|
8
8
|
init_dist
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-K4WRQTEF.js";
|
|
10
10
|
import {
|
|
11
11
|
Ok
|
|
12
12
|
} from "./chunk-RL4VMEXL.js";
|
|
@@ -127,7 +127,7 @@ function buildSummaryResponse(report) {
|
|
|
127
127
|
}
|
|
128
128
|
async function handleDetectEntropy(input) {
|
|
129
129
|
try {
|
|
130
|
-
const { EntropyAnalyzer } = await import("./dist-
|
|
130
|
+
const { EntropyAnalyzer } = await import("./dist-6RT2AVYU.js");
|
|
131
131
|
const typeFilter = input.type ?? "all";
|
|
132
132
|
const analyzer = new EntropyAnalyzer({
|
|
133
133
|
rootDir: sanitizePath(input.path),
|
|
@@ -146,7 +146,7 @@ async function handleDetectEntropy(input) {
|
|
|
146
146
|
return resultToMcpResponse(result);
|
|
147
147
|
}
|
|
148
148
|
if (!result.ok) return resultToMcpResponse(result);
|
|
149
|
-
const { createFixes, applyFixes, generateSuggestions } = await import("./dist-
|
|
149
|
+
const { createFixes, applyFixes, generateSuggestions } = await import("./dist-6RT2AVYU.js");
|
|
150
150
|
const report = result.value;
|
|
151
151
|
const deadCode = report.deadCode;
|
|
152
152
|
const fixTypesConfig = input.fixTypes ? { fixTypes: input.fixTypes } : void 0;
|