@harness-engineering/cli 1.25.6 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/skills/claude-code/harness-knowledge-pipeline/SKILL.md +277 -0
- package/dist/agents/skills/claude-code/harness-knowledge-pipeline/skill.yaml +60 -0
- package/dist/agents/skills/codex/harness-knowledge-pipeline/SKILL.md +277 -0
- package/dist/agents/skills/codex/harness-knowledge-pipeline/skill.yaml +60 -0
- package/dist/agents/skills/cursor/harness-knowledge-pipeline/SKILL.md +277 -0
- package/dist/agents/skills/cursor/harness-knowledge-pipeline/skill.yaml +60 -0
- package/dist/agents/skills/gemini-cli/harness-knowledge-pipeline/SKILL.md +277 -0
- package/dist/agents/skills/gemini-cli/harness-knowledge-pipeline/skill.yaml +60 -0
- package/dist/agents/skills/package.json +2 -2
- package/dist/{agents-md-2PYJM2MK.js → agents-md-OPOZA5L7.js} +3 -3
- package/dist/{architecture-VCLB7A23.js → architecture-PMVMO6SF.js} +4 -4
- package/dist/{assess-project-64C6LIKN.js → assess-project-ZW7EKNIT.js} +1 -1
- package/dist/bin/harness-mcp.js +15 -15
- package/dist/bin/harness.js +25 -25
- package/dist/{check-phase-gate-RT6PGEHY.js → check-phase-gate-NTLAU3LO.js} +4 -4
- package/dist/{chunk-JUXFYB2K.js → chunk-4KSKV5MK.js} +1 -1
- package/dist/{chunk-7BAGSY5Q.js → chunk-6SCA4NEZ.js} +1 -1
- package/dist/{chunk-42ZZLMYD.js → chunk-77EZGPSR.js} +1 -1
- package/dist/{chunk-CBZECDCW.js → chunk-7JNZXJKY.js} +5 -5
- package/dist/{chunk-43VBX44J.js → chunk-CAS3TS4Y.js} +110 -92
- package/dist/{chunk-FL6A72LV.js → chunk-EXTWTJRF.js} +1 -1
- package/dist/{chunk-XLO4AXXM.js → chunk-FI3D6D7U.js} +9 -9
- package/dist/{chunk-ZAKUCM7O.js → chunk-G6SYTGOH.js} +2 -2
- package/dist/{chunk-RKZW3FDF.js → chunk-HAOBHL3W.js} +1 -1
- package/dist/{chunk-4YEBV2FT.js → chunk-IFHAUFJX.js} +2 -2
- package/dist/{chunk-XMEEYMGE.js → chunk-J3O64D2A.js} +1 -1
- package/dist/{chunk-WEOGCL7B.js → chunk-JBJ4AVE4.js} +3 -3
- package/dist/{chunk-VELT5VAG.js → chunk-JWSVLC4I.js} +1 -1
- package/dist/{chunk-BUJOMC3O.js → chunk-JZ6GORAK.js} +38 -2
- package/dist/{chunk-JQCS75DY.js → chunk-KFE2X7LG.js} +4 -4
- package/dist/{chunk-U2OMWI7Z.js → chunk-KSFUJT5B.js} +1 -1
- package/dist/{chunk-Y5JA4J2M.js → chunk-KXIAHHHP.js} +2 -2
- package/dist/{chunk-R2BI5UPK.js → chunk-NIOB6FTG.js} +1 -1
- package/dist/{chunk-X2JJ3CPG.js → chunk-NVGQO4VM.js} +8 -8
- package/dist/{chunk-EY6F2QXW.js → chunk-QYSWNPXZ.js} +1 -1
- package/dist/{chunk-SZZ5UQL7.js → chunk-RNAGPTKF.js} +6 -6
- package/dist/{chunk-KJC4SE7C.js → chunk-UBRD5FH4.js} +9 -9
- package/dist/{chunk-RDQGCHKD.js → chunk-VV2PJT4K.js} +3358 -227
- package/dist/{chunk-SMY35HJM.js → chunk-Z2JORLRT.js} +1 -1
- package/dist/{chunk-R7P2FMJT.js → chunk-ZBQ3ZY75.js} +436 -284
- package/dist/{ci-workflow-SZL3KVUK.js → ci-workflow-H52EMCL6.js} +3 -3
- package/dist/{dist-GRW3X2ZQ.js → dist-PGQ32ZI7.js} +41 -1
- package/dist/{dist-T3DGV5UN.js → dist-TG63OKA5.js} +2 -2
- package/dist/{docs-WDLJORLK.js → docs-GP4VUSIB.js} +4 -4
- package/dist/{engine-2YWYRCKK.js → engine-KQG5RVXX.js} +3 -3
- package/dist/{entropy-PJGTOORX.js → entropy-RXESIYKC.js} +3 -3
- package/dist/{feedback-M5KCJKL2.js → feedback-HS7ZYXOU.js} +1 -1
- package/dist/{generate-agent-definitions-MFDW6LZT.js → generate-agent-definitions-I4B7CVOB.js} +4 -4
- package/dist/{graph-loader-QMKXT454.js → graph-loader-TIVI6NQ7.js} +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +25 -25
- package/dist/{loader-6O52FYHE.js → loader-CWAH6B4H.js} +3 -3
- package/dist/{mcp-GGNFWKVC.js → mcp-KHK5KYER.js} +15 -15
- package/dist/{performance-337U5URQ.js → performance-WDW5WS3J.js} +4 -4
- package/dist/{review-pipeline-DB5RD4SN.js → review-pipeline-QOZGWCTY.js} +3 -3
- package/dist/{runtime-B74EN2WD.js → runtime-SFEFRPLX.js} +3 -3
- package/dist/{scan-DXQUHGTT.js → scan-IJ7EYTF7.js} +1 -1
- package/dist/{security-3AYN6FVU.js → security-2K7UUK6T.js} +1 -1
- package/dist/{validate-35CD7VWN.js → validate-HXM6DXRZ.js} +4 -4
- package/dist/{validate-cross-check-LJKXBQYH.js → validate-cross-check-ULQLEOME.js} +3 -3
- package/package.json +9 -9
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assessProjectDefinition,
|
|
3
3
|
handleAssessProject
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-RNAGPTKF.js";
|
|
5
5
|
import {
|
|
6
6
|
getBusinessKnowledgeResource
|
|
7
7
|
} from "./chunk-RC5ZY3EV.js";
|
|
@@ -12,37 +12,37 @@ import {
|
|
|
12
12
|
handleCreateSelfReview,
|
|
13
13
|
handleRequestPeerReview,
|
|
14
14
|
requestPeerReviewDefinition
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-UBRD5FH4.js";
|
|
16
16
|
import {
|
|
17
17
|
getSecurityTrendsDefinition,
|
|
18
18
|
handleGetSecurityTrends,
|
|
19
19
|
handleRunSecurityScan,
|
|
20
20
|
runSecurityScanDefinition
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-IFHAUFJX.js";
|
|
22
22
|
import {
|
|
23
23
|
handleRunCodeReview,
|
|
24
24
|
runCodeReviewDefinition,
|
|
25
25
|
sortFindingsBySeverity
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-G6SYTGOH.js";
|
|
27
27
|
import {
|
|
28
28
|
handleValidateProject,
|
|
29
29
|
validateToolDefinition
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-JBJ4AVE4.js";
|
|
31
31
|
import {
|
|
32
32
|
checkDependenciesDefinition,
|
|
33
33
|
handleCheckDependencies
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-KFE2X7LG.js";
|
|
35
35
|
import {
|
|
36
36
|
resolveProjectConfig
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-J3O64D2A.js";
|
|
38
38
|
import {
|
|
39
39
|
checkDocsDefinition,
|
|
40
40
|
handleCheckDocs
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-FI3D6D7U.js";
|
|
42
42
|
import {
|
|
43
43
|
detectEntropyDefinition,
|
|
44
44
|
handleDetectEntropy
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-7JNZXJKY.js";
|
|
46
46
|
import {
|
|
47
47
|
checkPerformanceDefinition,
|
|
48
48
|
getCriticalPathsDefinition,
|
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
handleGetPerfBaselines,
|
|
53
53
|
handleUpdatePerfBaselines,
|
|
54
54
|
updatePerfBaselinesDefinition
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-NVGQO4VM.js";
|
|
56
56
|
import {
|
|
57
57
|
resultToMcpResponse
|
|
58
58
|
} from "./chunk-EPUKTTJZ.js";
|
|
@@ -61,7 +61,7 @@ import {
|
|
|
61
61
|
} from "./chunk-W6Y7ZW3Y.js";
|
|
62
62
|
import {
|
|
63
63
|
resolveConfig
|
|
64
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-4KSKV5MK.js";
|
|
65
65
|
import {
|
|
66
66
|
GENERATED_HEADER_CLAUDE,
|
|
67
67
|
GENERATED_HEADER_CODEX,
|
|
@@ -83,7 +83,7 @@ import {
|
|
|
83
83
|
} from "./chunk-6B6UN6SG.js";
|
|
84
84
|
import {
|
|
85
85
|
loadGraphStore
|
|
86
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-Z2JORLRT.js";
|
|
87
87
|
import {
|
|
88
88
|
CompactionPipeline,
|
|
89
89
|
DEFAULT_TOKEN_BUDGET,
|
|
@@ -101,7 +101,7 @@ import {
|
|
|
101
101
|
scanForInjection,
|
|
102
102
|
serializeEnvelope,
|
|
103
103
|
writeTaint
|
|
104
|
-
} from "./chunk-
|
|
104
|
+
} from "./chunk-77EZGPSR.js";
|
|
105
105
|
import {
|
|
106
106
|
Err,
|
|
107
107
|
Ok
|
|
@@ -676,9 +676,11 @@ function scaffoldMcp(engine, safePath, i, language) {
|
|
|
676
676
|
...language !== void 0 && { language }
|
|
677
677
|
});
|
|
678
678
|
if (!renderResult.ok) return resultToMcpResponse(renderResult);
|
|
679
|
+
const existingProject = engine.isExistingProject(safePath);
|
|
679
680
|
const writeResult = engine.write(renderResult.value, safePath, {
|
|
680
681
|
overwrite: false,
|
|
681
|
-
...language !== void 0 && { language }
|
|
682
|
+
...language !== void 0 && { language },
|
|
683
|
+
existingProject
|
|
682
684
|
});
|
|
683
685
|
if (writeResult.ok) {
|
|
684
686
|
persistToolingConfig(safePath, resolveResult.value, i.framework);
|
|
@@ -699,7 +701,7 @@ ${skippedMsg}`
|
|
|
699
701
|
async function handleInitProject(input) {
|
|
700
702
|
const i = input;
|
|
701
703
|
try {
|
|
702
|
-
const { TemplateEngine } = await import("./engine-
|
|
704
|
+
const { TemplateEngine } = await import("./engine-KQG5RVXX.js");
|
|
703
705
|
const engine = new TemplateEngine(resolveTemplatesDir());
|
|
704
706
|
const safePath = sanitizePath(i.path);
|
|
705
707
|
const detected = tryDetectFramework(engine, safePath, i);
|
|
@@ -721,7 +723,7 @@ var listPersonasDefinition = {
|
|
|
721
723
|
inputSchema: { type: "object", properties: {} }
|
|
722
724
|
};
|
|
723
725
|
async function handleListPersonas() {
|
|
724
|
-
const { listPersonas } = await import("./loader-
|
|
726
|
+
const { listPersonas } = await import("./loader-CWAH6B4H.js");
|
|
725
727
|
const result = listPersonas(resolvePersonasDir());
|
|
726
728
|
return resultToMcpResponse(result);
|
|
727
729
|
}
|
|
@@ -745,10 +747,10 @@ async function handleGeneratePersonaArtifacts(input) {
|
|
|
745
747
|
if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.name)) {
|
|
746
748
|
return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.name}`)));
|
|
747
749
|
}
|
|
748
|
-
const { loadPersona } = await import("./loader-
|
|
749
|
-
const { generateRuntime } = await import("./runtime-
|
|
750
|
-
const { generateAgentsMd } = await import("./agents-md-
|
|
751
|
-
const { generateCIWorkflow } = await import("./ci-workflow-
|
|
750
|
+
const { loadPersona } = await import("./loader-CWAH6B4H.js");
|
|
751
|
+
const { generateRuntime } = await import("./runtime-SFEFRPLX.js");
|
|
752
|
+
const { generateAgentsMd } = await import("./agents-md-OPOZA5L7.js");
|
|
753
|
+
const { generateCIWorkflow } = await import("./ci-workflow-H52EMCL6.js");
|
|
752
754
|
const personasDir = resolvePersonasDir();
|
|
753
755
|
const filePath = path3.join(personasDir, `${input.name}.yaml`);
|
|
754
756
|
if (!filePath.startsWith(personasDir)) {
|
|
@@ -803,7 +805,7 @@ async function handleRunPersona(input) {
|
|
|
803
805
|
if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.persona)) {
|
|
804
806
|
return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.persona}`)));
|
|
805
807
|
}
|
|
806
|
-
const { loadPersona } = await import("./loader-
|
|
808
|
+
const { loadPersona } = await import("./loader-CWAH6B4H.js");
|
|
807
809
|
const { runPersona } = await import("./runner-AAEF2TXY.js");
|
|
808
810
|
const { executeSkill } = await import("./skill-executor-MOCUIAYS.js");
|
|
809
811
|
const personasDir = resolvePersonasDir();
|
|
@@ -1342,7 +1344,7 @@ function loadOrGenerateProfile(projectRoot) {
|
|
|
1342
1344
|
// src/mcp/tools/event-emitter.ts
|
|
1343
1345
|
async function emitSkillEvent(projectPath, event) {
|
|
1344
1346
|
try {
|
|
1345
|
-
const { emitEvent } = await import("./dist-
|
|
1347
|
+
const { emitEvent } = await import("./dist-TG63OKA5.js");
|
|
1346
1348
|
await emitEvent(projectPath, event);
|
|
1347
1349
|
} catch {
|
|
1348
1350
|
}
|
|
@@ -1614,7 +1616,7 @@ async function autoSyncRoadmap(projectPath) {
|
|
|
1614
1616
|
try {
|
|
1615
1617
|
const roadmapFile = path11.join(projectPath, "docs", "roadmap.md");
|
|
1616
1618
|
if (!fs10.existsSync(roadmapFile)) return;
|
|
1617
|
-
const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-
|
|
1619
|
+
const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-TG63OKA5.js");
|
|
1618
1620
|
const raw = fs10.readFileSync(roadmapFile, "utf-8");
|
|
1619
1621
|
const parseResult = parseRoadmap(raw);
|
|
1620
1622
|
if (!parseResult.ok) return;
|
|
@@ -1644,7 +1646,7 @@ async function triggerExternalSync(projectPath, roadmapFile) {
|
|
|
1644
1646
|
console.warn("[roadmap-sync] GITHUB_TOKEN not found \u2014 external sync skipped");
|
|
1645
1647
|
return;
|
|
1646
1648
|
}
|
|
1647
|
-
const { fullSync, GitHubIssuesSyncAdapter } = await import("./dist-
|
|
1649
|
+
const { fullSync, GitHubIssuesSyncAdapter } = await import("./dist-TG63OKA5.js");
|
|
1648
1650
|
const adapter = new GitHubIssuesSyncAdapter({
|
|
1649
1651
|
token,
|
|
1650
1652
|
config: trackerConfig
|
|
@@ -1741,12 +1743,12 @@ var manageStateDefinition = {
|
|
|
1741
1743
|
}
|
|
1742
1744
|
};
|
|
1743
1745
|
async function handleShow(projectPath, input) {
|
|
1744
|
-
const { loadState } = await import("./dist-
|
|
1746
|
+
const { loadState } = await import("./dist-TG63OKA5.js");
|
|
1745
1747
|
return resultToMcpResponse(await loadState(projectPath, input.stream, input.session));
|
|
1746
1748
|
}
|
|
1747
1749
|
async function handleLearn(projectPath, input) {
|
|
1748
1750
|
if (!input.learning) return mcpError("Error: learning is required for learn action");
|
|
1749
|
-
const { appendLearning } = await import("./dist-
|
|
1751
|
+
const { appendLearning } = await import("./dist-TG63OKA5.js");
|
|
1750
1752
|
const result = await appendLearning(
|
|
1751
1753
|
projectPath,
|
|
1752
1754
|
input.learning,
|
|
@@ -1761,7 +1763,7 @@ async function handleLearn(projectPath, input) {
|
|
|
1761
1763
|
async function handleFailure(projectPath, input) {
|
|
1762
1764
|
if (!input.description) return mcpError("Error: description is required for failure action");
|
|
1763
1765
|
if (!input.failureType) return mcpError("Error: failureType is required for failure action");
|
|
1764
|
-
const { appendFailure } = await import("./dist-
|
|
1766
|
+
const { appendFailure } = await import("./dist-TG63OKA5.js");
|
|
1765
1767
|
const result = await appendFailure(
|
|
1766
1768
|
projectPath,
|
|
1767
1769
|
input.description,
|
|
@@ -1780,19 +1782,19 @@ async function handleFailure(projectPath, input) {
|
|
|
1780
1782
|
return resultToMcpResponse(Ok({ recorded: true }));
|
|
1781
1783
|
}
|
|
1782
1784
|
async function handleArchive(projectPath, input) {
|
|
1783
|
-
const { archiveFailures } = await import("./dist-
|
|
1785
|
+
const { archiveFailures } = await import("./dist-TG63OKA5.js");
|
|
1784
1786
|
const result = await archiveFailures(projectPath, input.stream, input.session);
|
|
1785
1787
|
if (!result.ok) return resultToMcpResponse(result);
|
|
1786
1788
|
return resultToMcpResponse(Ok({ archived: true }));
|
|
1787
1789
|
}
|
|
1788
1790
|
async function handleReset(projectPath, input) {
|
|
1789
|
-
const { saveState, DEFAULT_STATE } = await import("./dist-
|
|
1791
|
+
const { saveState, DEFAULT_STATE } = await import("./dist-TG63OKA5.js");
|
|
1790
1792
|
const result = await saveState(projectPath, { ...DEFAULT_STATE }, input.stream, input.session);
|
|
1791
1793
|
if (!result.ok) return resultToMcpResponse(result);
|
|
1792
1794
|
return resultToMcpResponse(Ok({ reset: true }));
|
|
1793
1795
|
}
|
|
1794
1796
|
async function handleGate(projectPath, input) {
|
|
1795
|
-
const { runMechanicalGate } = await import("./dist-
|
|
1797
|
+
const { runMechanicalGate } = await import("./dist-TG63OKA5.js");
|
|
1796
1798
|
const result = await runMechanicalGate(projectPath);
|
|
1797
1799
|
if (result.ok) {
|
|
1798
1800
|
await emitSkillEvent(projectPath, {
|
|
@@ -1812,7 +1814,7 @@ async function handleGate(projectPath, input) {
|
|
|
1812
1814
|
}
|
|
1813
1815
|
async function handleSaveHandoff(projectPath, input) {
|
|
1814
1816
|
if (!input.handoff) return mcpError("Error: handoff is required for save-handoff action");
|
|
1815
|
-
const { saveHandoff } = await import("./dist-
|
|
1817
|
+
const { saveHandoff } = await import("./dist-TG63OKA5.js");
|
|
1816
1818
|
const result = await saveHandoff(
|
|
1817
1819
|
projectPath,
|
|
1818
1820
|
input.handoff,
|
|
@@ -1834,7 +1836,7 @@ async function handleSaveHandoff(projectPath, input) {
|
|
|
1834
1836
|
return resultToMcpResponse(Ok({ saved: true }));
|
|
1835
1837
|
}
|
|
1836
1838
|
async function handleLoadHandoff(projectPath, input) {
|
|
1837
|
-
const { loadHandoff } = await import("./dist-
|
|
1839
|
+
const { loadHandoff } = await import("./dist-TG63OKA5.js");
|
|
1838
1840
|
return resultToMcpResponse(await loadHandoff(projectPath, input.stream, input.session));
|
|
1839
1841
|
}
|
|
1840
1842
|
async function handleAppendEntry(projectPath, input) {
|
|
@@ -1842,7 +1844,7 @@ async function handleAppendEntry(projectPath, input) {
|
|
|
1842
1844
|
if (!input.authorSkill) return mcpError("Error: authorSkill is required for append_entry action");
|
|
1843
1845
|
if (!input.content) return mcpError("Error: content is required for append_entry action");
|
|
1844
1846
|
if (input.session) {
|
|
1845
|
-
const { appendSessionEntry } = await import("./dist-
|
|
1847
|
+
const { appendSessionEntry } = await import("./dist-TG63OKA5.js");
|
|
1846
1848
|
const result = await appendSessionEntry(
|
|
1847
1849
|
projectPath,
|
|
1848
1850
|
input.session,
|
|
@@ -1855,7 +1857,7 @@ async function handleAppendEntry(projectPath, input) {
|
|
|
1855
1857
|
if (input.section !== "decisions") {
|
|
1856
1858
|
return mcpError("Error: session is required for non-decisions sections");
|
|
1857
1859
|
}
|
|
1858
|
-
const { loadState, saveState } = await import("./dist-
|
|
1860
|
+
const { loadState, saveState } = await import("./dist-TG63OKA5.js");
|
|
1859
1861
|
const lr = await loadState(projectPath, input.stream);
|
|
1860
1862
|
if (!lr.ok) return resultToMcpResponse(lr);
|
|
1861
1863
|
lr.value.decisions.push({
|
|
@@ -1873,7 +1875,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
|
|
|
1873
1875
|
if (!input.entryId) return mcpError("Error: entryId is required for update_entry_status action");
|
|
1874
1876
|
if (!input.newStatus)
|
|
1875
1877
|
return mcpError("Error: newStatus is required for update_entry_status action");
|
|
1876
|
-
const { updateSessionEntryStatus } = await import("./dist-
|
|
1878
|
+
const { updateSessionEntryStatus } = await import("./dist-TG63OKA5.js");
|
|
1877
1879
|
const result = await updateSessionEntryStatus(
|
|
1878
1880
|
projectPath,
|
|
1879
1881
|
input.session,
|
|
@@ -1886,7 +1888,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
|
|
|
1886
1888
|
async function handleReadSection(projectPath, input) {
|
|
1887
1889
|
if (!input.session) return mcpError("Error: session is required for read_section action");
|
|
1888
1890
|
if (!input.section) return mcpError("Error: section is required for read_section action");
|
|
1889
|
-
const { readSessionSection } = await import("./dist-
|
|
1891
|
+
const { readSessionSection } = await import("./dist-TG63OKA5.js");
|
|
1890
1892
|
const result = await readSessionSection(
|
|
1891
1893
|
projectPath,
|
|
1892
1894
|
input.session,
|
|
@@ -1896,13 +1898,13 @@ async function handleReadSection(projectPath, input) {
|
|
|
1896
1898
|
}
|
|
1897
1899
|
async function handleReadSections(projectPath, input) {
|
|
1898
1900
|
if (!input.session) return mcpError("Error: session is required for read_sections action");
|
|
1899
|
-
const { readSessionSections } = await import("./dist-
|
|
1901
|
+
const { readSessionSections } = await import("./dist-TG63OKA5.js");
|
|
1900
1902
|
const result = await readSessionSections(projectPath, input.session);
|
|
1901
1903
|
return resultToMcpResponse(result);
|
|
1902
1904
|
}
|
|
1903
1905
|
async function handleArchiveSession(projectPath, input) {
|
|
1904
1906
|
if (!input.session) return mcpError("Error: session is required for archive_session action");
|
|
1905
|
-
const { archiveSession } = await import("./dist-
|
|
1907
|
+
const { archiveSession } = await import("./dist-TG63OKA5.js");
|
|
1906
1908
|
const result = await archiveSession(projectPath, input.session);
|
|
1907
1909
|
if (!result.ok) return resultToMcpResponse(result);
|
|
1908
1910
|
await autoSyncRoadmap(projectPath);
|
|
@@ -1982,7 +1984,7 @@ var listStreamsDefinition = {
|
|
|
1982
1984
|
};
|
|
1983
1985
|
async function handleListStreams(input) {
|
|
1984
1986
|
try {
|
|
1985
|
-
const { listStreams, loadStreamIndex } = await import("./dist-
|
|
1987
|
+
const { listStreams, loadStreamIndex } = await import("./dist-TG63OKA5.js");
|
|
1986
1988
|
const projectPath = sanitizePath(input.path);
|
|
1987
1989
|
const indexResult = await loadStreamIndex(projectPath);
|
|
1988
1990
|
const streamsResult = await listStreams(projectPath);
|
|
@@ -2020,7 +2022,7 @@ var checkPhaseGateDefinition = {
|
|
|
2020
2022
|
};
|
|
2021
2023
|
async function handleCheckPhaseGate(input) {
|
|
2022
2024
|
try {
|
|
2023
|
-
const { runCheckPhaseGate } = await import("./check-phase-gate-
|
|
2025
|
+
const { runCheckPhaseGate } = await import("./check-phase-gate-NTLAU3LO.js");
|
|
2024
2026
|
const result = await runCheckPhaseGate({ cwd: sanitizePath(input.path) });
|
|
2025
2027
|
if (result.ok) {
|
|
2026
2028
|
return { content: [{ type: "text", text: JSON.stringify(result.value) }] };
|
|
@@ -2076,7 +2078,7 @@ async function handleValidateCrossCheck(input) {
|
|
|
2076
2078
|
};
|
|
2077
2079
|
}
|
|
2078
2080
|
try {
|
|
2079
|
-
const { runCrossCheck } = await import("./validate-cross-check-
|
|
2081
|
+
const { runCrossCheck } = await import("./validate-cross-check-ULQLEOME.js");
|
|
2080
2082
|
const specsDir = path12.resolve(projectPath, input.specsDir ?? "docs/specs");
|
|
2081
2083
|
if (!specsDir.startsWith(projectPath)) {
|
|
2082
2084
|
return {
|
|
@@ -2799,7 +2801,7 @@ async function handleGenerateSlashCommands(input) {
|
|
|
2799
2801
|
// src/mcp/resources/state.ts
|
|
2800
2802
|
async function getStateResource(projectRoot) {
|
|
2801
2803
|
try {
|
|
2802
|
-
const { loadState, migrateToStreams } = await import("./dist-
|
|
2804
|
+
const { loadState, migrateToStreams } = await import("./dist-TG63OKA5.js");
|
|
2803
2805
|
await migrateToStreams(projectRoot);
|
|
2804
2806
|
const result = await loadState(projectRoot);
|
|
2805
2807
|
if (result.ok) {
|
|
@@ -2917,7 +2919,7 @@ async function handleQueryGraph(input) {
|
|
|
2917
2919
|
const projectPath = sanitizePath(input.path);
|
|
2918
2920
|
const store = await loadGraphStore(projectPath);
|
|
2919
2921
|
if (!store) return graphNotFoundError();
|
|
2920
|
-
const { ContextQL } = await import("./dist-
|
|
2922
|
+
const { ContextQL } = await import("./dist-PGQ32ZI7.js");
|
|
2921
2923
|
const cql = new ContextQL(store);
|
|
2922
2924
|
const result = cql.execute({
|
|
2923
2925
|
rootNodeIds: input.rootNodeIds,
|
|
@@ -2999,7 +3001,7 @@ async function handleSearchSimilar(input) {
|
|
|
2999
3001
|
const projectPath = sanitizePath(input.path);
|
|
3000
3002
|
const store = await loadGraphStore(projectPath);
|
|
3001
3003
|
if (!store) return graphNotFoundError();
|
|
3002
|
-
const { FusionLayer } = await import("./dist-
|
|
3004
|
+
const { FusionLayer } = await import("./dist-PGQ32ZI7.js");
|
|
3003
3005
|
const fusion = new FusionLayer(store);
|
|
3004
3006
|
const results = fusion.search(input.query, input.topK ?? 10);
|
|
3005
3007
|
if (input.mode === "summary") {
|
|
@@ -3054,7 +3056,7 @@ async function handleFindContextFor(input) {
|
|
|
3054
3056
|
const projectPath = sanitizePath(input.path);
|
|
3055
3057
|
const store = await loadGraphStore(projectPath);
|
|
3056
3058
|
if (!store) return graphNotFoundError();
|
|
3057
|
-
const { FusionLayer, ContextQL } = await import("./dist-
|
|
3059
|
+
const { FusionLayer, ContextQL } = await import("./dist-PGQ32ZI7.js");
|
|
3058
3060
|
const fusion = new FusionLayer(store);
|
|
3059
3061
|
const cql = new ContextQL(store);
|
|
3060
3062
|
const tokenBudget = input.tokenBudget ?? 4e3;
|
|
@@ -3159,7 +3161,7 @@ async function handleGetRelationships(input) {
|
|
|
3159
3161
|
const projectPath = sanitizePath(input.path);
|
|
3160
3162
|
const store = await loadGraphStore(projectPath);
|
|
3161
3163
|
if (!store) return graphNotFoundError();
|
|
3162
|
-
const { ContextQL } = await import("./dist-
|
|
3164
|
+
const { ContextQL } = await import("./dist-PGQ32ZI7.js");
|
|
3163
3165
|
const cql = new ContextQL(store);
|
|
3164
3166
|
const direction = input.direction ?? "both";
|
|
3165
3167
|
const bidirectional = direction === "both" || direction === "inbound";
|
|
@@ -3277,7 +3279,7 @@ async function handleGetImpact(input) {
|
|
|
3277
3279
|
const projectPath = sanitizePath(input.path);
|
|
3278
3280
|
const store = await loadGraphStore(projectPath);
|
|
3279
3281
|
if (!store) return graphNotFoundError();
|
|
3280
|
-
const { ContextQL } = await import("./dist-
|
|
3282
|
+
const { ContextQL } = await import("./dist-PGQ32ZI7.js");
|
|
3281
3283
|
let targetNodeId = input.nodeId;
|
|
3282
3284
|
if (!targetNodeId && input.filePath) {
|
|
3283
3285
|
const fileNodes = store.findNodes({ type: "file" });
|
|
@@ -3398,7 +3400,7 @@ var ingestSourceDefinition = {
|
|
|
3398
3400
|
path: { type: "string", description: "Path to project root" },
|
|
3399
3401
|
source: {
|
|
3400
3402
|
type: "string",
|
|
3401
|
-
enum: ["code", "knowledge", "git", "all"],
|
|
3403
|
+
enum: ["code", "knowledge", "git", "business-signals", "diagrams", "all"],
|
|
3402
3404
|
description: "Type of source to ingest"
|
|
3403
3405
|
}
|
|
3404
3406
|
},
|
|
@@ -3409,7 +3411,7 @@ async function handleIngestSource(input) {
|
|
|
3409
3411
|
try {
|
|
3410
3412
|
const projectPath = sanitizePath(input.path);
|
|
3411
3413
|
const graphDir = path16.join(projectPath, ".harness", "graph");
|
|
3412
|
-
const { GraphStore, CodeIngestor, TopologicalLinker, KnowledgeIngestor, GitIngestor } = await import("./dist-
|
|
3414
|
+
const { GraphStore, CodeIngestor, TopologicalLinker, KnowledgeIngestor, GitIngestor } = await import("./dist-PGQ32ZI7.js");
|
|
3413
3415
|
const fs17 = await import("fs/promises");
|
|
3414
3416
|
await fs17.mkdir(graphDir, { recursive: true });
|
|
3415
3417
|
const store = new GraphStore();
|
|
@@ -3432,6 +3434,18 @@ async function handleIngestSource(input) {
|
|
|
3432
3434
|
const gitResult = await gitIngestor.ingest(projectPath);
|
|
3433
3435
|
results.push(gitResult);
|
|
3434
3436
|
}
|
|
3437
|
+
if (input.source === "business-signals" || input.source === "all") {
|
|
3438
|
+
const { createExtractionRunner } = await import("./dist-PGQ32ZI7.js");
|
|
3439
|
+
const extractedDir = path16.join(projectPath, ".harness", "knowledge", "extracted");
|
|
3440
|
+
const signalsResult = await createExtractionRunner().run(projectPath, store, extractedDir);
|
|
3441
|
+
results.push(signalsResult);
|
|
3442
|
+
}
|
|
3443
|
+
if (input.source === "diagrams" || input.source === "all") {
|
|
3444
|
+
const { DiagramParser } = await import("./dist-PGQ32ZI7.js");
|
|
3445
|
+
const diagramParser = new DiagramParser(store);
|
|
3446
|
+
const diagramResult = await diagramParser.ingest(projectPath);
|
|
3447
|
+
results.push(diagramResult);
|
|
3448
|
+
}
|
|
3435
3449
|
await store.save(graphDir);
|
|
3436
3450
|
const combined = {
|
|
3437
3451
|
nodesAdded: results.reduce((s, r) => s + r.nodesAdded, 0),
|
|
@@ -3493,7 +3507,7 @@ async function handleDetectAnomalies(input) {
|
|
|
3493
3507
|
const projectPath = sanitizePath(input.path);
|
|
3494
3508
|
const store = await loadGraphStore(projectPath);
|
|
3495
3509
|
if (!store) return graphNotFoundError();
|
|
3496
|
-
const { GraphAnomalyAdapter } = await import("./dist-
|
|
3510
|
+
const { GraphAnomalyAdapter } = await import("./dist-PGQ32ZI7.js");
|
|
3497
3511
|
const adapter = new GraphAnomalyAdapter(store);
|
|
3498
3512
|
const report = adapter.detect({
|
|
3499
3513
|
...input.threshold !== void 0 && { threshold: input.threshold },
|
|
@@ -3542,7 +3556,7 @@ async function handleAskGraph(input) {
|
|
|
3542
3556
|
const projectPath = sanitizePath(input.path);
|
|
3543
3557
|
const store = await loadGraphStore(projectPath);
|
|
3544
3558
|
if (!store) return graphNotFoundError();
|
|
3545
|
-
const { askGraph } = await import("./dist-
|
|
3559
|
+
const { askGraph } = await import("./dist-PGQ32ZI7.js");
|
|
3546
3560
|
const result = await askGraph(store, input.question);
|
|
3547
3561
|
return {
|
|
3548
3562
|
content: [{ type: "text", text: JSON.stringify(result) }]
|
|
@@ -3606,7 +3620,7 @@ async function handleComputeBlastRadius(input) {
|
|
|
3606
3620
|
const projectPath = sanitizePath(input.path);
|
|
3607
3621
|
const store = await loadGraphStore(projectPath);
|
|
3608
3622
|
if (!store) return graphNotFoundError();
|
|
3609
|
-
const { CascadeSimulator } = await import("./dist-
|
|
3623
|
+
const { CascadeSimulator } = await import("./dist-PGQ32ZI7.js");
|
|
3610
3624
|
let targetNodeId = input.nodeId;
|
|
3611
3625
|
if (!targetNodeId && input.file) {
|
|
3612
3626
|
const fileNodes = store.findNodes({ type: "file" });
|
|
@@ -3807,7 +3821,7 @@ var generateAgentDefinitionsDefinition = {
|
|
|
3807
3821
|
}
|
|
3808
3822
|
};
|
|
3809
3823
|
async function handleGenerateAgentDefinitions(input) {
|
|
3810
|
-
const { generateAgentDefinitions } = await import("./generate-agent-definitions-
|
|
3824
|
+
const { generateAgentDefinitions } = await import("./generate-agent-definitions-I4B7CVOB.js");
|
|
3811
3825
|
const platforms = input.platform === "all" || !input.platform ? ["claude-code", "gemini-cli"] : [input.platform];
|
|
3812
3826
|
const results = generateAgentDefinitions({
|
|
3813
3827
|
platforms: [...platforms],
|
|
@@ -4135,7 +4149,7 @@ function shouldTriggerExternalSync(input, response) {
|
|
|
4135
4149
|
}
|
|
4136
4150
|
async function handleManageRoadmap(input) {
|
|
4137
4151
|
try {
|
|
4138
|
-
const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges, assignFeature } = await import("./dist-
|
|
4152
|
+
const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges, assignFeature } = await import("./dist-TG63OKA5.js");
|
|
4139
4153
|
const { Ok: Ok2 } = await import("./dist-3EWNRFFQ.js");
|
|
4140
4154
|
const projectPath = sanitizePath(input.path);
|
|
4141
4155
|
const deps = {
|
|
@@ -4298,8 +4312,12 @@ ${rows.join("\n")}`;
|
|
|
4298
4312
|
prompt += `
|
|
4299
4313
|
|
|
4300
4314
|
**Recommendation:** ${recLabel} (confidence: ${recommendation.confidence})`;
|
|
4301
|
-
|
|
4302
|
-
|
|
4315
|
+
const cleanReason = recommendation.reason.trim();
|
|
4316
|
+
const cleanText = text.trim();
|
|
4317
|
+
if (cleanReason && cleanReason !== cleanText && !cleanReason.startsWith(cleanText)) {
|
|
4318
|
+
prompt += `
|
|
4319
|
+
> ${cleanReason}`;
|
|
4320
|
+
}
|
|
4303
4321
|
}
|
|
4304
4322
|
}
|
|
4305
4323
|
return prompt;
|
|
@@ -4570,7 +4588,7 @@ async function handleTransition(validInput, projectPath, id) {
|
|
|
4570
4588
|
const transition = transitionResult.data;
|
|
4571
4589
|
const prompt = renderTransition(transition);
|
|
4572
4590
|
try {
|
|
4573
|
-
const { saveHandoff } = await import("./dist-
|
|
4591
|
+
const { saveHandoff } = await import("./dist-TG63OKA5.js");
|
|
4574
4592
|
await saveHandoff(
|
|
4575
4593
|
projectPath,
|
|
4576
4594
|
{
|
|
@@ -4651,7 +4669,7 @@ async function handleEmitInteraction(input) {
|
|
|
4651
4669
|
}
|
|
4652
4670
|
async function recordInteraction(projectPath, id, type, decision, stream) {
|
|
4653
4671
|
try {
|
|
4654
|
-
const { loadState, saveState } = await import("./dist-
|
|
4672
|
+
const { loadState, saveState } = await import("./dist-TG63OKA5.js");
|
|
4655
4673
|
const stateResult = await loadState(projectPath, stream);
|
|
4656
4674
|
if (stateResult.ok) {
|
|
4657
4675
|
const state = stateResult.value;
|
|
@@ -4812,10 +4830,10 @@ async function handleGatherContext(input) {
|
|
|
4812
4830
|
input.include ?? ["state", "learnings", "handoff", "graph", "validation"]
|
|
4813
4831
|
);
|
|
4814
4832
|
const errors = [];
|
|
4815
|
-
const statePromise = includeSet.has("state") ? import("./dist-
|
|
4833
|
+
const statePromise = includeSet.has("state") ? import("./dist-TG63OKA5.js").then(
|
|
4816
4834
|
(core) => core.loadState(projectPath, void 0, input.session)
|
|
4817
4835
|
) : Promise.resolve(null);
|
|
4818
|
-
const learningsPromise = includeSet.has("learnings") ? import("./dist-
|
|
4836
|
+
const learningsPromise = includeSet.has("learnings") ? import("./dist-TG63OKA5.js").then(
|
|
4819
4837
|
(core) => core.loadBudgetedLearnings(projectPath, {
|
|
4820
4838
|
intent: input.intent,
|
|
4821
4839
|
tokenBudget: input.learningsBudget ?? 1e3,
|
|
@@ -4824,14 +4842,14 @@ async function handleGatherContext(input) {
|
|
|
4824
4842
|
...input.depth !== void 0 && { depth: input.depth }
|
|
4825
4843
|
})
|
|
4826
4844
|
) : Promise.resolve(null);
|
|
4827
|
-
const handoffPromise = includeSet.has("handoff") ? import("./dist-
|
|
4845
|
+
const handoffPromise = includeSet.has("handoff") ? import("./dist-TG63OKA5.js").then(
|
|
4828
4846
|
(core) => core.loadHandoff(projectPath, void 0, input.session)
|
|
4829
4847
|
) : Promise.resolve(null);
|
|
4830
4848
|
const graphPromise = includeSet.has("graph") ? (async () => {
|
|
4831
|
-
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-
|
|
4849
|
+
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-TIVI6NQ7.js");
|
|
4832
4850
|
const store = await loadGraphStore2(projectPath);
|
|
4833
4851
|
if (!store) return null;
|
|
4834
|
-
const { FusionLayer, ContextQL } = await import("./dist-
|
|
4852
|
+
const { FusionLayer, ContextQL } = await import("./dist-PGQ32ZI7.js");
|
|
4835
4853
|
const fusion = new FusionLayer(store);
|
|
4836
4854
|
const cql = new ContextQL(store);
|
|
4837
4855
|
const tokenBudget = input.tokenBudget ?? 4e3;
|
|
@@ -4868,11 +4886,11 @@ async function handleGatherContext(input) {
|
|
|
4868
4886
|
context: contextBlocks
|
|
4869
4887
|
};
|
|
4870
4888
|
})() : Promise.resolve(null);
|
|
4871
|
-
const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-
|
|
4889
|
+
const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-TG63OKA5.js").then(
|
|
4872
4890
|
(core) => core.readSessionSections(projectPath, input.session)
|
|
4873
4891
|
) : Promise.resolve(null);
|
|
4874
4892
|
const shouldIncludeEvents = input.includeEvents !== void 0 ? input.includeEvents : includeSet.has("events") || !!input.session && !input.include;
|
|
4875
|
-
const eventsPromise = shouldIncludeEvents ? import("./dist-
|
|
4893
|
+
const eventsPromise = shouldIncludeEvents ? import("./dist-TG63OKA5.js").then(async (core) => {
|
|
4876
4894
|
const result = await core.loadEvents(projectPath, {
|
|
4877
4895
|
session: input.session
|
|
4878
4896
|
});
|
|
@@ -4880,7 +4898,7 @@ async function handleGatherContext(input) {
|
|
|
4880
4898
|
return core.formatEventTimeline(result.value);
|
|
4881
4899
|
}) : Promise.resolve(null);
|
|
4882
4900
|
const validationPromise = includeSet.has("validation") ? (async () => {
|
|
4883
|
-
const { handleValidateProject: handleValidateProject2 } = await import("./validate-
|
|
4901
|
+
const { handleValidateProject: handleValidateProject2 } = await import("./validate-HXM6DXRZ.js");
|
|
4884
4902
|
const result = await handleValidateProject2({ path: projectPath });
|
|
4885
4903
|
const first = result.content[0];
|
|
4886
4904
|
return first ? JSON.parse(first.text) : null;
|
|
@@ -4983,7 +5001,7 @@ async function handleGatherContext(input) {
|
|
|
4983
5001
|
};
|
|
4984
5002
|
if (input.session) {
|
|
4985
5003
|
try {
|
|
4986
|
-
const core = await import("./dist-
|
|
5004
|
+
const core = await import("./dist-TG63OKA5.js");
|
|
4987
5005
|
core.updateSessionIndex(
|
|
4988
5006
|
projectPath,
|
|
4989
5007
|
input.session,
|
|
@@ -5135,7 +5153,7 @@ async function handleReviewChanges(input) {
|
|
|
5135
5153
|
}
|
|
5136
5154
|
}
|
|
5137
5155
|
async function runQuickReview(projectPath, diff, diffLines, downgraded, offset, limit) {
|
|
5138
|
-
const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-
|
|
5156
|
+
const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-HS7ZYXOU.js");
|
|
5139
5157
|
const result = await handleAnalyzeDiff2({ diff, path: projectPath });
|
|
5140
5158
|
const firstContent = result.content[0];
|
|
5141
5159
|
if (!firstContent) throw new Error("Empty analyze_diff response");
|
|
@@ -5170,7 +5188,7 @@ function extractFileCount(diffParsed) {
|
|
|
5170
5188
|
return files?.length ?? 0;
|
|
5171
5189
|
}
|
|
5172
5190
|
async function runStandardReview(projectPath, diff, diffLines, downgraded, offset, limit) {
|
|
5173
|
-
const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-
|
|
5191
|
+
const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-HS7ZYXOU.js");
|
|
5174
5192
|
const [diffResult, reviewResult] = await Promise.all([
|
|
5175
5193
|
handleAnalyzeDiff2({ diff, path: projectPath }),
|
|
5176
5194
|
handleCreateSelfReview2({ path: projectPath, diff })
|
|
@@ -5205,7 +5223,7 @@ async function runStandardReview(projectPath, diff, diffLines, downgraded, offse
|
|
|
5205
5223
|
};
|
|
5206
5224
|
}
|
|
5207
5225
|
async function runDeepReview(projectPath, diff, diffLines, _downgraded, offset, limit) {
|
|
5208
|
-
const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-
|
|
5226
|
+
const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-QOZGWCTY.js");
|
|
5209
5227
|
const result = await handleRunCodeReview2({
|
|
5210
5228
|
path: projectPath,
|
|
5211
5229
|
diff,
|
|
@@ -5284,7 +5302,7 @@ async function handleCheckTaskIndependence(input) {
|
|
|
5284
5302
|
try {
|
|
5285
5303
|
const projectPath = sanitizePath(input.path);
|
|
5286
5304
|
const store = await loadGraphStore(projectPath);
|
|
5287
|
-
const { TaskIndependenceAnalyzer } = await import("./dist-
|
|
5305
|
+
const { TaskIndependenceAnalyzer } = await import("./dist-PGQ32ZI7.js");
|
|
5288
5306
|
const analyzer = new TaskIndependenceAnalyzer(store ?? void 0);
|
|
5289
5307
|
const result = analyzer.analyze({
|
|
5290
5308
|
tasks: input.tasks,
|
|
@@ -5372,7 +5390,7 @@ async function handlePredictConflicts(input) {
|
|
|
5372
5390
|
try {
|
|
5373
5391
|
const projectPath = sanitizePath(input.path);
|
|
5374
5392
|
const store = await loadGraphStore(projectPath);
|
|
5375
|
-
const { ConflictPredictor } = await import("./dist-
|
|
5393
|
+
const { ConflictPredictor } = await import("./dist-PGQ32ZI7.js");
|
|
5376
5394
|
const predictor = new ConflictPredictor(store ?? void 0);
|
|
5377
5395
|
const result = predictor.predict({
|
|
5378
5396
|
tasks: input.tasks,
|
|
@@ -5478,7 +5496,7 @@ async function handleDetectStaleConstraints(input) {
|
|
|
5478
5496
|
isError: true
|
|
5479
5497
|
};
|
|
5480
5498
|
}
|
|
5481
|
-
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-
|
|
5499
|
+
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-TIVI6NQ7.js");
|
|
5482
5500
|
const store = await loadGraphStore2(projectPath);
|
|
5483
5501
|
if (!store) {
|
|
5484
5502
|
return {
|
|
@@ -5499,7 +5517,7 @@ async function handleDetectStaleConstraints(input) {
|
|
|
5499
5517
|
]
|
|
5500
5518
|
};
|
|
5501
5519
|
}
|
|
5502
|
-
const { detectStaleConstraints } = await import("./dist-
|
|
5520
|
+
const { detectStaleConstraints } = await import("./dist-TG63OKA5.js");
|
|
5503
5521
|
const result = detectStaleConstraints(
|
|
5504
5522
|
store,
|
|
5505
5523
|
windowDays,
|
|
@@ -5619,10 +5637,10 @@ function countCriticalFindings(securityData) {
|
|
|
5619
5637
|
return findings.filter((f) => f.severity === "error").length;
|
|
5620
5638
|
}
|
|
5621
5639
|
async function runHealthChecks(projectPath) {
|
|
5622
|
-
const { handleAssessProject: handleAssessProject2 } = await import("./assess-project-
|
|
5623
|
-
const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-
|
|
5624
|
-
const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-
|
|
5625
|
-
const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-
|
|
5640
|
+
const { handleAssessProject: handleAssessProject2 } = await import("./assess-project-ZW7EKNIT.js");
|
|
5641
|
+
const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-PMVMO6SF.js");
|
|
5642
|
+
const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-RXESIYKC.js");
|
|
5643
|
+
const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-2K7UUK6T.js");
|
|
5626
5644
|
const [assessResult, depsResult, entropyResult, securityResult] = await Promise.all([
|
|
5627
5645
|
handleAssessProject2({
|
|
5628
5646
|
path: projectPath,
|
|
@@ -5677,10 +5695,10 @@ function avg(values) {
|
|
|
5677
5695
|
}
|
|
5678
5696
|
async function runGraphMetrics(projectPath) {
|
|
5679
5697
|
try {
|
|
5680
|
-
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-
|
|
5698
|
+
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-TIVI6NQ7.js");
|
|
5681
5699
|
const store = await loadGraphStore2(projectPath);
|
|
5682
5700
|
if (!store) return ZERO_METRICS;
|
|
5683
|
-
const { GraphCouplingAdapter, GraphComplexityAdapter, GraphAnomalyAdapter } = await import("./dist-
|
|
5701
|
+
const { GraphCouplingAdapter, GraphComplexityAdapter, GraphAnomalyAdapter } = await import("./dist-PGQ32ZI7.js");
|
|
5684
5702
|
const couplingAdapter = new GraphCouplingAdapter(store);
|
|
5685
5703
|
const couplingData = couplingAdapter.computeCouplingData();
|
|
5686
5704
|
const files = couplingData.files;
|
|
@@ -6419,7 +6437,7 @@ async function handleGetDecayTrends(input) {
|
|
|
6419
6437
|
};
|
|
6420
6438
|
}
|
|
6421
6439
|
try {
|
|
6422
|
-
const core = await import("./dist-
|
|
6440
|
+
const core = await import("./dist-TG63OKA5.js");
|
|
6423
6441
|
const { TimelineManager } = core;
|
|
6424
6442
|
const manager = new TimelineManager(projectPath);
|
|
6425
6443
|
const timeline = manager.load();
|
|
@@ -6554,7 +6572,7 @@ async function handleCodeOutline(input) {
|
|
|
6554
6572
|
};
|
|
6555
6573
|
}
|
|
6556
6574
|
try {
|
|
6557
|
-
const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-
|
|
6575
|
+
const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-TG63OKA5.js");
|
|
6558
6576
|
const { stat } = await import("fs/promises");
|
|
6559
6577
|
const stats = await stat(targetPath).catch(() => null);
|
|
6560
6578
|
if (stats?.isFile()) {
|
|
@@ -6573,7 +6591,7 @@ async function handleCodeOutline(input) {
|
|
|
6573
6591
|
})
|
|
6574
6592
|
);
|
|
6575
6593
|
fileStats.sort((a, b) => b.mtimeMs - a.mtimeMs);
|
|
6576
|
-
const { paginate: paginate2 } = await import("./dist-
|
|
6594
|
+
const { paginate: paginate2 } = await import("./dist-TG63OKA5.js");
|
|
6577
6595
|
const paged = paginate2(fileStats, input.offset ?? 0, input.limit ?? 30);
|
|
6578
6596
|
const results = [];
|
|
6579
6597
|
for (const entry of paged.items) {
|
|
@@ -6646,7 +6664,7 @@ async function handleCodeSearch(input) {
|
|
|
6646
6664
|
};
|
|
6647
6665
|
}
|
|
6648
6666
|
try {
|
|
6649
|
-
const { searchSymbols } = await import("./dist-
|
|
6667
|
+
const { searchSymbols } = await import("./dist-TG63OKA5.js");
|
|
6650
6668
|
const result = await searchSymbols(input.query, directory, input.glob);
|
|
6651
6669
|
const lines = [`Search: "${result.query}" \u2014 ${result.matches.length} matches`];
|
|
6652
6670
|
for (const match of result.matches) {
|
|
@@ -6715,7 +6733,7 @@ async function handleCodeUnfold(input) {
|
|
|
6715
6733
|
}
|
|
6716
6734
|
try {
|
|
6717
6735
|
if (input.symbol) {
|
|
6718
|
-
const { unfoldSymbol } = await import("./dist-
|
|
6736
|
+
const { unfoldSymbol } = await import("./dist-TG63OKA5.js");
|
|
6719
6737
|
const result = await unfoldSymbol(filePath, input.symbol);
|
|
6720
6738
|
const header = result.warning ? `${result.file}:${result.startLine}-${result.endLine} ${result.warning}
|
|
6721
6739
|
` : `${result.file}:${result.startLine}-${result.endLine}
|
|
@@ -6723,7 +6741,7 @@ async function handleCodeUnfold(input) {
|
|
|
6723
6741
|
return { content: [{ type: "text", text: header + result.content }] };
|
|
6724
6742
|
}
|
|
6725
6743
|
if (input.startLine != null && input.endLine != null) {
|
|
6726
|
-
const { unfoldRange } = await import("./dist-
|
|
6744
|
+
const { unfoldRange } = await import("./dist-TG63OKA5.js");
|
|
6727
6745
|
const result = await unfoldRange(filePath, input.startLine, input.endLine);
|
|
6728
6746
|
const header = `${result.file}:${result.startLine}-${result.endLine}
|
|
6729
6747
|
`;
|
|
@@ -6785,7 +6803,7 @@ async function handleCheckTraceability(input) {
|
|
|
6785
6803
|
isError: true
|
|
6786
6804
|
};
|
|
6787
6805
|
}
|
|
6788
|
-
const { queryTraceability } = await import("./dist-
|
|
6806
|
+
const { queryTraceability } = await import("./dist-PGQ32ZI7.js");
|
|
6789
6807
|
const options = {};
|
|
6790
6808
|
if (input.spec) options.specPath = input.spec;
|
|
6791
6809
|
if (input.feature) options.featureName = input.feature;
|
|
@@ -6908,7 +6926,7 @@ async function handlePredictFailures(input) {
|
|
|
6908
6926
|
};
|
|
6909
6927
|
}
|
|
6910
6928
|
try {
|
|
6911
|
-
const core = await import("./dist-
|
|
6929
|
+
const core = await import("./dist-TG63OKA5.js");
|
|
6912
6930
|
const { TimelineManager, PredictionEngine, SpecImpactEstimator } = core;
|
|
6913
6931
|
const manager = new TimelineManager(projectPath);
|
|
6914
6932
|
const includeRoadmap = input.includeRoadmap !== false;
|
|
@@ -7098,7 +7116,7 @@ function handleContentMode(content, pipeline, budget, source) {
|
|
|
7098
7116
|
};
|
|
7099
7117
|
}
|
|
7100
7118
|
async function handleIntentMode(projectPath, intent, pipeline, budget, filterContent) {
|
|
7101
|
-
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-
|
|
7119
|
+
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-TIVI6NQ7.js");
|
|
7102
7120
|
const store = await loadGraphStore2(projectPath);
|
|
7103
7121
|
if (!store) {
|
|
7104
7122
|
return {
|
|
@@ -7111,7 +7129,7 @@ async function handleIntentMode(projectPath, intent, pipeline, budget, filterCon
|
|
|
7111
7129
|
isError: true
|
|
7112
7130
|
};
|
|
7113
7131
|
}
|
|
7114
|
-
const { PackedSummaryCache, FusionLayer, ContextQL } = await import("./dist-
|
|
7132
|
+
const { PackedSummaryCache, FusionLayer, ContextQL } = await import("./dist-PGQ32ZI7.js");
|
|
7115
7133
|
const cache = new PackedSummaryCache(store);
|
|
7116
7134
|
const cachedEnvelope = cache.get(intent);
|
|
7117
7135
|
if (cachedEnvelope) {
|
|
@@ -7324,7 +7342,7 @@ async function handleDetectConstraintEmergence(input) {
|
|
|
7324
7342
|
}
|
|
7325
7343
|
const nodePath = await import("path");
|
|
7326
7344
|
const historyPath = nodePath.resolve(projectPath, ".harness/arch/violation-history.json");
|
|
7327
|
-
const { ViolationHistoryManager, detectEmergentConstraints } = await import("./dist-
|
|
7345
|
+
const { ViolationHistoryManager, detectEmergentConstraints } = await import("./dist-TG63OKA5.js");
|
|
7328
7346
|
const manager = new ViolationHistoryManager(historyPath);
|
|
7329
7347
|
const history = manager.load();
|
|
7330
7348
|
const options = { windowWeeks, minOccurrences };
|
|
@@ -7574,7 +7592,7 @@ async function appendUpdateNotification(result, resolvedRoot) {
|
|
|
7574
7592
|
shouldRunCheck,
|
|
7575
7593
|
readCheckState,
|
|
7576
7594
|
spawnBackgroundCheck
|
|
7577
|
-
} = await import("./dist-
|
|
7595
|
+
} = await import("./dist-TG63OKA5.js");
|
|
7578
7596
|
const { CLI_VERSION } = await import("./version-CUI434OP.js");
|
|
7579
7597
|
const configInterval = readConfigInterval(resolvedRoot);
|
|
7580
7598
|
const DEFAULT_INTERVAL = 864e5;
|