@harness-engineering/cli 2.2.1 → 2.3.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/harness-roadmap-pilot/SKILL.md +13 -7
- package/dist/agents/skills/codex/harness-roadmap-pilot/SKILL.md +13 -7
- package/dist/agents/skills/cursor/harness-roadmap-pilot/SKILL.md +13 -7
- package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/SKILL.md +13 -7
- package/dist/{agents-md-L4X4MOWT.js → agents-md-5JG3AE5A.js} +3 -3
- package/dist/{architecture-WJRIYQ45.js → architecture-544ISXDI.js} +4 -4
- package/dist/{assess-project-PHC2HO3V.js → assess-project-PBO6XFJC.js} +1 -1
- package/dist/bin/harness-mcp.js +15 -15
- package/dist/bin/harness.js +25 -25
- package/dist/{check-phase-gate-646KY67H.js → check-phase-gate-BZU4DGF3.js} +4 -4
- package/dist/{chunk-2QPHCR22.js → chunk-22OKI5QI.js} +9 -9
- package/dist/{chunk-CPYL6LJR.js → chunk-2564TBT6.js} +1 -1
- package/dist/{chunk-YG4ZBGEH.js → chunk-7BNK4M23.js} +1 -1
- package/dist/{chunk-L2IDE7WS.js → chunk-A36MGB3V.js} +277 -111
- package/dist/{chunk-LO7ZLV7S.js → chunk-DBJC4ULT.js} +12 -5
- package/dist/{chunk-JPWICLXQ.js → chunk-DHWFOHPX.js} +1 -1
- package/dist/{chunk-W4AFGFFB.js → chunk-EMJFHTPZ.js} +3 -3
- package/dist/{chunk-4HKVZO7R.js → chunk-IYA3NS5P.js} +1 -1
- package/dist/{chunk-YLOAQZLA.js → chunk-J4MX5DIA.js} +5 -5
- package/dist/{chunk-224XKVLP.js → chunk-JMACX5FN.js} +1 -1
- package/dist/{chunk-YLTRFZAT.js → chunk-KJR4Z2YC.js} +8 -8
- package/dist/{chunk-VJQLUS5I.js → chunk-KT5PWWWO.js} +1 -1
- package/dist/{chunk-OJMO4JBQ.js → chunk-LBYGGNEZ.js} +1 -1
- package/dist/{chunk-36X7TRUI.js → chunk-LYMPKO6N.js} +2 -2
- package/dist/{chunk-GOOTYTTV.js → chunk-N6DVSOLZ.js} +933 -500
- package/dist/{chunk-VKDBM3RX.js → chunk-QZ67TDLJ.js} +3 -3
- package/dist/{chunk-2ZURBWEV.js → chunk-R6GLLMRZ.js} +9 -9
- package/dist/{chunk-QTUPHTTK.js → chunk-T2ZMHXCX.js} +1 -1
- package/dist/{chunk-YWD6WXXM.js → chunk-TIJXG4UB.js} +6 -6
- package/dist/{chunk-KTWKW6KJ.js → chunk-TIQU5VY7.js} +1 -1
- package/dist/{chunk-E7W3YOXL.js → chunk-U2SF3KAQ.js} +2 -2
- package/dist/{chunk-TNZYQTEE.js → chunk-WMZKZCCE.js} +1 -1
- package/dist/{chunk-BMM3GXV6.js → chunk-XPRGWHBL.js} +80 -37
- package/dist/{chunk-KV7A5OZT.js → chunk-YI6NTL72.js} +5 -5
- package/dist/{chunk-K4WRQTEF.js → chunk-YNG7BWGB.js} +2034 -490
- package/dist/{ci-workflow-TOS5X527.js → ci-workflow-ZO6FPO3V.js} +3 -3
- package/dist/{dist-D27LJR2T.js → dist-SQAOKWXM.js} +5 -3
- package/dist/{dist-6RT2AVYU.js → dist-ZS3Y3YWP.js} +30 -2
- package/dist/{docs-HOJMQYDZ.js → docs-VW2KDPI3.js} +4 -4
- package/dist/{engine-D6UYH6DB.js → engine-LFQ2JSHY.js} +3 -3
- package/dist/{entropy-LZ4IDGZR.js → entropy-P62LCVJI.js} +3 -3
- package/dist/{feedback-WV7EQVK7.js → feedback-O3TZAPGX.js} +1 -1
- package/dist/{generate-agent-definitions-GFNXJCBY.js → generate-agent-definitions-WVCOZDKI.js} +4 -4
- package/dist/{glob-helper-FZPPTGJN.js → glob-helper-JE3MO4UD.js} +1 -1
- package/dist/{graph-loader-5MKHAJJF.js → graph-loader-TJU4E7KL.js} +1 -1
- package/dist/index.d.ts +15 -9
- package/dist/index.js +25 -25
- package/dist/{loader-Z23JTXIZ.js → loader-UB2A65DN.js} +3 -3
- package/dist/{mcp-JDJGELGD.js → mcp-ST26QMDK.js} +15 -15
- package/dist/{performance-7ATLHTQU.js → performance-5HQG3IU6.js} +4 -4
- package/dist/{review-pipeline-COBGGXHJ.js → review-pipeline-VRDL5A7J.js} +3 -3
- package/dist/{runtime-KCBNQUXK.js → runtime-TQQT2MWQ.js} +3 -3
- package/dist/{scan-BIJYHOE7.js → scan-SFX5U3TE.js} +1 -1
- package/dist/{security-MAPRIFQT.js → security-IMFAE6MW.js} +1 -1
- package/dist/{validate-74XTQR7Q.js → validate-GW2DG64P.js} +4 -4
- package/dist/{validate-cross-check-MI5MZ7MB.js → validate-cross-check-F5YQVXLT.js} +3 -3
- package/package.json +6 -6
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
handleRunCodeReview,
|
|
3
3
|
runCodeReviewDefinition,
|
|
4
4
|
sortFindingsBySeverity
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-LYMPKO6N.js";
|
|
6
6
|
import {
|
|
7
7
|
assessProjectDefinition,
|
|
8
8
|
handleAssessProject
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-TIJXG4UB.js";
|
|
10
10
|
import {
|
|
11
11
|
getBusinessKnowledgeResource
|
|
12
12
|
} from "./chunk-IOW3MW2K.js";
|
|
@@ -17,35 +17,35 @@ import {
|
|
|
17
17
|
handleCreateSelfReview,
|
|
18
18
|
handleRequestPeerReview,
|
|
19
19
|
requestPeerReviewDefinition
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-R6GLLMRZ.js";
|
|
21
21
|
import {
|
|
22
22
|
getSecurityTrendsDefinition,
|
|
23
23
|
handleGetSecurityTrends,
|
|
24
24
|
handleRunSecurityScan,
|
|
25
25
|
runSecurityScanDefinition
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-EMJFHTPZ.js";
|
|
27
27
|
import {
|
|
28
28
|
loadGraphStore
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-TIQU5VY7.js";
|
|
30
30
|
import {
|
|
31
31
|
handleValidateProject,
|
|
32
32
|
validateToolDefinition
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-QZ67TDLJ.js";
|
|
34
34
|
import {
|
|
35
35
|
checkDependenciesDefinition,
|
|
36
36
|
handleCheckDependencies
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-J4MX5DIA.js";
|
|
38
38
|
import {
|
|
39
39
|
resolveProjectConfig
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-2564TBT6.js";
|
|
41
41
|
import {
|
|
42
42
|
checkDocsDefinition,
|
|
43
43
|
handleCheckDocs
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-22OKI5QI.js";
|
|
45
45
|
import {
|
|
46
46
|
detectEntropyDefinition,
|
|
47
47
|
handleDetectEntropy
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-YI6NTL72.js";
|
|
49
49
|
import {
|
|
50
50
|
checkPerformanceDefinition,
|
|
51
51
|
getCriticalPathsDefinition,
|
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
handleGetPerfBaselines,
|
|
56
56
|
handleUpdatePerfBaselines,
|
|
57
57
|
updatePerfBaselinesDefinition
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-KJR4Z2YC.js";
|
|
59
59
|
import {
|
|
60
60
|
resultToMcpResponse
|
|
61
61
|
} from "./chunk-EPUKTTJZ.js";
|
|
@@ -67,7 +67,7 @@ import {
|
|
|
67
67
|
} from "./chunk-27AJKSQY.js";
|
|
68
68
|
import {
|
|
69
69
|
resolveConfig
|
|
70
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-DBJC4ULT.js";
|
|
71
71
|
import {
|
|
72
72
|
GENERATED_HEADER_CLAUDE,
|
|
73
73
|
GENERATED_HEADER_CODEX,
|
|
@@ -88,22 +88,26 @@ import {
|
|
|
88
88
|
} from "./chunk-6B6UN6SG.js";
|
|
89
89
|
import {
|
|
90
90
|
CompactionPipeline,
|
|
91
|
+
ConflictError,
|
|
91
92
|
DEFAULT_TOKEN_BUDGET,
|
|
92
93
|
DESTRUCTIVE_BASH,
|
|
93
94
|
StructuralStrategy,
|
|
94
95
|
TruncationStrategy,
|
|
95
96
|
checkTaint,
|
|
96
97
|
computeLoadPlan,
|
|
98
|
+
createTrackerClient,
|
|
97
99
|
detectChangeType,
|
|
98
100
|
estimateTokens,
|
|
99
101
|
extractLevel,
|
|
100
102
|
init_dist,
|
|
103
|
+
loadProjectRoadmapMode,
|
|
104
|
+
loadTrackerClientConfigFromProject,
|
|
101
105
|
loadTrackerSyncConfig,
|
|
102
106
|
paginate,
|
|
103
107
|
scanForInjection,
|
|
104
108
|
serializeEnvelope,
|
|
105
109
|
writeTaint
|
|
106
|
-
} from "./chunk-
|
|
110
|
+
} from "./chunk-YNG7BWGB.js";
|
|
107
111
|
import {
|
|
108
112
|
Err,
|
|
109
113
|
Ok
|
|
@@ -708,7 +712,7 @@ ${skippedMsg}`
|
|
|
708
712
|
async function handleInitProject(input) {
|
|
709
713
|
const i = input;
|
|
710
714
|
try {
|
|
711
|
-
const { TemplateEngine } = await import("./engine-
|
|
715
|
+
const { TemplateEngine } = await import("./engine-LFQ2JSHY.js");
|
|
712
716
|
const engine = new TemplateEngine(resolveTemplatesDir());
|
|
713
717
|
const safePath = sanitizePath(i.path);
|
|
714
718
|
const detected = tryDetectFramework(engine, safePath, i);
|
|
@@ -730,7 +734,7 @@ var listPersonasDefinition = {
|
|
|
730
734
|
inputSchema: { type: "object", properties: {} }
|
|
731
735
|
};
|
|
732
736
|
async function handleListPersonas() {
|
|
733
|
-
const { listPersonas } = await import("./loader-
|
|
737
|
+
const { listPersonas } = await import("./loader-UB2A65DN.js");
|
|
734
738
|
const result = listPersonas(resolvePersonasDir());
|
|
735
739
|
return resultToMcpResponse(result);
|
|
736
740
|
}
|
|
@@ -754,10 +758,10 @@ async function handleGeneratePersonaArtifacts(input) {
|
|
|
754
758
|
if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.name)) {
|
|
755
759
|
return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.name}`)));
|
|
756
760
|
}
|
|
757
|
-
const { loadPersona } = await import("./loader-
|
|
758
|
-
const { generateRuntime } = await import("./runtime-
|
|
759
|
-
const { generateAgentsMd } = await import("./agents-md-
|
|
760
|
-
const { generateCIWorkflow } = await import("./ci-workflow-
|
|
761
|
+
const { loadPersona } = await import("./loader-UB2A65DN.js");
|
|
762
|
+
const { generateRuntime } = await import("./runtime-TQQT2MWQ.js");
|
|
763
|
+
const { generateAgentsMd } = await import("./agents-md-5JG3AE5A.js");
|
|
764
|
+
const { generateCIWorkflow } = await import("./ci-workflow-ZO6FPO3V.js");
|
|
761
765
|
const personasDir = resolvePersonasDir();
|
|
762
766
|
const filePath = path3.join(personasDir, `${input.name}.yaml`);
|
|
763
767
|
if (!filePath.startsWith(personasDir)) {
|
|
@@ -812,7 +816,7 @@ async function handleRunPersona(input) {
|
|
|
812
816
|
if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.persona)) {
|
|
813
817
|
return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.persona}`)));
|
|
814
818
|
}
|
|
815
|
-
const { loadPersona } = await import("./loader-
|
|
819
|
+
const { loadPersona } = await import("./loader-UB2A65DN.js");
|
|
816
820
|
const { runPersona } = await import("./runner-AAEF2TXY.js");
|
|
817
821
|
const { executeSkill } = await import("./skill-executor-MOCUIAYS.js");
|
|
818
822
|
const personasDir = resolvePersonasDir();
|
|
@@ -1257,7 +1261,7 @@ function loadOrGenerateProfile(projectRoot) {
|
|
|
1257
1261
|
// src/mcp/tools/event-emitter.ts
|
|
1258
1262
|
async function emitSkillEvent(projectPath, event) {
|
|
1259
1263
|
try {
|
|
1260
|
-
const { emitEvent } = await import("./dist-
|
|
1264
|
+
const { emitEvent } = await import("./dist-ZS3Y3YWP.js");
|
|
1261
1265
|
await emitEvent(projectPath, event);
|
|
1262
1266
|
} catch {
|
|
1263
1267
|
}
|
|
@@ -1529,7 +1533,7 @@ async function autoSyncRoadmap(projectPath) {
|
|
|
1529
1533
|
try {
|
|
1530
1534
|
const roadmapFile = path10.join(projectPath, "docs", "roadmap.md");
|
|
1531
1535
|
if (!fs9.existsSync(roadmapFile)) return;
|
|
1532
|
-
const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-
|
|
1536
|
+
const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-ZS3Y3YWP.js");
|
|
1533
1537
|
const raw = fs9.readFileSync(roadmapFile, "utf-8");
|
|
1534
1538
|
const parseResult = parseRoadmap(raw);
|
|
1535
1539
|
if (!parseResult.ok) return;
|
|
@@ -1559,16 +1563,16 @@ async function triggerExternalSync(projectPath, roadmapFile) {
|
|
|
1559
1563
|
console.warn("[roadmap-sync] GITHUB_TOKEN not found \u2014 external sync skipped");
|
|
1560
1564
|
return;
|
|
1561
1565
|
}
|
|
1562
|
-
const { fullSync, GitHubIssuesSyncAdapter } = await import("./dist-
|
|
1566
|
+
const { fullSync, GitHubIssuesSyncAdapter } = await import("./dist-ZS3Y3YWP.js");
|
|
1563
1567
|
const adapter = new GitHubIssuesSyncAdapter({
|
|
1564
1568
|
token,
|
|
1565
1569
|
config: trackerConfig
|
|
1566
1570
|
});
|
|
1567
1571
|
const result = await fullSync(roadmapFile, adapter, trackerConfig);
|
|
1568
1572
|
if (result.errors.length > 0) {
|
|
1569
|
-
for (const
|
|
1573
|
+
for (const err2 of result.errors) {
|
|
1570
1574
|
console.error(
|
|
1571
|
-
`[roadmap-sync] External sync error for ${
|
|
1575
|
+
`[roadmap-sync] External sync error for ${err2.featureOrId}: ${err2.error.message}`
|
|
1572
1576
|
);
|
|
1573
1577
|
}
|
|
1574
1578
|
}
|
|
@@ -1656,12 +1660,12 @@ var manageStateDefinition = {
|
|
|
1656
1660
|
}
|
|
1657
1661
|
};
|
|
1658
1662
|
async function handleShow(projectPath, input) {
|
|
1659
|
-
const { loadState } = await import("./dist-
|
|
1663
|
+
const { loadState } = await import("./dist-ZS3Y3YWP.js");
|
|
1660
1664
|
return resultToMcpResponse(await loadState(projectPath, input.stream, input.session));
|
|
1661
1665
|
}
|
|
1662
1666
|
async function handleLearn(projectPath, input) {
|
|
1663
1667
|
if (!input.learning) return mcpError("Error: learning is required for learn action");
|
|
1664
|
-
const { appendLearning } = await import("./dist-
|
|
1668
|
+
const { appendLearning } = await import("./dist-ZS3Y3YWP.js");
|
|
1665
1669
|
const result = await appendLearning(
|
|
1666
1670
|
projectPath,
|
|
1667
1671
|
input.learning,
|
|
@@ -1676,7 +1680,7 @@ async function handleLearn(projectPath, input) {
|
|
|
1676
1680
|
async function handleFailure(projectPath, input) {
|
|
1677
1681
|
if (!input.description) return mcpError("Error: description is required for failure action");
|
|
1678
1682
|
if (!input.failureType) return mcpError("Error: failureType is required for failure action");
|
|
1679
|
-
const { appendFailure } = await import("./dist-
|
|
1683
|
+
const { appendFailure } = await import("./dist-ZS3Y3YWP.js");
|
|
1680
1684
|
const result = await appendFailure(
|
|
1681
1685
|
projectPath,
|
|
1682
1686
|
input.description,
|
|
@@ -1695,19 +1699,19 @@ async function handleFailure(projectPath, input) {
|
|
|
1695
1699
|
return resultToMcpResponse(Ok({ recorded: true }));
|
|
1696
1700
|
}
|
|
1697
1701
|
async function handleArchive(projectPath, input) {
|
|
1698
|
-
const { archiveFailures } = await import("./dist-
|
|
1702
|
+
const { archiveFailures } = await import("./dist-ZS3Y3YWP.js");
|
|
1699
1703
|
const result = await archiveFailures(projectPath, input.stream, input.session);
|
|
1700
1704
|
if (!result.ok) return resultToMcpResponse(result);
|
|
1701
1705
|
return resultToMcpResponse(Ok({ archived: true }));
|
|
1702
1706
|
}
|
|
1703
1707
|
async function handleReset(projectPath, input) {
|
|
1704
|
-
const { saveState, DEFAULT_STATE } = await import("./dist-
|
|
1708
|
+
const { saveState, DEFAULT_STATE } = await import("./dist-ZS3Y3YWP.js");
|
|
1705
1709
|
const result = await saveState(projectPath, { ...DEFAULT_STATE }, input.stream, input.session);
|
|
1706
1710
|
if (!result.ok) return resultToMcpResponse(result);
|
|
1707
1711
|
return resultToMcpResponse(Ok({ reset: true }));
|
|
1708
1712
|
}
|
|
1709
1713
|
async function handleGate(projectPath, input) {
|
|
1710
|
-
const { runMechanicalGate } = await import("./dist-
|
|
1714
|
+
const { runMechanicalGate } = await import("./dist-ZS3Y3YWP.js");
|
|
1711
1715
|
const result = await runMechanicalGate(projectPath);
|
|
1712
1716
|
if (result.ok) {
|
|
1713
1717
|
await emitSkillEvent(projectPath, {
|
|
@@ -1727,7 +1731,7 @@ async function handleGate(projectPath, input) {
|
|
|
1727
1731
|
}
|
|
1728
1732
|
async function handleSaveHandoff(projectPath, input) {
|
|
1729
1733
|
if (!input.handoff) return mcpError("Error: handoff is required for save-handoff action");
|
|
1730
|
-
const { saveHandoff } = await import("./dist-
|
|
1734
|
+
const { saveHandoff } = await import("./dist-ZS3Y3YWP.js");
|
|
1731
1735
|
const result = await saveHandoff(
|
|
1732
1736
|
projectPath,
|
|
1733
1737
|
input.handoff,
|
|
@@ -1749,7 +1753,7 @@ async function handleSaveHandoff(projectPath, input) {
|
|
|
1749
1753
|
return resultToMcpResponse(Ok({ saved: true }));
|
|
1750
1754
|
}
|
|
1751
1755
|
async function handleLoadHandoff(projectPath, input) {
|
|
1752
|
-
const { loadHandoff } = await import("./dist-
|
|
1756
|
+
const { loadHandoff } = await import("./dist-ZS3Y3YWP.js");
|
|
1753
1757
|
return resultToMcpResponse(await loadHandoff(projectPath, input.stream, input.session));
|
|
1754
1758
|
}
|
|
1755
1759
|
async function handleAppendEntry(projectPath, input) {
|
|
@@ -1757,7 +1761,7 @@ async function handleAppendEntry(projectPath, input) {
|
|
|
1757
1761
|
if (!input.authorSkill) return mcpError("Error: authorSkill is required for append_entry action");
|
|
1758
1762
|
if (!input.content) return mcpError("Error: content is required for append_entry action");
|
|
1759
1763
|
if (input.session) {
|
|
1760
|
-
const { appendSessionEntry } = await import("./dist-
|
|
1764
|
+
const { appendSessionEntry } = await import("./dist-ZS3Y3YWP.js");
|
|
1761
1765
|
const result = await appendSessionEntry(
|
|
1762
1766
|
projectPath,
|
|
1763
1767
|
input.session,
|
|
@@ -1770,7 +1774,7 @@ async function handleAppendEntry(projectPath, input) {
|
|
|
1770
1774
|
if (input.section !== "decisions") {
|
|
1771
1775
|
return mcpError("Error: session is required for non-decisions sections");
|
|
1772
1776
|
}
|
|
1773
|
-
const { loadState, saveState } = await import("./dist-
|
|
1777
|
+
const { loadState, saveState } = await import("./dist-ZS3Y3YWP.js");
|
|
1774
1778
|
const lr = await loadState(projectPath, input.stream);
|
|
1775
1779
|
if (!lr.ok) return resultToMcpResponse(lr);
|
|
1776
1780
|
lr.value.decisions.push({
|
|
@@ -1788,7 +1792,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
|
|
|
1788
1792
|
if (!input.entryId) return mcpError("Error: entryId is required for update_entry_status action");
|
|
1789
1793
|
if (!input.newStatus)
|
|
1790
1794
|
return mcpError("Error: newStatus is required for update_entry_status action");
|
|
1791
|
-
const { updateSessionEntryStatus } = await import("./dist-
|
|
1795
|
+
const { updateSessionEntryStatus } = await import("./dist-ZS3Y3YWP.js");
|
|
1792
1796
|
const result = await updateSessionEntryStatus(
|
|
1793
1797
|
projectPath,
|
|
1794
1798
|
input.session,
|
|
@@ -1801,7 +1805,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
|
|
|
1801
1805
|
async function handleReadSection(projectPath, input) {
|
|
1802
1806
|
if (!input.session) return mcpError("Error: session is required for read_section action");
|
|
1803
1807
|
if (!input.section) return mcpError("Error: section is required for read_section action");
|
|
1804
|
-
const { readSessionSection } = await import("./dist-
|
|
1808
|
+
const { readSessionSection } = await import("./dist-ZS3Y3YWP.js");
|
|
1805
1809
|
const result = await readSessionSection(
|
|
1806
1810
|
projectPath,
|
|
1807
1811
|
input.session,
|
|
@@ -1811,13 +1815,13 @@ async function handleReadSection(projectPath, input) {
|
|
|
1811
1815
|
}
|
|
1812
1816
|
async function handleReadSections(projectPath, input) {
|
|
1813
1817
|
if (!input.session) return mcpError("Error: session is required for read_sections action");
|
|
1814
|
-
const { readSessionSections } = await import("./dist-
|
|
1818
|
+
const { readSessionSections } = await import("./dist-ZS3Y3YWP.js");
|
|
1815
1819
|
const result = await readSessionSections(projectPath, input.session);
|
|
1816
1820
|
return resultToMcpResponse(result);
|
|
1817
1821
|
}
|
|
1818
1822
|
async function handleArchiveSession(projectPath, input) {
|
|
1819
1823
|
if (!input.session) return mcpError("Error: session is required for archive_session action");
|
|
1820
|
-
const { archiveSession } = await import("./dist-
|
|
1824
|
+
const { archiveSession } = await import("./dist-ZS3Y3YWP.js");
|
|
1821
1825
|
const result = await archiveSession(projectPath, input.session);
|
|
1822
1826
|
if (!result.ok) return resultToMcpResponse(result);
|
|
1823
1827
|
await autoSyncRoadmap(projectPath);
|
|
@@ -1897,7 +1901,7 @@ var listStreamsDefinition = {
|
|
|
1897
1901
|
};
|
|
1898
1902
|
async function handleListStreams(input) {
|
|
1899
1903
|
try {
|
|
1900
|
-
const { listStreams, loadStreamIndex } = await import("./dist-
|
|
1904
|
+
const { listStreams, loadStreamIndex } = await import("./dist-ZS3Y3YWP.js");
|
|
1901
1905
|
const projectPath = sanitizePath(input.path);
|
|
1902
1906
|
const indexResult = await loadStreamIndex(projectPath);
|
|
1903
1907
|
const streamsResult = await listStreams(projectPath);
|
|
@@ -1935,7 +1939,7 @@ var checkPhaseGateDefinition = {
|
|
|
1935
1939
|
};
|
|
1936
1940
|
async function handleCheckPhaseGate(input) {
|
|
1937
1941
|
try {
|
|
1938
|
-
const { runCheckPhaseGate } = await import("./check-phase-gate-
|
|
1942
|
+
const { runCheckPhaseGate } = await import("./check-phase-gate-BZU4DGF3.js");
|
|
1939
1943
|
const result = await runCheckPhaseGate({ cwd: sanitizePath(input.path) });
|
|
1940
1944
|
if (result.ok) {
|
|
1941
1945
|
return { content: [{ type: "text", text: JSON.stringify(result.value) }] };
|
|
@@ -1991,7 +1995,7 @@ async function handleValidateCrossCheck(input) {
|
|
|
1991
1995
|
};
|
|
1992
1996
|
}
|
|
1993
1997
|
try {
|
|
1994
|
-
const { runCrossCheck } = await import("./validate-cross-check-
|
|
1998
|
+
const { runCrossCheck } = await import("./validate-cross-check-F5YQVXLT.js");
|
|
1995
1999
|
const specsDir = path11.resolve(projectPath, input.specsDir ?? "docs/specs");
|
|
1996
2000
|
if (!specsDir.startsWith(projectPath)) {
|
|
1997
2001
|
return {
|
|
@@ -2758,7 +2762,7 @@ async function handleGenerateSlashCommands(input) {
|
|
|
2758
2762
|
// src/mcp/resources/state.ts
|
|
2759
2763
|
async function getStateResource(projectRoot) {
|
|
2760
2764
|
try {
|
|
2761
|
-
const { loadState, migrateToStreams } = await import("./dist-
|
|
2765
|
+
const { loadState, migrateToStreams } = await import("./dist-ZS3Y3YWP.js");
|
|
2762
2766
|
await migrateToStreams(projectRoot);
|
|
2763
2767
|
const result = await loadState(projectRoot);
|
|
2764
2768
|
if (result.ok) {
|
|
@@ -2876,7 +2880,7 @@ async function handleQueryGraph(input) {
|
|
|
2876
2880
|
const projectPath = sanitizePath(input.path);
|
|
2877
2881
|
const store = await loadGraphStore(projectPath);
|
|
2878
2882
|
if (!store) return graphNotFoundError();
|
|
2879
|
-
const { ContextQL } = await import("./dist-
|
|
2883
|
+
const { ContextQL } = await import("./dist-SQAOKWXM.js");
|
|
2880
2884
|
const cql = new ContextQL(store);
|
|
2881
2885
|
const result = cql.execute({
|
|
2882
2886
|
rootNodeIds: input.rootNodeIds,
|
|
@@ -2958,7 +2962,7 @@ async function handleSearchSimilar(input) {
|
|
|
2958
2962
|
const projectPath = sanitizePath(input.path);
|
|
2959
2963
|
const store = await loadGraphStore(projectPath);
|
|
2960
2964
|
if (!store) return graphNotFoundError();
|
|
2961
|
-
const { FusionLayer } = await import("./dist-
|
|
2965
|
+
const { FusionLayer } = await import("./dist-SQAOKWXM.js");
|
|
2962
2966
|
const fusion = new FusionLayer(store);
|
|
2963
2967
|
const results = fusion.search(input.query, input.topK ?? 10);
|
|
2964
2968
|
if (input.mode === "summary") {
|
|
@@ -3013,7 +3017,7 @@ async function handleFindContextFor(input) {
|
|
|
3013
3017
|
const projectPath = sanitizePath(input.path);
|
|
3014
3018
|
const store = await loadGraphStore(projectPath);
|
|
3015
3019
|
if (!store) return graphNotFoundError();
|
|
3016
|
-
const { FusionLayer, ContextQL } = await import("./dist-
|
|
3020
|
+
const { FusionLayer, ContextQL } = await import("./dist-SQAOKWXM.js");
|
|
3017
3021
|
const fusion = new FusionLayer(store);
|
|
3018
3022
|
const cql = new ContextQL(store);
|
|
3019
3023
|
const tokenBudget = input.tokenBudget ?? 4e3;
|
|
@@ -3118,7 +3122,7 @@ async function handleGetRelationships(input) {
|
|
|
3118
3122
|
const projectPath = sanitizePath(input.path);
|
|
3119
3123
|
const store = await loadGraphStore(projectPath);
|
|
3120
3124
|
if (!store) return graphNotFoundError();
|
|
3121
|
-
const { ContextQL } = await import("./dist-
|
|
3125
|
+
const { ContextQL } = await import("./dist-SQAOKWXM.js");
|
|
3122
3126
|
const cql = new ContextQL(store);
|
|
3123
3127
|
const direction = input.direction ?? "both";
|
|
3124
3128
|
const bidirectional = direction === "both" || direction === "inbound";
|
|
@@ -3236,7 +3240,7 @@ async function handleGetImpact(input) {
|
|
|
3236
3240
|
const projectPath = sanitizePath(input.path);
|
|
3237
3241
|
const store = await loadGraphStore(projectPath);
|
|
3238
3242
|
if (!store) return graphNotFoundError();
|
|
3239
|
-
const { ContextQL } = await import("./dist-
|
|
3243
|
+
const { ContextQL } = await import("./dist-SQAOKWXM.js");
|
|
3240
3244
|
let targetNodeId = input.nodeId;
|
|
3241
3245
|
if (!targetNodeId && input.filePath) {
|
|
3242
3246
|
const fileNodes = store.findNodes({ type: "file" });
|
|
@@ -3368,7 +3372,7 @@ async function handleIngestSource(input) {
|
|
|
3368
3372
|
try {
|
|
3369
3373
|
const projectPath = sanitizePath(input.path);
|
|
3370
3374
|
const graphDir = path15.join(projectPath, ".harness", "graph");
|
|
3371
|
-
const { GraphStore, CodeIngestor, TopologicalLinker, KnowledgeIngestor, GitIngestor } = await import("./dist-
|
|
3375
|
+
const { GraphStore, CodeIngestor, TopologicalLinker, KnowledgeIngestor, GitIngestor } = await import("./dist-SQAOKWXM.js");
|
|
3372
3376
|
const fs17 = await import("fs/promises");
|
|
3373
3377
|
await fs17.mkdir(graphDir, { recursive: true });
|
|
3374
3378
|
const store = new GraphStore();
|
|
@@ -3392,13 +3396,13 @@ async function handleIngestSource(input) {
|
|
|
3392
3396
|
results.push(gitResult);
|
|
3393
3397
|
}
|
|
3394
3398
|
if (input.source === "business-signals" || input.source === "all") {
|
|
3395
|
-
const { createExtractionRunner } = await import("./dist-
|
|
3399
|
+
const { createExtractionRunner } = await import("./dist-SQAOKWXM.js");
|
|
3396
3400
|
const extractedDir = path15.join(projectPath, ".harness", "knowledge", "extracted");
|
|
3397
3401
|
const signalsResult = await createExtractionRunner().run(projectPath, store, extractedDir);
|
|
3398
3402
|
results.push(signalsResult);
|
|
3399
3403
|
}
|
|
3400
3404
|
if (input.source === "diagrams" || input.source === "all") {
|
|
3401
|
-
const { DiagramParser } = await import("./dist-
|
|
3405
|
+
const { DiagramParser } = await import("./dist-SQAOKWXM.js");
|
|
3402
3406
|
const diagramParser = new DiagramParser(store);
|
|
3403
3407
|
const diagramResult = await diagramParser.ingest(projectPath);
|
|
3404
3408
|
results.push(diagramResult);
|
|
@@ -3464,7 +3468,7 @@ async function handleDetectAnomalies(input) {
|
|
|
3464
3468
|
const projectPath = sanitizePath(input.path);
|
|
3465
3469
|
const store = await loadGraphStore(projectPath);
|
|
3466
3470
|
if (!store) return graphNotFoundError();
|
|
3467
|
-
const { GraphAnomalyAdapter } = await import("./dist-
|
|
3471
|
+
const { GraphAnomalyAdapter } = await import("./dist-SQAOKWXM.js");
|
|
3468
3472
|
const adapter = new GraphAnomalyAdapter(store);
|
|
3469
3473
|
const report = adapter.detect({
|
|
3470
3474
|
...input.threshold !== void 0 && { threshold: input.threshold },
|
|
@@ -3513,7 +3517,7 @@ async function handleAskGraph(input) {
|
|
|
3513
3517
|
const projectPath = sanitizePath(input.path);
|
|
3514
3518
|
const store = await loadGraphStore(projectPath);
|
|
3515
3519
|
if (!store) return graphNotFoundError();
|
|
3516
|
-
const { askGraph } = await import("./dist-
|
|
3520
|
+
const { askGraph } = await import("./dist-SQAOKWXM.js");
|
|
3517
3521
|
const result = await askGraph(store, input.question);
|
|
3518
3522
|
return {
|
|
3519
3523
|
content: [{ type: "text", text: JSON.stringify(result) }]
|
|
@@ -3577,7 +3581,7 @@ async function handleComputeBlastRadius(input) {
|
|
|
3577
3581
|
const projectPath = sanitizePath(input.path);
|
|
3578
3582
|
const store = await loadGraphStore(projectPath);
|
|
3579
3583
|
if (!store) return graphNotFoundError();
|
|
3580
|
-
const { CascadeSimulator } = await import("./dist-
|
|
3584
|
+
const { CascadeSimulator } = await import("./dist-SQAOKWXM.js");
|
|
3581
3585
|
let targetNodeId = input.nodeId;
|
|
3582
3586
|
if (!targetNodeId && input.file) {
|
|
3583
3587
|
const fileNodes = store.findNodes({ type: "file" });
|
|
@@ -3778,7 +3782,7 @@ var generateAgentDefinitionsDefinition = {
|
|
|
3778
3782
|
}
|
|
3779
3783
|
};
|
|
3780
3784
|
async function handleGenerateAgentDefinitions(input) {
|
|
3781
|
-
const { generateAgentDefinitions } = await import("./generate-agent-definitions-
|
|
3785
|
+
const { generateAgentDefinitions } = await import("./generate-agent-definitions-WVCOZDKI.js");
|
|
3782
3786
|
const platforms = input.platform === "all" || !input.platform ? ["claude-code", "gemini-cli"] : [input.platform];
|
|
3783
3787
|
const results = generateAgentDefinitions({
|
|
3784
3788
|
platforms: [...platforms],
|
|
@@ -3789,8 +3793,151 @@ async function handleGenerateAgentDefinitions(input) {
|
|
|
3789
3793
|
}
|
|
3790
3794
|
|
|
3791
3795
|
// src/mcp/tools/roadmap.ts
|
|
3796
|
+
init_dist();
|
|
3792
3797
|
import * as fs14 from "fs";
|
|
3793
3798
|
import * as path17 from "path";
|
|
3799
|
+
|
|
3800
|
+
// src/mcp/tools/roadmap-file-less.ts
|
|
3801
|
+
init_dist();
|
|
3802
|
+
var ok = (text) => ({ content: [{ type: "text", text }] });
|
|
3803
|
+
var err = (text) => ({ content: [{ type: "text", text }], isError: true });
|
|
3804
|
+
async function handleManageRoadmapFileLess(input, client) {
|
|
3805
|
+
switch (input.action) {
|
|
3806
|
+
case "show":
|
|
3807
|
+
return handleShow2(input, client);
|
|
3808
|
+
case "query":
|
|
3809
|
+
return handleQuery(input, client);
|
|
3810
|
+
case "add":
|
|
3811
|
+
return handleAdd(input, client);
|
|
3812
|
+
case "update":
|
|
3813
|
+
return handleUpdate(input, client);
|
|
3814
|
+
case "remove":
|
|
3815
|
+
return handleRemove(input, client);
|
|
3816
|
+
case "sync":
|
|
3817
|
+
return handleSync();
|
|
3818
|
+
default:
|
|
3819
|
+
return err(`Error: unknown action`);
|
|
3820
|
+
}
|
|
3821
|
+
}
|
|
3822
|
+
async function handleShow2(input, client) {
|
|
3823
|
+
const r = await client.fetchAll();
|
|
3824
|
+
if (!r.ok) return err(`Error: ${r.error.message}`);
|
|
3825
|
+
let features = r.value.features;
|
|
3826
|
+
if (input.milestone) {
|
|
3827
|
+
features = features.filter((f) => f.milestone === input.milestone);
|
|
3828
|
+
}
|
|
3829
|
+
if (input.status) {
|
|
3830
|
+
features = features.filter((f) => f.status === input.status);
|
|
3831
|
+
}
|
|
3832
|
+
return ok(renderRoadmap(features));
|
|
3833
|
+
}
|
|
3834
|
+
async function handleQuery(input, client) {
|
|
3835
|
+
const filter = input.filter;
|
|
3836
|
+
if (!filter) return err("Error: query requires a filter");
|
|
3837
|
+
const r = await client.fetchAll();
|
|
3838
|
+
if (!r.ok) return err(`Error: ${r.error.message}`);
|
|
3839
|
+
let features = r.value.features;
|
|
3840
|
+
if (filter.startsWith("milestone:")) {
|
|
3841
|
+
const ms = filter.slice("milestone:".length);
|
|
3842
|
+
features = features.filter((f) => f.milestone === ms);
|
|
3843
|
+
} else if (filter === "blocked") {
|
|
3844
|
+
features = features.filter((f) => f.blockedBy.length > 0);
|
|
3845
|
+
} else {
|
|
3846
|
+
features = features.filter((f) => f.status === filter);
|
|
3847
|
+
}
|
|
3848
|
+
return ok(renderRoadmap(features));
|
|
3849
|
+
}
|
|
3850
|
+
async function handleAdd(input, client) {
|
|
3851
|
+
if (!input.feature) return err("Error: add requires feature name");
|
|
3852
|
+
const newFeature = {
|
|
3853
|
+
name: input.feature,
|
|
3854
|
+
summary: input.summary ?? input.feature,
|
|
3855
|
+
status: input.status ?? "planned"
|
|
3856
|
+
};
|
|
3857
|
+
if (input.spec !== void 0) newFeature.spec = input.spec;
|
|
3858
|
+
if (input.plans !== void 0) newFeature.plans = input.plans;
|
|
3859
|
+
if (input.blocked_by !== void 0) newFeature.blockedBy = input.blocked_by;
|
|
3860
|
+
if (input.milestone !== void 0) newFeature.milestone = input.milestone;
|
|
3861
|
+
if (input.assignee !== void 0) newFeature.assignee = input.assignee;
|
|
3862
|
+
const r = await client.create(newFeature);
|
|
3863
|
+
if (!r.ok) return err(`Error: ${r.error.message}`);
|
|
3864
|
+
return ok(`Added feature: ${r.value.name} (${r.value.externalId})`);
|
|
3865
|
+
}
|
|
3866
|
+
async function handleUpdate(input, client) {
|
|
3867
|
+
if (!input.feature) return err("Error: update requires feature name");
|
|
3868
|
+
const found = await resolveFeatureByName(client, input.feature);
|
|
3869
|
+
if (!found.ok) return err(found.error);
|
|
3870
|
+
const patch = {};
|
|
3871
|
+
if (input.status !== void 0) patch.status = input.status;
|
|
3872
|
+
if (input.summary !== void 0) patch.summary = input.summary;
|
|
3873
|
+
if (input.spec !== void 0) patch.spec = input.spec;
|
|
3874
|
+
if (input.plans !== void 0) patch.plans = input.plans;
|
|
3875
|
+
if (input.blocked_by !== void 0) patch.blockedBy = input.blocked_by;
|
|
3876
|
+
if (input.assignee !== void 0) patch.assignee = input.assignee;
|
|
3877
|
+
const r = await client.update(found.value.externalId, patch);
|
|
3878
|
+
if (!r.ok) {
|
|
3879
|
+
if (r.error instanceof ConflictError) {
|
|
3880
|
+
return err(`Error: conflict on ${r.error.externalId}: ${JSON.stringify(r.error.diff)}`);
|
|
3881
|
+
}
|
|
3882
|
+
return err(`Error: ${r.error.message}`);
|
|
3883
|
+
}
|
|
3884
|
+
return ok(
|
|
3885
|
+
`Updated feature: ${r.value.name}
|
|
3886
|
+
|
|
3887
|
+
Note: cascade dropped \u2014 file-less mode does not run syncRoadmap.`
|
|
3888
|
+
);
|
|
3889
|
+
}
|
|
3890
|
+
async function handleRemove(input, client) {
|
|
3891
|
+
if (!input.feature) return err("Error: remove requires feature name");
|
|
3892
|
+
const found = await resolveFeatureByName(client, input.feature);
|
|
3893
|
+
if (!found.ok) return err(found.error);
|
|
3894
|
+
const r = await client.update(found.value.externalId, { status: "done" });
|
|
3895
|
+
if (!r.ok) {
|
|
3896
|
+
if (r.error instanceof ConflictError) {
|
|
3897
|
+
return err(`Error: conflict on ${r.error.externalId}: ${JSON.stringify(r.error.diff)}`);
|
|
3898
|
+
}
|
|
3899
|
+
return err(`Error: ${r.error.message}`);
|
|
3900
|
+
}
|
|
3901
|
+
client.appendHistory(found.value.externalId, {
|
|
3902
|
+
type: "completed",
|
|
3903
|
+
at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
3904
|
+
actor: "manage_roadmap",
|
|
3905
|
+
details: {
|
|
3906
|
+
note: "removed via manage_roadmap (file-less translates remove to complete)"
|
|
3907
|
+
}
|
|
3908
|
+
}).catch(() => {
|
|
3909
|
+
});
|
|
3910
|
+
return ok(`Removed feature: ${found.value.name} (translated to status:done in file-less mode)`);
|
|
3911
|
+
}
|
|
3912
|
+
function handleSync() {
|
|
3913
|
+
return ok("Roadmap is up to date (file-less mode; tracker is canonical).");
|
|
3914
|
+
}
|
|
3915
|
+
async function resolveFeatureByName(client, name) {
|
|
3916
|
+
const r = await client.fetchAll();
|
|
3917
|
+
if (!r.ok) return { ok: false, error: `Error: ${r.error.message}` };
|
|
3918
|
+
const f = r.value.features.find((x) => x.name === name);
|
|
3919
|
+
if (!f) return { ok: false, error: `Error: feature "${name}" not found` };
|
|
3920
|
+
return { ok: true, value: f };
|
|
3921
|
+
}
|
|
3922
|
+
function renderRoadmap(features) {
|
|
3923
|
+
if (features.length === 0) return "(no features)";
|
|
3924
|
+
const lines = [];
|
|
3925
|
+
for (const f of features) {
|
|
3926
|
+
const parts = [
|
|
3927
|
+
`- ${f.name}`,
|
|
3928
|
+
`status: ${f.status}`,
|
|
3929
|
+
f.milestone ? `milestone: ${f.milestone}` : null,
|
|
3930
|
+
f.priority ? `priority: ${f.priority}` : null,
|
|
3931
|
+
f.assignee ? `assignee: ${f.assignee}` : null,
|
|
3932
|
+
f.externalId ? `externalId: ${f.externalId}` : null
|
|
3933
|
+
].filter((x) => x !== null);
|
|
3934
|
+
lines.push(parts.join(" | "));
|
|
3935
|
+
if (f.summary) lines.push(` ${f.summary}`);
|
|
3936
|
+
}
|
|
3937
|
+
return lines.join("\n");
|
|
3938
|
+
}
|
|
3939
|
+
|
|
3940
|
+
// src/mcp/tools/roadmap.ts
|
|
3794
3941
|
var manageRoadmapDefinition = {
|
|
3795
3942
|
name: "manage_roadmap",
|
|
3796
3943
|
description: "Manage the project roadmap: show, add, update, remove, sync features, or query by filter. Reads and writes docs/roadmap.md.",
|
|
@@ -3876,7 +4023,7 @@ function roadmapNotFoundError() {
|
|
|
3876
4023
|
isError: true
|
|
3877
4024
|
};
|
|
3878
4025
|
}
|
|
3879
|
-
function
|
|
4026
|
+
function handleShow3(projectPath, input, deps) {
|
|
3880
4027
|
const { parseRoadmap, Ok: Ok2 } = deps;
|
|
3881
4028
|
const raw = readRoadmapFile(projectPath);
|
|
3882
4029
|
if (raw === null) return roadmapNotFoundError();
|
|
@@ -3936,7 +4083,7 @@ function buildFeatureFromInput(input) {
|
|
|
3936
4083
|
updatedAt: null
|
|
3937
4084
|
};
|
|
3938
4085
|
}
|
|
3939
|
-
function
|
|
4086
|
+
function handleAdd2(projectPath, input, deps) {
|
|
3940
4087
|
const { parseRoadmap, serializeRoadmap, Ok: Ok2 } = deps;
|
|
3941
4088
|
const validationError = validateAddFields(input);
|
|
3942
4089
|
if (validationError) return validationError;
|
|
@@ -3959,7 +4106,7 @@ function handleAdd(projectPath, input, deps) {
|
|
|
3959
4106
|
writeRoadmapFile(projectPath, serializeRoadmap(roadmap));
|
|
3960
4107
|
return resultToMcpResponse(Ok2(roadmap));
|
|
3961
4108
|
}
|
|
3962
|
-
function
|
|
4109
|
+
function handleUpdate2(projectPath, input, deps) {
|
|
3963
4110
|
const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges, Ok: Ok2 } = deps;
|
|
3964
4111
|
if (!input.feature) {
|
|
3965
4112
|
return {
|
|
@@ -4002,7 +4149,7 @@ function handleUpdate(projectPath, input, deps) {
|
|
|
4002
4149
|
writeRoadmapFile(projectPath, serializeRoadmap(roadmap));
|
|
4003
4150
|
return resultToMcpResponse(Ok2(roadmap));
|
|
4004
4151
|
}
|
|
4005
|
-
function
|
|
4152
|
+
function handleRemove2(projectPath, input, deps) {
|
|
4006
4153
|
const { parseRoadmap, serializeRoadmap, Ok: Ok2 } = deps;
|
|
4007
4154
|
if (!input.feature) {
|
|
4008
4155
|
return {
|
|
@@ -4034,7 +4181,7 @@ function handleRemove(projectPath, input, deps) {
|
|
|
4034
4181
|
writeRoadmapFile(projectPath, serializeRoadmap(roadmap));
|
|
4035
4182
|
return resultToMcpResponse(Ok2(roadmap));
|
|
4036
4183
|
}
|
|
4037
|
-
function
|
|
4184
|
+
function handleQuery2(projectPath, input, deps) {
|
|
4038
4185
|
const { parseRoadmap, Ok: Ok2 } = deps;
|
|
4039
4186
|
if (!input.filter) {
|
|
4040
4187
|
return {
|
|
@@ -4060,7 +4207,7 @@ function handleQuery(projectPath, input, deps) {
|
|
|
4060
4207
|
}
|
|
4061
4208
|
return resultToMcpResponse(Ok2(filtered));
|
|
4062
4209
|
}
|
|
4063
|
-
function
|
|
4210
|
+
function handleSync2(projectPath, input, deps) {
|
|
4064
4211
|
const { parseRoadmap, serializeRoadmap, syncRoadmap, Ok: Ok2 } = deps;
|
|
4065
4212
|
const raw = readRoadmapFile(projectPath);
|
|
4066
4213
|
if (raw === null) return roadmapNotFoundError();
|
|
@@ -4088,17 +4235,17 @@ var readOnlyActions = /* @__PURE__ */ new Set(["show", "query"]);
|
|
|
4088
4235
|
function dispatchAction(action, projectPath, input, deps) {
|
|
4089
4236
|
switch (action) {
|
|
4090
4237
|
case "show":
|
|
4091
|
-
return
|
|
4238
|
+
return handleShow3(projectPath, input, deps);
|
|
4092
4239
|
case "add":
|
|
4093
|
-
return
|
|
4240
|
+
return handleAdd2(projectPath, input, deps);
|
|
4094
4241
|
case "update":
|
|
4095
|
-
return
|
|
4242
|
+
return handleUpdate2(projectPath, input, deps);
|
|
4096
4243
|
case "remove":
|
|
4097
|
-
return
|
|
4244
|
+
return handleRemove2(projectPath, input, deps);
|
|
4098
4245
|
case "query":
|
|
4099
|
-
return
|
|
4246
|
+
return handleQuery2(projectPath, input, deps);
|
|
4100
4247
|
case "sync":
|
|
4101
|
-
return
|
|
4248
|
+
return handleSync2(projectPath, input, deps);
|
|
4102
4249
|
default:
|
|
4103
4250
|
return { content: [{ type: "text", text: `Error: unknown action` }], isError: true };
|
|
4104
4251
|
}
|
|
@@ -4109,10 +4256,29 @@ function shouldTriggerExternalSync(input, response) {
|
|
|
4109
4256
|
return true;
|
|
4110
4257
|
}
|
|
4111
4258
|
async function handleManageRoadmap(input) {
|
|
4259
|
+
const projectPathPre = sanitizePath(input.path);
|
|
4260
|
+
const mode = loadProjectRoadmapMode(projectPathPre);
|
|
4261
|
+
if (mode === "file-less") {
|
|
4262
|
+
const trackerCfg = loadTrackerClientConfigFromProject(projectPathPre);
|
|
4263
|
+
if (!trackerCfg.ok) {
|
|
4264
|
+
return {
|
|
4265
|
+
content: [{ type: "text", text: `Error: ${trackerCfg.error.message}` }],
|
|
4266
|
+
isError: true
|
|
4267
|
+
};
|
|
4268
|
+
}
|
|
4269
|
+
const clientResult = createTrackerClient(trackerCfg.value);
|
|
4270
|
+
if (!clientResult.ok) {
|
|
4271
|
+
return {
|
|
4272
|
+
content: [{ type: "text", text: `Error: ${clientResult.error.message}` }],
|
|
4273
|
+
isError: true
|
|
4274
|
+
};
|
|
4275
|
+
}
|
|
4276
|
+
return handleManageRoadmapFileLess(input, clientResult.value);
|
|
4277
|
+
}
|
|
4112
4278
|
try {
|
|
4113
|
-
const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges, assignFeature } = await import("./dist-
|
|
4279
|
+
const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges, assignFeature } = await import("./dist-ZS3Y3YWP.js");
|
|
4114
4280
|
const { Ok: Ok2 } = await import("./dist-3EWNRFFQ.js");
|
|
4115
|
-
const projectPath =
|
|
4281
|
+
const projectPath = projectPathPre;
|
|
4116
4282
|
const deps = {
|
|
4117
4283
|
parseRoadmap,
|
|
4118
4284
|
serializeRoadmap,
|
|
@@ -4549,7 +4715,7 @@ async function handleTransition(validInput, projectPath, id) {
|
|
|
4549
4715
|
const transition = transitionResult.data;
|
|
4550
4716
|
const prompt = renderTransition(transition);
|
|
4551
4717
|
try {
|
|
4552
|
-
const { saveHandoff } = await import("./dist-
|
|
4718
|
+
const { saveHandoff } = await import("./dist-ZS3Y3YWP.js");
|
|
4553
4719
|
await saveHandoff(
|
|
4554
4720
|
projectPath,
|
|
4555
4721
|
{
|
|
@@ -4630,7 +4796,7 @@ async function handleEmitInteraction(input) {
|
|
|
4630
4796
|
}
|
|
4631
4797
|
async function recordInteraction(projectPath, id, type, decision, stream) {
|
|
4632
4798
|
try {
|
|
4633
|
-
const { loadState, saveState } = await import("./dist-
|
|
4799
|
+
const { loadState, saveState } = await import("./dist-ZS3Y3YWP.js");
|
|
4634
4800
|
const stateResult = await loadState(projectPath, stream);
|
|
4635
4801
|
if (stateResult.ok) {
|
|
4636
4802
|
const state = stateResult.value;
|
|
@@ -4791,10 +4957,10 @@ async function handleGatherContext(input) {
|
|
|
4791
4957
|
input.include ?? ["state", "learnings", "handoff", "graph", "validation", "businessKnowledge"]
|
|
4792
4958
|
);
|
|
4793
4959
|
const errors = [];
|
|
4794
|
-
const statePromise = includeSet.has("state") ? import("./dist-
|
|
4960
|
+
const statePromise = includeSet.has("state") ? import("./dist-ZS3Y3YWP.js").then(
|
|
4795
4961
|
(core) => core.loadState(projectPath, void 0, input.session)
|
|
4796
4962
|
) : Promise.resolve(null);
|
|
4797
|
-
const learningsPromise = includeSet.has("learnings") ? import("./dist-
|
|
4963
|
+
const learningsPromise = includeSet.has("learnings") ? import("./dist-ZS3Y3YWP.js").then(
|
|
4798
4964
|
(core) => core.loadBudgetedLearnings(projectPath, {
|
|
4799
4965
|
intent: input.intent,
|
|
4800
4966
|
tokenBudget: input.learningsBudget ?? 1e3,
|
|
@@ -4803,14 +4969,14 @@ async function handleGatherContext(input) {
|
|
|
4803
4969
|
...input.depth !== void 0 && { depth: input.depth }
|
|
4804
4970
|
})
|
|
4805
4971
|
) : Promise.resolve(null);
|
|
4806
|
-
const handoffPromise = includeSet.has("handoff") ? import("./dist-
|
|
4972
|
+
const handoffPromise = includeSet.has("handoff") ? import("./dist-ZS3Y3YWP.js").then(
|
|
4807
4973
|
(core) => core.loadHandoff(projectPath, void 0, input.session)
|
|
4808
4974
|
) : Promise.resolve(null);
|
|
4809
4975
|
const graphPromise = includeSet.has("graph") ? (async () => {
|
|
4810
|
-
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-
|
|
4976
|
+
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-TJU4E7KL.js");
|
|
4811
4977
|
const store = await loadGraphStore2(projectPath);
|
|
4812
4978
|
if (!store) return null;
|
|
4813
|
-
const { FusionLayer, ContextQL } = await import("./dist-
|
|
4979
|
+
const { FusionLayer, ContextQL } = await import("./dist-SQAOKWXM.js");
|
|
4814
4980
|
const fusion = new FusionLayer(store);
|
|
4815
4981
|
const cql = new ContextQL(store);
|
|
4816
4982
|
const tokenBudget = input.tokenBudget ?? 4e3;
|
|
@@ -4847,11 +5013,11 @@ async function handleGatherContext(input) {
|
|
|
4847
5013
|
context: contextBlocks
|
|
4848
5014
|
};
|
|
4849
5015
|
})() : Promise.resolve(null);
|
|
4850
|
-
const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-
|
|
5016
|
+
const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-ZS3Y3YWP.js").then(
|
|
4851
5017
|
(core) => core.readSessionSections(projectPath, input.session)
|
|
4852
5018
|
) : Promise.resolve(null);
|
|
4853
5019
|
const shouldIncludeEvents = input.includeEvents !== void 0 ? input.includeEvents : includeSet.has("events") || !!input.session && !input.include;
|
|
4854
|
-
const eventsPromise = shouldIncludeEvents ? import("./dist-
|
|
5020
|
+
const eventsPromise = shouldIncludeEvents ? import("./dist-ZS3Y3YWP.js").then(async (core) => {
|
|
4855
5021
|
const result = await core.loadEvents(projectPath, {
|
|
4856
5022
|
session: input.session
|
|
4857
5023
|
});
|
|
@@ -4859,7 +5025,7 @@ async function handleGatherContext(input) {
|
|
|
4859
5025
|
return core.formatEventTimeline(result.value);
|
|
4860
5026
|
}) : Promise.resolve(null);
|
|
4861
5027
|
const validationPromise = includeSet.has("validation") ? (async () => {
|
|
4862
|
-
const { handleValidateProject: handleValidateProject2 } = await import("./validate-
|
|
5028
|
+
const { handleValidateProject: handleValidateProject2 } = await import("./validate-GW2DG64P.js");
|
|
4863
5029
|
const result = await handleValidateProject2({ path: projectPath });
|
|
4864
5030
|
const first = result.content[0];
|
|
4865
5031
|
return first ? JSON.parse(first.text) : null;
|
|
@@ -4962,7 +5128,7 @@ async function handleGatherContext(input) {
|
|
|
4962
5128
|
};
|
|
4963
5129
|
if (input.session) {
|
|
4964
5130
|
try {
|
|
4965
|
-
const core = await import("./dist-
|
|
5131
|
+
const core = await import("./dist-ZS3Y3YWP.js");
|
|
4966
5132
|
core.updateSessionIndex(
|
|
4967
5133
|
projectPath,
|
|
4968
5134
|
input.session,
|
|
@@ -5114,7 +5280,7 @@ async function handleReviewChanges(input) {
|
|
|
5114
5280
|
}
|
|
5115
5281
|
}
|
|
5116
5282
|
async function runQuickReview(projectPath, diff, diffLines, downgraded, offset, limit) {
|
|
5117
|
-
const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-
|
|
5283
|
+
const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-O3TZAPGX.js");
|
|
5118
5284
|
const result = await handleAnalyzeDiff2({ diff, path: projectPath });
|
|
5119
5285
|
const firstContent = result.content[0];
|
|
5120
5286
|
if (!firstContent) throw new Error("Empty analyze_diff response");
|
|
@@ -5149,7 +5315,7 @@ function extractFileCount(diffParsed) {
|
|
|
5149
5315
|
return files?.length ?? 0;
|
|
5150
5316
|
}
|
|
5151
5317
|
async function runStandardReview(projectPath, diff, diffLines, downgraded, offset, limit) {
|
|
5152
|
-
const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-
|
|
5318
|
+
const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-O3TZAPGX.js");
|
|
5153
5319
|
const [diffResult, reviewResult] = await Promise.all([
|
|
5154
5320
|
handleAnalyzeDiff2({ diff, path: projectPath }),
|
|
5155
5321
|
handleCreateSelfReview2({ path: projectPath, diff })
|
|
@@ -5184,7 +5350,7 @@ async function runStandardReview(projectPath, diff, diffLines, downgraded, offse
|
|
|
5184
5350
|
};
|
|
5185
5351
|
}
|
|
5186
5352
|
async function runDeepReview(projectPath, diff, diffLines, _downgraded, offset, limit) {
|
|
5187
|
-
const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-
|
|
5353
|
+
const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-VRDL5A7J.js");
|
|
5188
5354
|
const result = await handleRunCodeReview2({
|
|
5189
5355
|
path: projectPath,
|
|
5190
5356
|
diff,
|
|
@@ -5263,7 +5429,7 @@ async function handleCheckTaskIndependence(input) {
|
|
|
5263
5429
|
try {
|
|
5264
5430
|
const projectPath = sanitizePath(input.path);
|
|
5265
5431
|
const store = await loadGraphStore(projectPath);
|
|
5266
|
-
const { TaskIndependenceAnalyzer } = await import("./dist-
|
|
5432
|
+
const { TaskIndependenceAnalyzer } = await import("./dist-SQAOKWXM.js");
|
|
5267
5433
|
const analyzer = new TaskIndependenceAnalyzer(store ?? void 0);
|
|
5268
5434
|
const result = analyzer.analyze({
|
|
5269
5435
|
tasks: input.tasks,
|
|
@@ -5351,7 +5517,7 @@ async function handlePredictConflicts(input) {
|
|
|
5351
5517
|
try {
|
|
5352
5518
|
const projectPath = sanitizePath(input.path);
|
|
5353
5519
|
const store = await loadGraphStore(projectPath);
|
|
5354
|
-
const { ConflictPredictor } = await import("./dist-
|
|
5520
|
+
const { ConflictPredictor } = await import("./dist-SQAOKWXM.js");
|
|
5355
5521
|
const predictor = new ConflictPredictor(store ?? void 0);
|
|
5356
5522
|
const result = predictor.predict({
|
|
5357
5523
|
tasks: input.tasks,
|
|
@@ -5457,7 +5623,7 @@ async function handleDetectStaleConstraints(input) {
|
|
|
5457
5623
|
isError: true
|
|
5458
5624
|
};
|
|
5459
5625
|
}
|
|
5460
|
-
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-
|
|
5626
|
+
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-TJU4E7KL.js");
|
|
5461
5627
|
const store = await loadGraphStore2(projectPath);
|
|
5462
5628
|
if (!store) {
|
|
5463
5629
|
return {
|
|
@@ -5478,7 +5644,7 @@ async function handleDetectStaleConstraints(input) {
|
|
|
5478
5644
|
]
|
|
5479
5645
|
};
|
|
5480
5646
|
}
|
|
5481
|
-
const { detectStaleConstraints } = await import("./dist-
|
|
5647
|
+
const { detectStaleConstraints } = await import("./dist-ZS3Y3YWP.js");
|
|
5482
5648
|
const result = detectStaleConstraints(
|
|
5483
5649
|
store,
|
|
5484
5650
|
windowDays,
|
|
@@ -5598,10 +5764,10 @@ function countCriticalFindings(securityData) {
|
|
|
5598
5764
|
return findings.filter((f) => f.severity === "error").length;
|
|
5599
5765
|
}
|
|
5600
5766
|
async function runHealthChecks(projectPath) {
|
|
5601
|
-
const { handleAssessProject: handleAssessProject2 } = await import("./assess-project-
|
|
5602
|
-
const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-
|
|
5603
|
-
const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-
|
|
5604
|
-
const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-
|
|
5767
|
+
const { handleAssessProject: handleAssessProject2 } = await import("./assess-project-PBO6XFJC.js");
|
|
5768
|
+
const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-544ISXDI.js");
|
|
5769
|
+
const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-P62LCVJI.js");
|
|
5770
|
+
const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-IMFAE6MW.js");
|
|
5605
5771
|
const [assessResult, depsResult, entropyResult, securityResult] = await Promise.all([
|
|
5606
5772
|
handleAssessProject2({
|
|
5607
5773
|
path: projectPath,
|
|
@@ -5656,10 +5822,10 @@ function avg(values) {
|
|
|
5656
5822
|
}
|
|
5657
5823
|
async function runGraphMetrics(projectPath) {
|
|
5658
5824
|
try {
|
|
5659
|
-
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-
|
|
5825
|
+
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-TJU4E7KL.js");
|
|
5660
5826
|
const store = await loadGraphStore2(projectPath);
|
|
5661
5827
|
if (!store) return ZERO_METRICS;
|
|
5662
|
-
const { GraphCouplingAdapter, GraphComplexityAdapter, GraphAnomalyAdapter } = await import("./dist-
|
|
5828
|
+
const { GraphCouplingAdapter, GraphComplexityAdapter, GraphAnomalyAdapter } = await import("./dist-SQAOKWXM.js");
|
|
5663
5829
|
const couplingAdapter = new GraphCouplingAdapter(store);
|
|
5664
5830
|
const couplingData = couplingAdapter.computeCouplingData();
|
|
5665
5831
|
const files = couplingData.files;
|
|
@@ -6442,7 +6608,7 @@ async function handleGetDecayTrends(input) {
|
|
|
6442
6608
|
};
|
|
6443
6609
|
}
|
|
6444
6610
|
try {
|
|
6445
|
-
const core = await import("./dist-
|
|
6611
|
+
const core = await import("./dist-ZS3Y3YWP.js");
|
|
6446
6612
|
const { TimelineManager } = core;
|
|
6447
6613
|
const manager = new TimelineManager(projectPath);
|
|
6448
6614
|
const timeline = manager.load();
|
|
@@ -6577,7 +6743,7 @@ async function handleCodeOutline(input) {
|
|
|
6577
6743
|
};
|
|
6578
6744
|
}
|
|
6579
6745
|
try {
|
|
6580
|
-
const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-
|
|
6746
|
+
const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-ZS3Y3YWP.js");
|
|
6581
6747
|
const { stat } = await import("fs/promises");
|
|
6582
6748
|
const stats = await stat(targetPath).catch(() => null);
|
|
6583
6749
|
if (stats?.isFile()) {
|
|
@@ -6596,7 +6762,7 @@ async function handleCodeOutline(input) {
|
|
|
6596
6762
|
})
|
|
6597
6763
|
);
|
|
6598
6764
|
fileStats.sort((a, b) => b.mtimeMs - a.mtimeMs);
|
|
6599
|
-
const { paginate: paginate2 } = await import("./dist-
|
|
6765
|
+
const { paginate: paginate2 } = await import("./dist-ZS3Y3YWP.js");
|
|
6600
6766
|
const paged = paginate2(fileStats, input.offset ?? 0, input.limit ?? 30);
|
|
6601
6767
|
const results = [];
|
|
6602
6768
|
for (const entry of paged.items) {
|
|
@@ -6669,7 +6835,7 @@ async function handleCodeSearch(input) {
|
|
|
6669
6835
|
};
|
|
6670
6836
|
}
|
|
6671
6837
|
try {
|
|
6672
|
-
const { searchSymbols } = await import("./dist-
|
|
6838
|
+
const { searchSymbols } = await import("./dist-ZS3Y3YWP.js");
|
|
6673
6839
|
const result = await searchSymbols(input.query, directory, input.glob);
|
|
6674
6840
|
const lines = [`Search: "${result.query}" \u2014 ${result.matches.length} matches`];
|
|
6675
6841
|
for (const match of result.matches) {
|
|
@@ -6738,7 +6904,7 @@ async function handleCodeUnfold(input) {
|
|
|
6738
6904
|
}
|
|
6739
6905
|
try {
|
|
6740
6906
|
if (input.symbol) {
|
|
6741
|
-
const { unfoldSymbol } = await import("./dist-
|
|
6907
|
+
const { unfoldSymbol } = await import("./dist-ZS3Y3YWP.js");
|
|
6742
6908
|
const result = await unfoldSymbol(filePath, input.symbol);
|
|
6743
6909
|
const header = result.warning ? `${result.file}:${result.startLine}-${result.endLine} ${result.warning}
|
|
6744
6910
|
` : `${result.file}:${result.startLine}-${result.endLine}
|
|
@@ -6746,7 +6912,7 @@ async function handleCodeUnfold(input) {
|
|
|
6746
6912
|
return { content: [{ type: "text", text: header + result.content }] };
|
|
6747
6913
|
}
|
|
6748
6914
|
if (input.startLine != null && input.endLine != null) {
|
|
6749
|
-
const { unfoldRange } = await import("./dist-
|
|
6915
|
+
const { unfoldRange } = await import("./dist-ZS3Y3YWP.js");
|
|
6750
6916
|
const result = await unfoldRange(filePath, input.startLine, input.endLine);
|
|
6751
6917
|
const header = `${result.file}:${result.startLine}-${result.endLine}
|
|
6752
6918
|
`;
|
|
@@ -6808,7 +6974,7 @@ async function handleCheckTraceability(input) {
|
|
|
6808
6974
|
isError: true
|
|
6809
6975
|
};
|
|
6810
6976
|
}
|
|
6811
|
-
const { queryTraceability } = await import("./dist-
|
|
6977
|
+
const { queryTraceability } = await import("./dist-SQAOKWXM.js");
|
|
6812
6978
|
const options = {};
|
|
6813
6979
|
if (input.spec) options.specPath = input.spec;
|
|
6814
6980
|
if (input.feature) options.featureName = input.feature;
|
|
@@ -6931,7 +7097,7 @@ async function handlePredictFailures(input) {
|
|
|
6931
7097
|
};
|
|
6932
7098
|
}
|
|
6933
7099
|
try {
|
|
6934
|
-
const core = await import("./dist-
|
|
7100
|
+
const core = await import("./dist-ZS3Y3YWP.js");
|
|
6935
7101
|
const { TimelineManager, PredictionEngine, SpecImpactEstimator } = core;
|
|
6936
7102
|
const manager = new TimelineManager(projectPath);
|
|
6937
7103
|
const includeRoadmap = input.includeRoadmap !== false;
|
|
@@ -7646,8 +7812,8 @@ function createAdviseSkillsCommand() {
|
|
|
7646
7812
|
} else {
|
|
7647
7813
|
logger.info(formatOutput(featureName, result, skillsMdPath, totalSkills));
|
|
7648
7814
|
}
|
|
7649
|
-
} catch (
|
|
7650
|
-
logger.error(
|
|
7815
|
+
} catch (err2) {
|
|
7816
|
+
logger.error(err2.message);
|
|
7651
7817
|
process.exit(1);
|
|
7652
7818
|
}
|
|
7653
7819
|
});
|
|
@@ -7719,9 +7885,9 @@ async function handleAdviseSkills(input) {
|
|
|
7719
7885
|
return {
|
|
7720
7886
|
content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
|
|
7721
7887
|
};
|
|
7722
|
-
} catch (
|
|
7888
|
+
} catch (err2) {
|
|
7723
7889
|
return {
|
|
7724
|
-
content: [{ type: "text", text: JSON.stringify({ error:
|
|
7890
|
+
content: [{ type: "text", text: JSON.stringify({ error: err2.message }) }]
|
|
7725
7891
|
};
|
|
7726
7892
|
}
|
|
7727
7893
|
}
|
|
@@ -7814,7 +7980,7 @@ function handleContentMode(content, pipeline, budget, source) {
|
|
|
7814
7980
|
};
|
|
7815
7981
|
}
|
|
7816
7982
|
async function handleIntentMode(projectPath, intent, pipeline, budget, filterContent) {
|
|
7817
|
-
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-
|
|
7983
|
+
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-TJU4E7KL.js");
|
|
7818
7984
|
const store = await loadGraphStore2(projectPath);
|
|
7819
7985
|
if (!store) {
|
|
7820
7986
|
return {
|
|
@@ -7827,7 +7993,7 @@ async function handleIntentMode(projectPath, intent, pipeline, budget, filterCon
|
|
|
7827
7993
|
isError: true
|
|
7828
7994
|
};
|
|
7829
7995
|
}
|
|
7830
|
-
const { PackedSummaryCache, FusionLayer, ContextQL } = await import("./dist-
|
|
7996
|
+
const { PackedSummaryCache, FusionLayer, ContextQL } = await import("./dist-SQAOKWXM.js");
|
|
7831
7997
|
const cache = new PackedSummaryCache(store);
|
|
7832
7998
|
const cachedEnvelope = cache.get(intent);
|
|
7833
7999
|
if (cachedEnvelope) {
|
|
@@ -8040,7 +8206,7 @@ async function handleDetectConstraintEmergence(input) {
|
|
|
8040
8206
|
}
|
|
8041
8207
|
const nodePath = await import("path");
|
|
8042
8208
|
const historyPath = nodePath.resolve(projectPath, ".harness/arch/violation-history.json");
|
|
8043
|
-
const { ViolationHistoryManager, detectEmergentConstraints } = await import("./dist-
|
|
8209
|
+
const { ViolationHistoryManager, detectEmergentConstraints } = await import("./dist-ZS3Y3YWP.js");
|
|
8044
8210
|
const manager = new ViolationHistoryManager(historyPath);
|
|
8045
8211
|
const history = manager.load();
|
|
8046
8212
|
const options = { windowWeeks, minOccurrences };
|
|
@@ -8128,7 +8294,7 @@ async function handleRunCIChecks(input) {
|
|
|
8128
8294
|
};
|
|
8129
8295
|
}
|
|
8130
8296
|
try {
|
|
8131
|
-
const { runCIChecks } = await import("./dist-
|
|
8297
|
+
const { runCIChecks } = await import("./dist-ZS3Y3YWP.js");
|
|
8132
8298
|
const skip = input.checks ? VALID_CHECKS.filter((c) => !input.checks.includes(c)) : [];
|
|
8133
8299
|
const result = await runCIChecks({
|
|
8134
8300
|
projectRoot: projectPath,
|
|
@@ -8190,7 +8356,7 @@ async function handleGenerateBlueprint(input) {
|
|
|
8190
8356
|
};
|
|
8191
8357
|
}
|
|
8192
8358
|
try {
|
|
8193
|
-
const { ProjectScanner } = await import("./dist-
|
|
8359
|
+
const { ProjectScanner } = await import("./dist-ZS3Y3YWP.js");
|
|
8194
8360
|
const scanner = new ProjectScanner(projectPath);
|
|
8195
8361
|
const data = await scanner.scan();
|
|
8196
8362
|
return {
|
|
@@ -8436,7 +8602,7 @@ async function appendUpdateNotification(result, resolvedRoot) {
|
|
|
8436
8602
|
shouldRunCheck,
|
|
8437
8603
|
readCheckState,
|
|
8438
8604
|
spawnBackgroundCheck
|
|
8439
|
-
} = await import("./dist-
|
|
8605
|
+
} = await import("./dist-ZS3Y3YWP.js");
|
|
8440
8606
|
const { CLI_VERSION } = await import("./version-CUI434OP.js");
|
|
8441
8607
|
const configInterval = readConfigInterval(resolvedRoot);
|
|
8442
8608
|
const DEFAULT_INTERVAL = 864e5;
|