@harness-engineering/cli 2.6.1 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/skills/claude-code/align-design-system/SKILL.md +174 -0
- package/dist/agents/skills/claude-code/align-design-system/skill.yaml +57 -0
- package/dist/agents/skills/claude-code/audit-brand-compliance/SKILL.md +189 -0
- package/dist/agents/skills/claude-code/audit-brand-compliance/skill.yaml +50 -0
- package/dist/agents/skills/claude-code/audit-component-anatomy/SKILL.md +181 -0
- package/dist/agents/skills/claude-code/audit-component-anatomy/skill.yaml +51 -0
- package/dist/agents/skills/claude-code/copy-craft/SKILL.md +192 -0
- package/dist/agents/skills/claude-code/copy-craft/skill.yaml +52 -0
- package/dist/agents/skills/claude-code/detect-design-drift/SKILL.md +139 -0
- package/dist/agents/skills/claude-code/detect-design-drift/skill.yaml +50 -0
- package/dist/agents/skills/claude-code/harness-accessibility/SKILL.md +10 -0
- package/dist/agents/skills/claude-code/harness-design-craft/SKILL.md +212 -0
- package/dist/agents/skills/claude-code/harness-design-craft/skill.yaml +57 -0
- package/dist/agents/skills/claude-code/harness-design-pipeline/SKILL.md +266 -0
- package/dist/agents/skills/claude-code/harness-design-pipeline/skill.yaml +70 -0
- package/dist/agents/skills/claude-code/knowledge-craft/SKILL.md +180 -0
- package/dist/agents/skills/claude-code/knowledge-craft/skill.yaml +49 -0
- package/dist/agents/skills/claude-code/naming-craft/SKILL.md +244 -0
- package/dist/agents/skills/claude-code/naming-craft/skill.yaml +51 -0
- package/dist/agents/skills/claude-code/security-craft/SKILL.md +205 -0
- package/dist/agents/skills/claude-code/security-craft/skill.yaml +58 -0
- package/dist/agents/skills/claude-code/spec-craft/SKILL.md +184 -0
- package/dist/agents/skills/claude-code/spec-craft/skill.yaml +55 -0
- package/dist/agents/skills/claude-code/test-craft/SKILL.md +212 -0
- package/dist/agents/skills/claude-code/test-craft/skill.yaml +58 -0
- package/dist/agents/skills/codex/align-design-system/SKILL.md +174 -0
- package/dist/agents/skills/codex/align-design-system/skill.yaml +57 -0
- package/dist/agents/skills/codex/audit-brand-compliance/SKILL.md +189 -0
- package/dist/agents/skills/codex/audit-brand-compliance/skill.yaml +50 -0
- package/dist/agents/skills/codex/audit-component-anatomy/SKILL.md +181 -0
- package/dist/agents/skills/codex/audit-component-anatomy/skill.yaml +51 -0
- package/dist/agents/skills/codex/copy-craft/SKILL.md +192 -0
- package/dist/agents/skills/codex/copy-craft/skill.yaml +52 -0
- package/dist/agents/skills/codex/detect-design-drift/SKILL.md +139 -0
- package/dist/agents/skills/codex/detect-design-drift/skill.yaml +50 -0
- package/dist/agents/skills/codex/harness-accessibility/SKILL.md +10 -0
- package/dist/agents/skills/codex/harness-design-craft/SKILL.md +212 -0
- package/dist/agents/skills/codex/harness-design-craft/skill.yaml +57 -0
- package/dist/agents/skills/codex/harness-design-pipeline/SKILL.md +266 -0
- package/dist/agents/skills/codex/harness-design-pipeline/skill.yaml +70 -0
- package/dist/agents/skills/codex/knowledge-craft/SKILL.md +180 -0
- package/dist/agents/skills/codex/knowledge-craft/skill.yaml +49 -0
- package/dist/agents/skills/codex/naming-craft/SKILL.md +244 -0
- package/dist/agents/skills/codex/naming-craft/skill.yaml +51 -0
- package/dist/agents/skills/codex/security-craft/SKILL.md +205 -0
- package/dist/agents/skills/codex/security-craft/skill.yaml +58 -0
- package/dist/agents/skills/codex/spec-craft/SKILL.md +184 -0
- package/dist/agents/skills/codex/spec-craft/skill.yaml +55 -0
- package/dist/agents/skills/codex/test-craft/SKILL.md +212 -0
- package/dist/agents/skills/codex/test-craft/skill.yaml +58 -0
- package/dist/agents/skills/cursor/align-design-system/SKILL.md +174 -0
- package/dist/agents/skills/cursor/align-design-system/skill.yaml +57 -0
- package/dist/agents/skills/cursor/audit-brand-compliance/SKILL.md +189 -0
- package/dist/agents/skills/cursor/audit-brand-compliance/skill.yaml +50 -0
- package/dist/agents/skills/cursor/audit-component-anatomy/SKILL.md +181 -0
- package/dist/agents/skills/cursor/audit-component-anatomy/skill.yaml +51 -0
- package/dist/agents/skills/cursor/copy-craft/SKILL.md +192 -0
- package/dist/agents/skills/cursor/copy-craft/skill.yaml +52 -0
- package/dist/agents/skills/cursor/detect-design-drift/SKILL.md +139 -0
- package/dist/agents/skills/cursor/detect-design-drift/skill.yaml +50 -0
- package/dist/agents/skills/cursor/harness-accessibility/SKILL.md +10 -0
- package/dist/agents/skills/cursor/harness-design-craft/SKILL.md +212 -0
- package/dist/agents/skills/cursor/harness-design-craft/skill.yaml +57 -0
- package/dist/agents/skills/cursor/harness-design-pipeline/SKILL.md +266 -0
- package/dist/agents/skills/cursor/harness-design-pipeline/skill.yaml +70 -0
- package/dist/agents/skills/cursor/knowledge-craft/SKILL.md +180 -0
- package/dist/agents/skills/cursor/knowledge-craft/skill.yaml +49 -0
- package/dist/agents/skills/cursor/naming-craft/SKILL.md +244 -0
- package/dist/agents/skills/cursor/naming-craft/skill.yaml +51 -0
- package/dist/agents/skills/cursor/security-craft/SKILL.md +205 -0
- package/dist/agents/skills/cursor/security-craft/skill.yaml +58 -0
- package/dist/agents/skills/cursor/spec-craft/SKILL.md +184 -0
- package/dist/agents/skills/cursor/spec-craft/skill.yaml +55 -0
- package/dist/agents/skills/cursor/test-craft/SKILL.md +212 -0
- package/dist/agents/skills/cursor/test-craft/skill.yaml +58 -0
- package/dist/agents/skills/gemini-cli/align-design-system/SKILL.md +174 -0
- package/dist/agents/skills/gemini-cli/align-design-system/skill.yaml +57 -0
- package/dist/agents/skills/gemini-cli/audit-brand-compliance/SKILL.md +189 -0
- package/dist/agents/skills/gemini-cli/audit-brand-compliance/skill.yaml +50 -0
- package/dist/agents/skills/gemini-cli/audit-component-anatomy/SKILL.md +181 -0
- package/dist/agents/skills/gemini-cli/audit-component-anatomy/skill.yaml +51 -0
- package/dist/agents/skills/gemini-cli/copy-craft/SKILL.md +192 -0
- package/dist/agents/skills/gemini-cli/copy-craft/skill.yaml +52 -0
- package/dist/agents/skills/gemini-cli/detect-design-drift/SKILL.md +139 -0
- package/dist/agents/skills/gemini-cli/detect-design-drift/skill.yaml +50 -0
- package/dist/agents/skills/gemini-cli/harness-accessibility/SKILL.md +10 -0
- package/dist/agents/skills/gemini-cli/harness-design-craft/SKILL.md +212 -0
- package/dist/agents/skills/gemini-cli/harness-design-craft/skill.yaml +57 -0
- package/dist/agents/skills/gemini-cli/harness-design-pipeline/SKILL.md +266 -0
- package/dist/agents/skills/gemini-cli/harness-design-pipeline/skill.yaml +70 -0
- package/dist/agents/skills/gemini-cli/knowledge-craft/SKILL.md +180 -0
- package/dist/agents/skills/gemini-cli/knowledge-craft/skill.yaml +49 -0
- package/dist/agents/skills/gemini-cli/naming-craft/SKILL.md +244 -0
- package/dist/agents/skills/gemini-cli/naming-craft/skill.yaml +51 -0
- package/dist/agents/skills/gemini-cli/security-craft/SKILL.md +205 -0
- package/dist/agents/skills/gemini-cli/security-craft/skill.yaml +58 -0
- package/dist/agents/skills/gemini-cli/spec-craft/SKILL.md +184 -0
- package/dist/agents/skills/gemini-cli/spec-craft/skill.yaml +55 -0
- package/dist/agents/skills/gemini-cli/test-craft/SKILL.md +212 -0
- package/dist/agents/skills/gemini-cli/test-craft/skill.yaml +58 -0
- package/dist/{agents-md-2JUQ4FE2.js → agents-md-FKMKH6ZF.js} +4 -4
- package/dist/{analyzer-VY6DJVOU-4AHIJLNS.js → analyzer-H3AHBFSL-KPOPJYRB.js} +8 -8
- package/dist/{architecture-CXAVNB5X.js → architecture-LUR2I67H.js} +6 -6
- package/dist/{assess-project-M626SSPN.js → assess-project-OJWECOP2.js} +2 -1
- package/dist/bin/harness-mcp.js +17 -17
- package/dist/bin/harness.js +27 -27
- package/dist/{check-phase-gate-XMU6LLUQ.js → check-phase-gate-HS5KYLRO.js} +5 -5
- package/dist/{chunk-5XLLIYYL.js → chunk-6UHDQP2N.js} +1 -1
- package/dist/{chunk-I6K43QQS.js → chunk-7AF6C5GE.js} +3 -3
- package/dist/{chunk-372MGNTI.js → chunk-7PLIWP7U.js} +6899 -133
- package/dist/{chunk-VUCGB2KH.js → chunk-B2VAYLYI.js} +1 -1
- package/dist/{chunk-HFOB2MPQ.js → chunk-CZPOPMMI.js} +3 -3
- package/dist/{chunk-43M3RLFQ.js → chunk-FC4JPM6W.js} +2 -2
- package/dist/{chunk-6AX6R3LM.js → chunk-FEKBXX2J.js} +9 -9
- package/dist/{chunk-VTTNIZJL.js → chunk-FXZI6NJ2.js} +131 -6
- package/dist/{chunk-5JNSFYZU.js → chunk-GGSNWH7P.js} +6 -6
- package/dist/{chunk-BCFDGOMA.js → chunk-H2ZJOJ7A.js} +81 -1
- package/dist/{chunk-PFZEADQM.js → chunk-INBTDBV2.js} +79 -2
- package/dist/{chunk-Q6ZR2L6Q.js → chunk-KN3EMDZ5.js} +2 -2
- package/dist/{chunk-JFZOWO7D.js → chunk-LECXPXS3.js} +1 -1
- package/dist/{chunk-CQOMVZDC.js → chunk-LGYXR2KZ.js} +2237 -604
- package/dist/{chunk-QOKMDDBJ.js → chunk-LYIPI2SJ.js} +6 -6
- package/dist/{chunk-L5BCZ5XS.js → chunk-N5NSSLMU.js} +1 -1
- package/dist/{chunk-GWE5LL3R.js → chunk-NIVWM7OW.js} +10 -10
- package/dist/{chunk-24KCOJJG.js → chunk-O2ASYKA6.js} +1 -1
- package/dist/{chunk-K246XQ2L.js → chunk-PTHX545Q.js} +1 -1
- package/dist/{chunk-EPUKTTJZ.js → chunk-RC3OI5NK.js} +5 -1
- package/dist/{chunk-YP7I25SL.js → chunk-RJ2WEES5.js} +1 -1
- package/dist/{chunk-5FDBXUFW.js → chunk-TIH53QXY.js} +1 -1
- package/dist/{chunk-OA6SWTU4.js → chunk-VI4IS55S.js} +11 -8
- package/dist/{chunk-GWF2OILZ.js → chunk-VSIRUZQP.js} +1 -1
- package/dist/{chunk-YYRQCQPZ.js → chunk-WZY5U6NS.js} +178 -109
- package/dist/{chunk-SZEFU6XC.js → chunk-Y4T6ENKQ.js} +9 -9
- package/dist/{chunk-HMW3VKUF.js → chunk-Z3TMCCZB.js} +10 -10
- package/dist/{ci-workflow-3JNDZQYD.js → ci-workflow-MDSTHJOY.js} +4 -4
- package/dist/{dist-OHDQBTSO.js → dist-72ID44UE.js} +3 -3
- package/dist/{dist-QPWXPCPL.js → dist-R3TOOPJ7.js} +1 -1
- package/dist/{docs-5RYMDHN3.js → docs-2RFOJ6XY.js} +6 -6
- package/dist/{engine-GKGT5ULT.js → engine-BSFKOGPN.js} +4 -4
- package/dist/{entropy-DQTAPSSE.js → entropy-3UX6644G.js} +5 -5
- package/dist/{feedback-WH6XPQJS.js → feedback-CVCFYND4.js} +2 -2
- package/dist/{generate-agent-definitions-SZA4QIHN.js → generate-agent-definitions-HZ3XENWO.js} +5 -5
- package/dist/{glob-helper-XE2UGEOV.js → glob-helper-EX4YZKZO.js} +1 -1
- package/dist/{graph-loader-EQBOIHFZ.js → graph-loader-EIFEOUVI.js} +1 -1
- package/dist/index.d.ts +1012 -12
- package/dist/index.js +27 -27
- package/dist/{loader-BNKGM23C.js → loader-6RHWU5FH.js} +4 -4
- package/dist/{mcp-YKKPWUMH.js → mcp-OYR26JDI.js} +17 -17
- package/dist/{performance-54TMJOEU.js → performance-JJMIRXCH.js} +6 -6
- package/dist/{review-pipeline-OTDDVPNY.js → review-pipeline-BHQZIXWZ.js} +4 -4
- package/dist/{runtime-W5THSNAL.js → runtime-DALTAVTN.js} +4 -4
- package/dist/{scan-4PPP6ZXT.js → scan-LYKLM4EQ.js} +1 -1
- package/dist/{security-27HW7CYT.js → security-RMLMYFPB.js} +1 -1
- package/dist/{validate-QRVCD4GP.js → validate-R7DZRDFK.js} +5 -5
- package/dist/{validate-cross-check-BUAGBAPO.js → validate-cross-check-AUUZFNVL.js} +4 -4
- package/package.json +8 -7
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
getDefaultRegistry,
|
|
23
23
|
getOutline,
|
|
24
24
|
getParser,
|
|
25
|
-
|
|
25
|
+
init_chunk_I2JUTTPH,
|
|
26
26
|
init_chunk_MUWJHO2S,
|
|
27
27
|
parseFile,
|
|
28
28
|
parseSize,
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
resetParserCache,
|
|
32
32
|
resolveFileToLayer,
|
|
33
33
|
validateDependencies
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-Y4T6ENKQ.js";
|
|
35
35
|
import {
|
|
36
36
|
AuthAuditEntrySchema,
|
|
37
37
|
AuthTokenPublicSchema,
|
|
@@ -85,7 +85,7 @@ import {
|
|
|
85
85
|
init_dist as init_dist2,
|
|
86
86
|
queryTraceability,
|
|
87
87
|
skipDirGlobs
|
|
88
|
-
} from "./chunk-
|
|
88
|
+
} from "./chunk-H2ZJOJ7A.js";
|
|
89
89
|
import {
|
|
90
90
|
ArchBaselineSchema,
|
|
91
91
|
ArchConfigSchema,
|
|
@@ -3311,25 +3311,8 @@ function validateBranchName(branchName, config) {
|
|
|
3311
3311
|
}
|
|
3312
3312
|
if (config.enforceKebabCase) {
|
|
3313
3313
|
for (const part of slug.split("/")) {
|
|
3314
|
-
const
|
|
3315
|
-
if (
|
|
3316
|
-
const rest = ticketMatch[2];
|
|
3317
|
-
if (rest && !KEBAB_CASE.test(rest)) {
|
|
3318
|
-
return {
|
|
3319
|
-
valid: false,
|
|
3320
|
-
branchName,
|
|
3321
|
-
message: `Branch slug part "${part}" does not follow kebab-case after the ticket ID.`,
|
|
3322
|
-
suggestion: `Ensure the description after "${ticketMatch[1]}" uses kebab-case (lowercase, single hyphens, no leading/trailing hyphen).`
|
|
3323
|
-
};
|
|
3324
|
-
}
|
|
3325
|
-
} else if (!KEBAB_CASE.test(part)) {
|
|
3326
|
-
return {
|
|
3327
|
-
valid: false,
|
|
3328
|
-
branchName,
|
|
3329
|
-
message: `Branch slug part "${part}" must be in kebab-case (lowercase, single hyphens, no leading/trailing hyphen).`,
|
|
3330
|
-
suggestion: `Change "${part}" to match the convention.`
|
|
3331
|
-
};
|
|
3332
|
-
}
|
|
3314
|
+
const kebabFailure = validateKebabSlugPart(part, branchName);
|
|
3315
|
+
if (kebabFailure) return kebabFailure;
|
|
3333
3316
|
}
|
|
3334
3317
|
}
|
|
3335
3318
|
if (typeof config.maxLength === "number" && config.maxLength > 0 && slug.length > config.maxLength) {
|
|
@@ -3342,6 +3325,26 @@ function validateBranchName(branchName, config) {
|
|
|
3342
3325
|
}
|
|
3343
3326
|
return { valid: true, branchName };
|
|
3344
3327
|
}
|
|
3328
|
+
function validateKebabSlugPart(part, branchName) {
|
|
3329
|
+
const ticketMatch = part.match(TICKET_ID);
|
|
3330
|
+
if (ticketMatch) {
|
|
3331
|
+
const rest = ticketMatch[2];
|
|
3332
|
+
if (!rest || KEBAB_CASE.test(rest)) return null;
|
|
3333
|
+
return {
|
|
3334
|
+
valid: false,
|
|
3335
|
+
branchName,
|
|
3336
|
+
message: `Branch slug part "${part}" does not follow kebab-case after the ticket ID.`,
|
|
3337
|
+
suggestion: `Ensure the description after "${ticketMatch[1]}" uses kebab-case (lowercase, single hyphens, no leading/trailing hyphen).`
|
|
3338
|
+
};
|
|
3339
|
+
}
|
|
3340
|
+
if (KEBAB_CASE.test(part)) return null;
|
|
3341
|
+
return {
|
|
3342
|
+
valid: false,
|
|
3343
|
+
branchName,
|
|
3344
|
+
message: `Branch slug part "${part}" must be in kebab-case (lowercase, single hyphens, no leading/trailing hyphen).`,
|
|
3345
|
+
suggestion: `Change "${part}" to match the convention.`
|
|
3346
|
+
};
|
|
3347
|
+
}
|
|
3345
3348
|
function determineImportance(filePath) {
|
|
3346
3349
|
const name = basename2(filePath).toLowerCase();
|
|
3347
3350
|
if (name === "index.ts" || name === "index.js" || name === "main.ts") {
|
|
@@ -4811,7 +4814,7 @@ function arrayLen(arr) {
|
|
|
4811
4814
|
return Array.isArray(arr) ? arr.length : 0;
|
|
4812
4815
|
}
|
|
4813
4816
|
async function gatherEntropyBlock(projectPath) {
|
|
4814
|
-
const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./analyzer-
|
|
4817
|
+
const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./analyzer-H3AHBFSL-KPOPJYRB.js");
|
|
4815
4818
|
const analyzer = new EntropyAnalyzer2({
|
|
4816
4819
|
rootDir: projectPath,
|
|
4817
4820
|
include: ["src/**/*.ts", "src/**/*.tsx", "packages/*/src/**/*.ts"],
|
|
@@ -4832,15 +4835,20 @@ async function gatherDecayBlock(projectPath) {
|
|
|
4832
4835
|
const { TimelineManager: TimelineManager2 } = await import("./timeline-manager-FPYKJRHR-VVX7CSGW.js");
|
|
4833
4836
|
const mgr = new TimelineManager2(projectPath);
|
|
4834
4837
|
const trends = mgr.trends();
|
|
4835
|
-
|
|
4836
|
-
|
|
4837
|
-
|
|
4838
|
+
return {
|
|
4839
|
+
recentBumps: arrayLen(trends.recentSnapshots),
|
|
4840
|
+
topAffected: collectTopAffectedLabels(trends.topAffected)
|
|
4841
|
+
};
|
|
4842
|
+
}
|
|
4843
|
+
function collectTopAffectedLabels(affected) {
|
|
4844
|
+
if (!Array.isArray(affected)) return [];
|
|
4845
|
+
const out = [];
|
|
4838
4846
|
for (const node of affected) {
|
|
4839
4847
|
const label = node.id ?? node.name;
|
|
4840
|
-
if (typeof label === "string" && label.length > 0)
|
|
4841
|
-
if (
|
|
4848
|
+
if (typeof label === "string" && label.length > 0) out.push(label);
|
|
4849
|
+
if (out.length >= MAX_TOP_AFFECTED) break;
|
|
4842
4850
|
}
|
|
4843
|
-
return
|
|
4851
|
+
return out;
|
|
4844
4852
|
}
|
|
4845
4853
|
async function gatherAttentionBlock(projectPath) {
|
|
4846
4854
|
const sessionsDir = path4.join(projectPath, ".harness", "sessions");
|
|
@@ -11070,13 +11078,20 @@ function arraysEqual2(a, b) {
|
|
|
11070
11078
|
}
|
|
11071
11079
|
function metaFromFeatureFields(src) {
|
|
11072
11080
|
const meta = {};
|
|
11073
|
-
|
|
11074
|
-
if (src.plans
|
|
11075
|
-
if (src.blockedBy
|
|
11076
|
-
|
|
11077
|
-
|
|
11081
|
+
assignNonNullish(meta, "spec", src.spec);
|
|
11082
|
+
if (hasItems(src.plans)) meta.plan = src.plans[0];
|
|
11083
|
+
if (hasItems(src.blockedBy)) meta.blocked_by = src.blockedBy;
|
|
11084
|
+
assignNonNullish(meta, "priority", src.priority);
|
|
11085
|
+
assignNonNullish(meta, "milestone", src.milestone);
|
|
11078
11086
|
return meta;
|
|
11079
11087
|
}
|
|
11088
|
+
function assignNonNullish(meta, key, value) {
|
|
11089
|
+
if (value === void 0 || value === null) return;
|
|
11090
|
+
meta[key] = value;
|
|
11091
|
+
}
|
|
11092
|
+
function hasItems(arr) {
|
|
11093
|
+
return Array.isArray(arr) && arr.length > 0;
|
|
11094
|
+
}
|
|
11080
11095
|
function buildCreateMeta(feature) {
|
|
11081
11096
|
return metaFromFeatureFields(feature);
|
|
11082
11097
|
}
|
|
@@ -11289,33 +11304,42 @@ function featureToNewInput(feature, milestone) {
|
|
|
11289
11304
|
return input;
|
|
11290
11305
|
}
|
|
11291
11306
|
function metaToPatch(feature, expected) {
|
|
11292
|
-
const patch = {};
|
|
11293
|
-
patch
|
|
11294
|
-
if (expected.
|
|
11295
|
-
|
|
11296
|
-
|
|
11297
|
-
|
|
11298
|
-
if (expected.milestone !== void 0) patch.milestone = expected.milestone ?? null;
|
|
11307
|
+
const patch = { summary: feature.summary };
|
|
11308
|
+
assignIfPresent(patch, "spec", expected.spec, null);
|
|
11309
|
+
if (expected.plan != null) patch.plans = [expected.plan];
|
|
11310
|
+
assignIfPresent(patch, "blockedBy", expected.blocked_by, []);
|
|
11311
|
+
assignIfPresent(patch, "priority", expected.priority, null);
|
|
11312
|
+
assignIfPresent(patch, "milestone", expected.milestone, null);
|
|
11299
11313
|
return patch;
|
|
11300
11314
|
}
|
|
11315
|
+
function assignIfPresent(patch, key, value, fallback2) {
|
|
11316
|
+
if (value === void 0) return;
|
|
11317
|
+
patch[key] = value ?? fallback2;
|
|
11318
|
+
}
|
|
11301
11319
|
function formatDiff(actual, expected) {
|
|
11302
|
-
const keys =
|
|
11303
|
-
const collect = (m) => {
|
|
11304
|
-
for (const k of Object.keys(m)) {
|
|
11305
|
-
const v = m[k];
|
|
11306
|
-
if (v !== void 0 && v !== null && !(Array.isArray(v) && v.length === 0)) keys.add(k);
|
|
11307
|
-
}
|
|
11308
|
-
};
|
|
11309
|
-
collect(actual);
|
|
11310
|
-
collect(expected);
|
|
11320
|
+
const keys = collectPresentKeys(actual, expected);
|
|
11311
11321
|
const changed = [];
|
|
11312
|
-
for (const key of
|
|
11322
|
+
for (const key of keys) {
|
|
11313
11323
|
const a = actual[key];
|
|
11314
11324
|
const e = expected[key];
|
|
11315
11325
|
if (JSON.stringify(a ?? null) !== JSON.stringify(e ?? null)) changed.push(key);
|
|
11316
11326
|
}
|
|
11317
11327
|
return changed.join(",");
|
|
11318
11328
|
}
|
|
11329
|
+
function hasMeaningfulValue(value) {
|
|
11330
|
+
if (value === void 0 || value === null) return false;
|
|
11331
|
+
if (Array.isArray(value) && value.length === 0) return false;
|
|
11332
|
+
return true;
|
|
11333
|
+
}
|
|
11334
|
+
function collectPresentKeys(...metas) {
|
|
11335
|
+
const keys = /* @__PURE__ */ new Set();
|
|
11336
|
+
for (const m of metas) {
|
|
11337
|
+
for (const [k, v] of Object.entries(m)) {
|
|
11338
|
+
if (hasMeaningfulValue(v)) keys.add(k);
|
|
11339
|
+
}
|
|
11340
|
+
}
|
|
11341
|
+
return [...keys].sort();
|
|
11342
|
+
}
|
|
11319
11343
|
function mapAction(action) {
|
|
11320
11344
|
switch (action) {
|
|
11321
11345
|
case "assigned":
|
|
@@ -12464,23 +12488,56 @@ async function send(events, apiKey) {
|
|
|
12464
12488
|
function toUnixNanoString(ns) {
|
|
12465
12489
|
return ns.toString(10);
|
|
12466
12490
|
}
|
|
12491
|
+
function encodeAttributeValue(value) {
|
|
12492
|
+
if (typeof value === "string") return { stringValue: value };
|
|
12493
|
+
if (typeof value === "boolean") return { boolValue: value };
|
|
12494
|
+
if (typeof value === "number") {
|
|
12495
|
+
return Number.isInteger(value) ? { intValue: String(value) } : { doubleValue: value };
|
|
12496
|
+
}
|
|
12497
|
+
return null;
|
|
12498
|
+
}
|
|
12499
|
+
function resolveOTLPOptions(opts) {
|
|
12500
|
+
const {
|
|
12501
|
+
endpoint,
|
|
12502
|
+
enabled = true,
|
|
12503
|
+
headers = {},
|
|
12504
|
+
flushIntervalMs = DEFAULT_FLUSH_INTERVAL_MS,
|
|
12505
|
+
batchSize = DEFAULT_BATCH_SIZE,
|
|
12506
|
+
fetchImpl = defaultFetch,
|
|
12507
|
+
warn = defaultWarn
|
|
12508
|
+
} = opts;
|
|
12509
|
+
return {
|
|
12510
|
+
endpoint,
|
|
12511
|
+
enabled,
|
|
12512
|
+
headers: { "Content-Type": "application/json", ...headers },
|
|
12513
|
+
flushIntervalMs,
|
|
12514
|
+
batchSize,
|
|
12515
|
+
fetchImpl,
|
|
12516
|
+
warn
|
|
12517
|
+
};
|
|
12518
|
+
}
|
|
12467
12519
|
function attributesToOTLP(attrs) {
|
|
12468
12520
|
const out = [];
|
|
12469
12521
|
for (const [key, value] of Object.entries(attrs)) {
|
|
12470
|
-
|
|
12471
|
-
|
|
12472
|
-
} else if (typeof value === "boolean") {
|
|
12473
|
-
out.push({ key, value: { boolValue: value } });
|
|
12474
|
-
} else if (typeof value === "number") {
|
|
12475
|
-
if (Number.isInteger(value)) {
|
|
12476
|
-
out.push({ key, value: { intValue: String(value) } });
|
|
12477
|
-
} else {
|
|
12478
|
-
out.push({ key, value: { doubleValue: value } });
|
|
12479
|
-
}
|
|
12480
|
-
}
|
|
12522
|
+
const encoded = encodeAttributeValue(value);
|
|
12523
|
+
if (encoded) out.push({ key, value: encoded });
|
|
12481
12524
|
}
|
|
12482
12525
|
return out;
|
|
12483
12526
|
}
|
|
12527
|
+
function spanToOTLP(s) {
|
|
12528
|
+
const span = {
|
|
12529
|
+
traceId: s.traceId,
|
|
12530
|
+
spanId: s.spanId,
|
|
12531
|
+
name: s.name,
|
|
12532
|
+
kind: s.kind,
|
|
12533
|
+
startTimeUnixNano: toUnixNanoString(s.startTimeNs),
|
|
12534
|
+
endTimeUnixNano: toUnixNanoString(s.endTimeNs),
|
|
12535
|
+
attributes: attributesToOTLP(s.attributes)
|
|
12536
|
+
};
|
|
12537
|
+
if (s.parentSpanId !== void 0) span["parentSpanId"] = s.parentSpanId;
|
|
12538
|
+
if (s.statusCode !== void 0) span["status"] = { code: s.statusCode };
|
|
12539
|
+
return span;
|
|
12540
|
+
}
|
|
12484
12541
|
function acquireCompoundLock(category, opts = {}) {
|
|
12485
12542
|
if (!KNOWN_CATEGORIES.has(category)) {
|
|
12486
12543
|
throw new Error(
|
|
@@ -12542,15 +12599,22 @@ function readHolderPid(lockPath) {
|
|
|
12542
12599
|
return -1;
|
|
12543
12600
|
}
|
|
12544
12601
|
}
|
|
12545
|
-
function
|
|
12546
|
-
|
|
12547
|
-
|
|
12548
|
-
|
|
12549
|
-
for (const k of Object.keys(
|
|
12602
|
+
function isObject(value) {
|
|
12603
|
+
return Boolean(value) && typeof value === "object";
|
|
12604
|
+
}
|
|
12605
|
+
function hasAllowedFieldKeys(fields) {
|
|
12606
|
+
for (const k of Object.keys(fields)) {
|
|
12550
12607
|
if (!ALLOWED_SET.has(k)) return false;
|
|
12551
12608
|
if (PII_FIELD_DENYLIST.test(k)) return false;
|
|
12552
12609
|
}
|
|
12553
|
-
|
|
12610
|
+
return true;
|
|
12611
|
+
}
|
|
12612
|
+
function isSanitizedResult(value) {
|
|
12613
|
+
if (!isObject(value)) return false;
|
|
12614
|
+
const { fields, distributions } = value;
|
|
12615
|
+
if (!isObject(fields)) return false;
|
|
12616
|
+
if (!hasAllowedFieldKeys(fields)) return false;
|
|
12617
|
+
if (!isObject(distributions)) return false;
|
|
12554
12618
|
return true;
|
|
12555
12619
|
}
|
|
12556
12620
|
function assertSanitized(value) {
|
|
@@ -13137,11 +13201,11 @@ function deriveSkillUsage(projectRoot, skillName, windowDays = 30) {
|
|
|
13137
13201
|
if (lastUsed) stats.lastUsed = lastUsed;
|
|
13138
13202
|
return stats;
|
|
13139
13203
|
}
|
|
13140
|
-
var WHATWG_BAD_PORTS, BAD_PORT_SET, 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, KEBAB_CASE, TICKET_ID, 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, 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, SOURCE_EXTENSIONS, FUNCTION_DECL_RE, CONST_DECL_RE, CriticalPathResolver, NoOpTelemetryAdapter, NoOpExecutor, ConsoleSink, feedbackConfig, ChecklistBuilder, AgentActionEmitter, globalEmitter, FileSink, NoOpSink, ConfidenceTierSchema, RegressionResultSchema, DirectionSchema, CategoryForecastSchema, SpecImpactSignalsSchema, SpecImpactEstimateSchema, ContributingFeatureSchema, AdjustedForecastSchema, PredictionWarningSchema, StabilityForecastSchema, PredictionResultSchema, PredictionOptionsSchema, VALID_STATUSES, EM_DASH, VALID_PRIORITIES, ALL_CATEGORIES, 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, OSV_ENDPOINT, DEFAULT_CACHE_DIR, DEFAULT_TTL_HOURS, 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_FALLBACKS, 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, PRIORITY_RANK2, POSITION_WEIGHT, DEPENDENTS_WEIGHT, AFFINITY_WEIGHT, ConflictError, DEFAULTS, GitHubHttp, ETagStore, START_MARKER, END_MARKER, SERIALIZER_FIELDS, GitHubIssuesTrackerAdapter, migrate_exports, HASH_RE, 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, DEFAULT_CAPACITY, CacheMetricsRecorder, RETRY_BACKOFFS_MS, OTLPExporter, SpanKind, 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, ProposalNotFoundError, ProposalConflictError;
|
|
13204
|
+
var WHATWG_BAD_PORTS, BAD_PORT_SET, 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, KEBAB_CASE, TICKET_ID, 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, 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, MAX_TOP_AFFECTED, BaselineManager, BenchmarkRunner, RegressionDetector, SOURCE_EXTENSIONS, FUNCTION_DECL_RE, CONST_DECL_RE, CriticalPathResolver, NoOpTelemetryAdapter, NoOpExecutor, ConsoleSink, feedbackConfig, ChecklistBuilder, AgentActionEmitter, globalEmitter, FileSink, NoOpSink, ConfidenceTierSchema, RegressionResultSchema, DirectionSchema, CategoryForecastSchema, SpecImpactSignalsSchema, SpecImpactEstimateSchema, ContributingFeatureSchema, AdjustedForecastSchema, PredictionWarningSchema, StabilityForecastSchema, PredictionResultSchema, PredictionOptionsSchema, VALID_STATUSES, EM_DASH, VALID_PRIORITIES, ALL_CATEGORIES, 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, OSV_ENDPOINT, DEFAULT_CACHE_DIR, DEFAULT_TTL_HOURS, 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_FALLBACKS, 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, PRIORITY_RANK2, POSITION_WEIGHT, DEPENDENTS_WEIGHT, AFFINITY_WEIGHT, ConflictError, DEFAULTS, GitHubHttp, ETagStore, START_MARKER, END_MARKER, SERIALIZER_FIELDS, GitHubIssuesTrackerAdapter, migrate_exports, HASH_RE, 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, DEFAULT_CAPACITY, CacheMetricsRecorder, RETRY_BACKOFFS_MS, DEFAULT_FLUSH_INTERVAL_MS, DEFAULT_BATCH_SIZE, defaultFetch, defaultWarn, OTLPExporter, SERVICE_NAME_ATTR, SpanKind, 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, ProposalNotFoundError, ProposalConflictError;
|
|
13141
13205
|
var init_dist3 = __esm({
|
|
13142
13206
|
"../core/dist/index.mjs"() {
|
|
13143
13207
|
init_chunk_FYTJQ2ZY();
|
|
13144
|
-
|
|
13208
|
+
init_chunk_I2JUTTPH();
|
|
13145
13209
|
init_chunk_MUWJHO2S();
|
|
13146
13210
|
init_chunk_XKLVJIPL();
|
|
13147
13211
|
init_chunk_IIEDD47I();
|
|
@@ -13688,6 +13752,7 @@ var init_dist3 = __esm({
|
|
|
13688
13752
|
exclude: z4.array(z4.string()).optional(),
|
|
13689
13753
|
docPaths: z4.array(z4.string()).optional()
|
|
13690
13754
|
});
|
|
13755
|
+
MAX_TOP_AFFECTED = 5;
|
|
13691
13756
|
BaselineManager = class {
|
|
13692
13757
|
baselinesPath;
|
|
13693
13758
|
constructor(projectRoot) {
|
|
@@ -16068,11 +16133,20 @@ var init_dist3 = __esm({
|
|
|
16068
16133
|
}
|
|
16069
16134
|
return null;
|
|
16070
16135
|
}
|
|
16071
|
-
/**
|
|
16072
|
-
|
|
16073
|
-
|
|
16136
|
+
/**
|
|
16137
|
+
* Scan a single line against a resolved rule; push any findings into the array.
|
|
16138
|
+
*
|
|
16139
|
+
* Suppression check is two-pass: same line first (trailing-comment style), then the previous
|
|
16140
|
+
* line (the dominant convention: `// harness-ignore` on the line above the flagged code).
|
|
16141
|
+
* Without the prior-line check, every multi-line statement annotated using the over-the-top
|
|
16142
|
+
* convention would slip through and re-trigger the finding.
|
|
16143
|
+
*/
|
|
16144
|
+
scanLineForRule(rule, resolved, line, lineNumber, filePath, findings, priorLine) {
|
|
16145
|
+
const sameLineMatch = parseHarnessIgnore(line, rule.id);
|
|
16146
|
+
const priorLineMatch = !sameLineMatch && priorLine !== void 0 ? parseHarnessIgnore(priorLine, rule.id) : null;
|
|
16147
|
+
const suppressionMatch = sameLineMatch ?? priorLineMatch;
|
|
16074
16148
|
if (suppressionMatch) {
|
|
16075
|
-
if (!suppressionMatch.justification) {
|
|
16149
|
+
if (!suppressionMatch.justification && sameLineMatch !== null) {
|
|
16076
16150
|
findings.push(this.buildSuppressionFinding(rule, filePath, lineNumber, line));
|
|
16077
16151
|
}
|
|
16078
16152
|
return;
|
|
@@ -16096,7 +16170,15 @@ var init_dist3 = __esm({
|
|
|
16096
16170
|
);
|
|
16097
16171
|
if (resolved === "off") continue;
|
|
16098
16172
|
for (let i = 0; i < lines.length; i++) {
|
|
16099
|
-
this.scanLineForRule(
|
|
16173
|
+
this.scanLineForRule(
|
|
16174
|
+
rule,
|
|
16175
|
+
resolved,
|
|
16176
|
+
lines[i] ?? "",
|
|
16177
|
+
startLine + i,
|
|
16178
|
+
filePath,
|
|
16179
|
+
findings,
|
|
16180
|
+
i > 0 ? lines[i - 1] : void 0
|
|
16181
|
+
);
|
|
16100
16182
|
}
|
|
16101
16183
|
}
|
|
16102
16184
|
return findings;
|
|
@@ -18500,6 +18582,10 @@ console.log('Blueprint player initialized.');
|
|
|
18500
18582
|
}
|
|
18501
18583
|
};
|
|
18502
18584
|
RETRY_BACKOFFS_MS = [1e3, 2e3, 4e3];
|
|
18585
|
+
DEFAULT_FLUSH_INTERVAL_MS = 2e3;
|
|
18586
|
+
DEFAULT_BATCH_SIZE = 64;
|
|
18587
|
+
defaultFetch = (...args) => globalThis.fetch(...args);
|
|
18588
|
+
defaultWarn = (...args) => console.warn(...args);
|
|
18503
18589
|
OTLPExporter = class {
|
|
18504
18590
|
endpoint;
|
|
18505
18591
|
enabled;
|
|
@@ -18512,13 +18598,14 @@ console.log('Blueprint player initialized.');
|
|
|
18512
18598
|
timer = null;
|
|
18513
18599
|
inFlightFlushes = /* @__PURE__ */ new Set();
|
|
18514
18600
|
constructor(opts) {
|
|
18515
|
-
|
|
18516
|
-
this.
|
|
18517
|
-
this.
|
|
18518
|
-
this.
|
|
18519
|
-
this.
|
|
18520
|
-
this.
|
|
18521
|
-
this.
|
|
18601
|
+
const resolved = resolveOTLPOptions(opts);
|
|
18602
|
+
this.endpoint = resolved.endpoint;
|
|
18603
|
+
this.enabled = resolved.enabled;
|
|
18604
|
+
this.headers = resolved.headers;
|
|
18605
|
+
this.flushIntervalMs = resolved.flushIntervalMs;
|
|
18606
|
+
this.batchSize = resolved.batchSize;
|
|
18607
|
+
this.fetchImpl = resolved.fetchImpl;
|
|
18608
|
+
this.warn = resolved.warn;
|
|
18522
18609
|
}
|
|
18523
18610
|
/**
|
|
18524
18611
|
* O(1) buffer push. When `enabled === false` this is a no-op. If the
|
|
@@ -18601,36 +18688,18 @@ console.log('Blueprint player initialized.');
|
|
|
18601
18688
|
* tests; not part of the supported API surface.
|
|
18602
18689
|
*/
|
|
18603
18690
|
spansToOTLPJSON(spans) {
|
|
18604
|
-
|
|
18605
|
-
|
|
18606
|
-
|
|
18607
|
-
|
|
18608
|
-
|
|
18609
|
-
|
|
18610
|
-
|
|
18611
|
-
{
|
|
18612
|
-
scope: { name: "harness" },
|
|
18613
|
-
spans: spans.map((s) => {
|
|
18614
|
-
const span = {
|
|
18615
|
-
traceId: s.traceId,
|
|
18616
|
-
spanId: s.spanId,
|
|
18617
|
-
name: s.name,
|
|
18618
|
-
kind: s.kind,
|
|
18619
|
-
startTimeUnixNano: toUnixNanoString(s.startTimeNs),
|
|
18620
|
-
endTimeUnixNano: toUnixNanoString(s.endTimeNs),
|
|
18621
|
-
attributes: attributesToOTLP(s.attributes)
|
|
18622
|
-
};
|
|
18623
|
-
if (s.parentSpanId !== void 0) span["parentSpanId"] = s.parentSpanId;
|
|
18624
|
-
if (s.statusCode !== void 0) span["status"] = { code: s.statusCode };
|
|
18625
|
-
return span;
|
|
18626
|
-
})
|
|
18627
|
-
}
|
|
18628
|
-
]
|
|
18629
|
-
}
|
|
18630
|
-
]
|
|
18691
|
+
const scopeSpan = {
|
|
18692
|
+
scope: { name: "harness" },
|
|
18693
|
+
spans: spans.map(spanToOTLP)
|
|
18694
|
+
};
|
|
18695
|
+
const resourceSpan = {
|
|
18696
|
+
resource: { attributes: SERVICE_NAME_ATTR },
|
|
18697
|
+
scopeSpans: [scopeSpan]
|
|
18631
18698
|
};
|
|
18699
|
+
return { resourceSpans: [resourceSpan] };
|
|
18632
18700
|
}
|
|
18633
18701
|
};
|
|
18702
|
+
SERVICE_NAME_ATTR = [{ key: "service.name", value: { stringValue: "harness" } }];
|
|
18634
18703
|
SpanKind = /* @__PURE__ */ ((SpanKind2) => {
|
|
18635
18704
|
SpanKind2[SpanKind2["INTERNAL"] = 1] = "INTERNAL";
|
|
18636
18705
|
SpanKind2[SpanKind2["SERVER"] = 2] = "SERVER";
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
DEFAULT_SKIP_DIRS,
|
|
8
8
|
init_dist as init_dist2,
|
|
9
9
|
skipDirGlobs
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-H2ZJOJ7A.js";
|
|
11
11
|
import {
|
|
12
12
|
__esm
|
|
13
13
|
} from "./chunk-KFQGP6VL.js";
|
|
@@ -1605,7 +1605,7 @@ var init_chunk_MUWJHO2S = __esm({
|
|
|
1605
1605
|
}
|
|
1606
1606
|
});
|
|
1607
1607
|
|
|
1608
|
-
// ../core/dist/chunk-
|
|
1608
|
+
// ../core/dist/chunk-I2JUTTPH.mjs
|
|
1609
1609
|
import { resolve as resolve2 } from "path";
|
|
1610
1610
|
import { minimatch as minimatch2 } from "minimatch";
|
|
1611
1611
|
import { join, resolve as resolve3 } from "path";
|
|
@@ -2968,15 +2968,15 @@ function generatePatternSuggestions(report) {
|
|
|
2968
2968
|
return suggestions;
|
|
2969
2969
|
}
|
|
2970
2970
|
function generateSuggestions(deadCode, drift, patterns) {
|
|
2971
|
-
|
|
2971
|
+
let suggestions = [];
|
|
2972
2972
|
if (deadCode) {
|
|
2973
|
-
suggestions.
|
|
2973
|
+
suggestions = suggestions.concat(generateDeadCodeSuggestions(deadCode));
|
|
2974
2974
|
}
|
|
2975
2975
|
if (drift) {
|
|
2976
|
-
suggestions.
|
|
2976
|
+
suggestions = suggestions.concat(generateDriftSuggestions(drift));
|
|
2977
2977
|
}
|
|
2978
2978
|
if (patterns) {
|
|
2979
|
-
suggestions.
|
|
2979
|
+
suggestions = suggestions.concat(generatePatternSuggestions(patterns));
|
|
2980
2980
|
}
|
|
2981
2981
|
const priorityOrder = { high: 0, medium: 1, low: 2 };
|
|
2982
2982
|
suggestions.sort((a, b) => priorityOrder[a.priority] - priorityOrder[b.priority]);
|
|
@@ -3002,8 +3002,8 @@ function generateSuggestions(deadCode, drift, patterns) {
|
|
|
3002
3002
|
};
|
|
3003
3003
|
}
|
|
3004
3004
|
var TS_HINTS, TS_CONVENTIONS, PYTHON_HINTS, PYTHON_CONVENTIONS, DEFAULT_INCLUDE_PATTERNS, CODE_BLOCK_LANGUAGES, DEFAULT_DRIFT_CONFIG, JS_EXT_FALLBACKS2, FILE_TYPES, EXPORT_TYPES, CONVENTION_DESCRIPTIONS, RULE_CHECKERS, EntropyAnalyzer;
|
|
3005
|
-
var
|
|
3006
|
-
"../core/dist/chunk-
|
|
3005
|
+
var init_chunk_I2JUTTPH = __esm({
|
|
3006
|
+
"../core/dist/chunk-I2JUTTPH.mjs"() {
|
|
3007
3007
|
"use strict";
|
|
3008
3008
|
init_chunk_MUWJHO2S();
|
|
3009
3009
|
init_dist2();
|
|
@@ -3333,5 +3333,5 @@ export {
|
|
|
3333
3333
|
detectSizeBudgetViolations,
|
|
3334
3334
|
generateSuggestions,
|
|
3335
3335
|
EntropyAnalyzer,
|
|
3336
|
-
|
|
3336
|
+
init_chunk_I2JUTTPH
|
|
3337
3337
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resultToMcpResponse
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RC3OI5NK.js";
|
|
4
4
|
import {
|
|
5
5
|
sanitizePath
|
|
6
6
|
} from "./chunk-W6Y7ZW3Y.js";
|
|
@@ -33,7 +33,7 @@ var createSelfReviewDefinition = {
|
|
|
33
33
|
};
|
|
34
34
|
async function handleCreateSelfReview(input) {
|
|
35
35
|
try {
|
|
36
|
-
const { parseDiff, createSelfReview } = await import("./dist-
|
|
36
|
+
const { parseDiff, createSelfReview } = await import("./dist-72ID44UE.js");
|
|
37
37
|
const parseResult = parseDiff(input.diff);
|
|
38
38
|
if (!parseResult.ok) {
|
|
39
39
|
return resultToMcpResponse(parseResult);
|
|
@@ -53,11 +53,11 @@ async function handleCreateSelfReview(input) {
|
|
|
53
53
|
...input.maxFileCount !== void 0 ? { maxChangedFiles: input.maxFileCount } : {}
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
|
-
const { loadGraphStore } = await import("./graph-loader-
|
|
56
|
+
const { loadGraphStore } = await import("./graph-loader-EIFEOUVI.js");
|
|
57
57
|
const store = await loadGraphStore(projectPath);
|
|
58
58
|
let graphData;
|
|
59
59
|
if (store) {
|
|
60
|
-
const { GraphFeedbackAdapter } = await import("./dist-
|
|
60
|
+
const { GraphFeedbackAdapter } = await import("./dist-R3TOOPJ7.js");
|
|
61
61
|
const adapter = new GraphFeedbackAdapter(store);
|
|
62
62
|
const changedFiles = parseResult.value.files.map((f) => f.path);
|
|
63
63
|
const impact = adapter.computeImpactData(changedFiles);
|
|
@@ -119,7 +119,7 @@ var analyzeDiffDefinition = {
|
|
|
119
119
|
};
|
|
120
120
|
async function handleAnalyzeDiff(input) {
|
|
121
121
|
try {
|
|
122
|
-
const { parseDiff, analyzeDiff } = await import("./dist-
|
|
122
|
+
const { parseDiff, analyzeDiff } = await import("./dist-72ID44UE.js");
|
|
123
123
|
const parseResult = parseDiff(input.diff);
|
|
124
124
|
if (!parseResult.ok) {
|
|
125
125
|
return resultToMcpResponse(parseResult);
|
|
@@ -139,10 +139,10 @@ async function handleAnalyzeDiff(input) {
|
|
|
139
139
|
let graphImpactData;
|
|
140
140
|
if (input.path) {
|
|
141
141
|
try {
|
|
142
|
-
const { loadGraphStore } = await import("./graph-loader-
|
|
142
|
+
const { loadGraphStore } = await import("./graph-loader-EIFEOUVI.js");
|
|
143
143
|
const store = await loadGraphStore(sanitizePath(input.path));
|
|
144
144
|
if (store) {
|
|
145
|
-
const { GraphFeedbackAdapter } = await import("./dist-
|
|
145
|
+
const { GraphFeedbackAdapter } = await import("./dist-R3TOOPJ7.js");
|
|
146
146
|
const adapter = new GraphFeedbackAdapter(store);
|
|
147
147
|
const changedFiles = parseResult.value.files.map((f) => f.path);
|
|
148
148
|
const impact = adapter.computeImpactData(changedFiles);
|
|
@@ -195,7 +195,7 @@ var requestPeerReviewDefinition = {
|
|
|
195
195
|
};
|
|
196
196
|
async function handleRequestPeerReview(input) {
|
|
197
197
|
try {
|
|
198
|
-
const { parseDiff, requestPeerReview } = await import("./dist-
|
|
198
|
+
const { parseDiff, requestPeerReview } = await import("./dist-72ID44UE.js");
|
|
199
199
|
const parseResult = parseDiff(input.diff);
|
|
200
200
|
if (!parseResult.ok) {
|
|
201
201
|
return resultToMcpResponse(parseResult);
|
|
@@ -206,10 +206,10 @@ async function handleRequestPeerReview(input) {
|
|
|
206
206
|
...input.context ? { metadata: { context: input.context } } : {}
|
|
207
207
|
};
|
|
208
208
|
try {
|
|
209
|
-
const { loadGraphStore } = await import("./graph-loader-
|
|
209
|
+
const { loadGraphStore } = await import("./graph-loader-EIFEOUVI.js");
|
|
210
210
|
const store = await loadGraphStore(sanitizePath(input.path));
|
|
211
211
|
if (store) {
|
|
212
|
-
const { GraphFeedbackAdapter } = await import("./dist-
|
|
212
|
+
const { GraphFeedbackAdapter } = await import("./dist-R3TOOPJ7.js");
|
|
213
213
|
const adapter = new GraphFeedbackAdapter(store);
|
|
214
214
|
const changedFiles = parseResult.value.files.map((f) => f.path);
|
|
215
215
|
const impactData = adapter.computeImpactData(changedFiles);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
generateCIWorkflow
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-RJ2WEES5.js";
|
|
4
|
+
import "./chunk-WZY5U6NS.js";
|
|
5
|
+
import "./chunk-Y4T6ENKQ.js";
|
|
6
6
|
import "./chunk-OH3NXXUY.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-H2ZJOJ7A.js";
|
|
8
8
|
import "./chunk-QCLOIUMX.js";
|
|
9
9
|
import "./chunk-XARGEOJV.js";
|
|
10
10
|
import "./chunk-KFQGP6VL.js";
|
|
@@ -417,7 +417,7 @@ import {
|
|
|
417
417
|
writeSessionSummary,
|
|
418
418
|
writeTaint,
|
|
419
419
|
xssRules
|
|
420
|
-
} from "./chunk-
|
|
420
|
+
} from "./chunk-WZY5U6NS.js";
|
|
421
421
|
import {
|
|
422
422
|
EXTENSION_MAP,
|
|
423
423
|
EntropyAnalyzer,
|
|
@@ -443,7 +443,7 @@ import {
|
|
|
443
443
|
resetParserCache,
|
|
444
444
|
resolveFileToLayer,
|
|
445
445
|
validateDependencies
|
|
446
|
-
} from "./chunk-
|
|
446
|
+
} from "./chunk-Y4T6ENKQ.js";
|
|
447
447
|
import {
|
|
448
448
|
AuthAuditEntrySchema,
|
|
449
449
|
AuthTokenPublicSchema,
|
|
@@ -489,7 +489,7 @@ import {
|
|
|
489
489
|
isErr,
|
|
490
490
|
isOk
|
|
491
491
|
} from "./chunk-OH3NXXUY.js";
|
|
492
|
-
import "./chunk-
|
|
492
|
+
import "./chunk-H2ZJOJ7A.js";
|
|
493
493
|
import {
|
|
494
494
|
ArchBaselineSchema,
|
|
495
495
|
ArchConfigSchema,
|