@harness-engineering/cli 1.16.0 → 1.17.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-roadmap-pilot/SKILL.md +204 -0
- package/dist/agents/skills/claude-code/harness-roadmap-pilot/skill.yaml +52 -0
- package/dist/agents/skills/codex/harness-roadmap-pilot/SKILL.md +204 -0
- package/dist/agents/skills/codex/harness-roadmap-pilot/skill.yaml +52 -0
- package/dist/agents/skills/cursor/harness-roadmap-pilot/SKILL.md +204 -0
- package/dist/agents/skills/cursor/harness-roadmap-pilot/skill.yaml +52 -0
- package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/SKILL.md +204 -0
- package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/skill.yaml +52 -0
- package/dist/agents/skills/package.json +5 -5
- package/dist/{agents-md-VYDFPIRW.js → agents-md-DUYNKHJZ.js} +1 -1
- package/dist/{architecture-K5HSRBGB.js → architecture-UBO5KKUV.js} +2 -2
- package/dist/bin/harness-mcp.js +12 -12
- package/dist/bin/harness.js +15 -15
- package/dist/{check-phase-gate-5AS6SXL6.js → check-phase-gate-OSHN2AEL.js} +3 -3
- package/dist/{chunk-JOP2NDNB.js → chunk-2DMIQ35P.js} +151 -79
- package/dist/{chunk-TF6ZLHJV.js → chunk-5FM64G6D.js} +2 -2
- package/dist/{chunk-5ZXHMCPL.js → chunk-ABQUCXRE.js} +2 -1
- package/dist/{chunk-AV6KMDO5.js → chunk-APNPXLB2.js} +4 -4
- package/dist/{chunk-FTMXDOR6.js → chunk-CZZXE6BL.js} +1 -1
- package/dist/{chunk-SFRGPAK6.js → chunk-GWXP3JVA.js} +3 -3
- package/dist/{chunk-SHYWICGA.js → chunk-OA3MOZGG.js} +22 -22
- package/dist/{chunk-RWZPHW4H.js → chunk-OHZVGIPE.js} +9 -9
- package/dist/{chunk-C7DTKLPW.js → chunk-QSRRBNLY.js} +8 -8
- package/dist/{chunk-QDF7COPQ.js → chunk-TG7IUJ3J.js} +1 -1
- package/dist/{chunk-DNDBFIZN.js → chunk-TZIHFNEG.js} +7 -7
- package/dist/{chunk-ZJMU7MEV.js → chunk-UX3JHYEA.js} +1 -1
- package/dist/{chunk-ALFKNAZW.js → chunk-VF23UTNB.js} +545 -36
- package/dist/{chunk-7MJAPE3Z.js → chunk-YLN34N65.js} +1 -0
- package/dist/{chunk-OCDDCGDE.js → chunk-ZA2I7S3E.js} +20 -1
- package/dist/{ci-workflow-CRWU723U.js → ci-workflow-FJZMNZPT.js} +1 -1
- package/dist/{dist-4LPXJYVZ.js → dist-MF5BK5AD.js} +19 -1
- package/dist/{dist-B26DFXMP.js → dist-U7EAO6T2.js} +110 -60
- package/dist/{docs-4JRHTLUZ.js → docs-WZHW4N4P.js} +3 -3
- package/dist/{engine-3G3VIM6L.js → engine-VS6ZJ2VZ.js} +2 -2
- package/dist/{entropy-G6CZ2A6P.js → entropy-FCIGJIIT.js} +2 -2
- package/dist/{feedback-QYKQ65HB.js → feedback-O3FYTZIE.js} +1 -1
- package/dist/{generate-agent-definitions-SAAOAPT4.js → generate-agent-definitions-EYG263XD.js} +1 -1
- package/dist/{graph-loader-2M2HXDQI.js → graph-loader-KMHDQYDT.js} +1 -1
- package/dist/index.d.ts +62 -3
- package/dist/index.js +15 -15
- package/dist/{loader-VCOK3PF7.js → loader-B4XWX4K6.js} +1 -1
- package/dist/{mcp-YENEPHBW.js → mcp-DVVUODN7.js} +12 -12
- package/dist/{performance-UBCFI2UP.js → performance-NMJDV6HF.js} +3 -3
- package/dist/{review-pipeline-IQAVCWAX.js → review-pipeline-MSEJWTKM.js} +1 -1
- package/dist/{runtime-PYFFIESU.js → runtime-YHVLJNPG.js} +1 -1
- package/dist/{security-ZDADTPYW.js → security-HTDKKGMX.js} +1 -1
- package/dist/{validate-VRTUHALQ.js → validate-SPSTH2YW.js} +2 -2
- package/dist/{validate-cross-check-4Y6NHNK3.js → validate-cross-check-YTDWIMFI.js} +1 -1
- package/package.json +20 -21
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
detectEntropyDefinition,
|
|
3
3
|
handleDetectEntropy
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-APNPXLB2.js";
|
|
5
5
|
import {
|
|
6
6
|
checkPerformanceDefinition,
|
|
7
7
|
getCriticalPathsDefinition,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
handleGetPerfBaselines,
|
|
12
12
|
handleUpdatePerfBaselines,
|
|
13
13
|
updatePerfBaselinesDefinition
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-TZIHFNEG.js";
|
|
15
15
|
import {
|
|
16
16
|
analyzeDiffDefinition,
|
|
17
17
|
createSelfReviewDefinition,
|
|
@@ -19,15 +19,15 @@ import {
|
|
|
19
19
|
handleCreateSelfReview,
|
|
20
20
|
handleRequestPeerReview,
|
|
21
21
|
requestPeerReviewDefinition
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-OHZVGIPE.js";
|
|
23
23
|
import {
|
|
24
24
|
handleRunSecurityScan,
|
|
25
25
|
runSecurityScanDefinition
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-TG7IUJ3J.js";
|
|
27
27
|
import {
|
|
28
28
|
handleRunCodeReview,
|
|
29
29
|
runCodeReviewDefinition
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-UX3JHYEA.js";
|
|
31
31
|
import {
|
|
32
32
|
GENERATED_HEADER_CLAUDE,
|
|
33
33
|
GENERATED_HEADER_CODEX,
|
|
@@ -40,24 +40,25 @@ import {
|
|
|
40
40
|
import {
|
|
41
41
|
handleValidateProject,
|
|
42
42
|
validateToolDefinition
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-5FM64G6D.js";
|
|
44
44
|
import {
|
|
45
45
|
loadGraphStore
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-CZZXE6BL.js";
|
|
47
47
|
import {
|
|
48
48
|
checkDependenciesDefinition,
|
|
49
49
|
handleCheckDependencies
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-GWXP3JVA.js";
|
|
51
51
|
import {
|
|
52
52
|
resolveProjectConfig
|
|
53
53
|
} from "./chunk-H7Y5CKTM.js";
|
|
54
54
|
import {
|
|
55
55
|
checkDocsDefinition,
|
|
56
56
|
handleCheckDocs
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-QSRRBNLY.js";
|
|
58
58
|
import {
|
|
59
|
+
TrackerConfigSchema,
|
|
59
60
|
resolveConfig
|
|
60
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-ZA2I7S3E.js";
|
|
61
62
|
import {
|
|
62
63
|
resultToMcpResponse
|
|
63
64
|
} from "./chunk-IDZNPTYD.js";
|
|
@@ -86,7 +87,7 @@ import {
|
|
|
86
87
|
checkTaint,
|
|
87
88
|
scanForInjection,
|
|
88
89
|
writeTaint
|
|
89
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-VF23UTNB.js";
|
|
90
91
|
import {
|
|
91
92
|
Err,
|
|
92
93
|
Ok
|
|
@@ -553,7 +554,7 @@ ${skippedMsg}`
|
|
|
553
554
|
async function handleInitProject(input) {
|
|
554
555
|
const i = input;
|
|
555
556
|
try {
|
|
556
|
-
const { TemplateEngine } = await import("./engine-
|
|
557
|
+
const { TemplateEngine } = await import("./engine-VS6ZJ2VZ.js");
|
|
557
558
|
const engine = new TemplateEngine(resolveTemplatesDir());
|
|
558
559
|
const safePath = sanitizePath(i.path);
|
|
559
560
|
const detected = tryDetectFramework(engine, safePath, i);
|
|
@@ -574,7 +575,7 @@ var listPersonasDefinition = {
|
|
|
574
575
|
inputSchema: { type: "object", properties: {} }
|
|
575
576
|
};
|
|
576
577
|
async function handleListPersonas() {
|
|
577
|
-
const { listPersonas } = await import("./loader-
|
|
578
|
+
const { listPersonas } = await import("./loader-B4XWX4K6.js");
|
|
578
579
|
const result = listPersonas(resolvePersonasDir());
|
|
579
580
|
return resultToMcpResponse(result);
|
|
580
581
|
}
|
|
@@ -598,10 +599,10 @@ async function handleGeneratePersonaArtifacts(input) {
|
|
|
598
599
|
if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.name)) {
|
|
599
600
|
return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.name}`)));
|
|
600
601
|
}
|
|
601
|
-
const { loadPersona } = await import("./loader-
|
|
602
|
-
const { generateRuntime } = await import("./runtime-
|
|
603
|
-
const { generateAgentsMd } = await import("./agents-md-
|
|
604
|
-
const { generateCIWorkflow } = await import("./ci-workflow-
|
|
602
|
+
const { loadPersona } = await import("./loader-B4XWX4K6.js");
|
|
603
|
+
const { generateRuntime } = await import("./runtime-YHVLJNPG.js");
|
|
604
|
+
const { generateAgentsMd } = await import("./agents-md-DUYNKHJZ.js");
|
|
605
|
+
const { generateCIWorkflow } = await import("./ci-workflow-FJZMNZPT.js");
|
|
605
606
|
const personasDir = resolvePersonasDir();
|
|
606
607
|
const filePath = path3.join(personasDir, `${input.name}.yaml`);
|
|
607
608
|
if (!filePath.startsWith(personasDir)) {
|
|
@@ -656,7 +657,7 @@ async function handleRunPersona(input) {
|
|
|
656
657
|
if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.persona)) {
|
|
657
658
|
return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.persona}`)));
|
|
658
659
|
}
|
|
659
|
-
const { loadPersona } = await import("./loader-
|
|
660
|
+
const { loadPersona } = await import("./loader-B4XWX4K6.js");
|
|
660
661
|
const { runPersona } = await import("./runner-VMYLHWOC.js");
|
|
661
662
|
const { executeSkill } = await import("./skill-executor-XEVDGXUM.js");
|
|
662
663
|
const personasDir = resolvePersonasDir();
|
|
@@ -1274,18 +1275,62 @@ async function autoSyncRoadmap(projectPath) {
|
|
|
1274
1275
|
try {
|
|
1275
1276
|
const roadmapFile = path11.join(projectPath, "docs", "roadmap.md");
|
|
1276
1277
|
if (!fs10.existsSync(roadmapFile)) return;
|
|
1277
|
-
const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-
|
|
1278
|
+
const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-MF5BK5AD.js");
|
|
1278
1279
|
const raw = fs10.readFileSync(roadmapFile, "utf-8");
|
|
1279
1280
|
const parseResult = parseRoadmap(raw);
|
|
1280
1281
|
if (!parseResult.ok) return;
|
|
1281
1282
|
const roadmap = parseResult.value;
|
|
1282
1283
|
const syncResult = syncRoadmap({ projectPath, roadmap });
|
|
1283
|
-
if (!syncResult.ok || syncResult.value.length === 0)
|
|
1284
|
+
if (!syncResult.ok || syncResult.value.length === 0) {
|
|
1285
|
+
await triggerExternalSync(projectPath, roadmapFile);
|
|
1286
|
+
return;
|
|
1287
|
+
}
|
|
1284
1288
|
applySyncChanges(roadmap, syncResult.value);
|
|
1285
1289
|
fs10.writeFileSync(roadmapFile, serializeRoadmap(roadmap), "utf-8");
|
|
1290
|
+
await triggerExternalSync(projectPath, roadmapFile);
|
|
1286
1291
|
} catch {
|
|
1287
1292
|
}
|
|
1288
1293
|
}
|
|
1294
|
+
async function triggerExternalSync(projectPath, roadmapFile) {
|
|
1295
|
+
try {
|
|
1296
|
+
const trackerConfig = loadTrackerConfig(projectPath);
|
|
1297
|
+
if (!trackerConfig) return;
|
|
1298
|
+
const token = process.env.GITHUB_TOKEN;
|
|
1299
|
+
if (!token) return;
|
|
1300
|
+
const { fullSync, GitHubIssuesSyncAdapter } = await import("./dist-MF5BK5AD.js");
|
|
1301
|
+
const adapter = new GitHubIssuesSyncAdapter({
|
|
1302
|
+
token,
|
|
1303
|
+
config: trackerConfig
|
|
1304
|
+
});
|
|
1305
|
+
const result = await fullSync(roadmapFile, adapter, trackerConfig);
|
|
1306
|
+
if (result.errors.length > 0) {
|
|
1307
|
+
for (const err of result.errors) {
|
|
1308
|
+
console.error(
|
|
1309
|
+
`[roadmap-sync] External sync error for ${err.featureOrId}: ${err.error.message}`
|
|
1310
|
+
);
|
|
1311
|
+
}
|
|
1312
|
+
}
|
|
1313
|
+
} catch (error) {
|
|
1314
|
+
console.error(
|
|
1315
|
+
`[roadmap-sync] External sync failed: ${error instanceof Error ? error.message : String(error)}`
|
|
1316
|
+
);
|
|
1317
|
+
}
|
|
1318
|
+
}
|
|
1319
|
+
function loadTrackerConfig(projectPath) {
|
|
1320
|
+
try {
|
|
1321
|
+
const configPath = path11.join(projectPath, "harness.config.json");
|
|
1322
|
+
if (!fs10.existsSync(configPath)) return null;
|
|
1323
|
+
const raw = fs10.readFileSync(configPath, "utf-8");
|
|
1324
|
+
const config = JSON.parse(raw);
|
|
1325
|
+
const trackerRaw = config.roadmap?.tracker;
|
|
1326
|
+
if (!trackerRaw) return null;
|
|
1327
|
+
const parsed = TrackerConfigSchema.safeParse(trackerRaw);
|
|
1328
|
+
if (!parsed.success) return null;
|
|
1329
|
+
return parsed.data;
|
|
1330
|
+
} catch {
|
|
1331
|
+
return null;
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1289
1334
|
|
|
1290
1335
|
// src/mcp/utils.ts
|
|
1291
1336
|
function mcpError(text) {
|
|
@@ -1315,7 +1360,11 @@ var manageStateDefinition = {
|
|
|
1315
1360
|
"update_entry_status",
|
|
1316
1361
|
"read_section",
|
|
1317
1362
|
"read_sections",
|
|
1318
|
-
"archive_session"
|
|
1363
|
+
"archive_session",
|
|
1364
|
+
"task-start",
|
|
1365
|
+
"task-complete",
|
|
1366
|
+
"phase-start",
|
|
1367
|
+
"phase-complete"
|
|
1319
1368
|
],
|
|
1320
1369
|
description: "Action to perform"
|
|
1321
1370
|
},
|
|
@@ -1360,12 +1409,12 @@ var manageStateDefinition = {
|
|
|
1360
1409
|
}
|
|
1361
1410
|
};
|
|
1362
1411
|
async function handleShow(projectPath, input) {
|
|
1363
|
-
const { loadState } = await import("./dist-
|
|
1412
|
+
const { loadState } = await import("./dist-MF5BK5AD.js");
|
|
1364
1413
|
return resultToMcpResponse(await loadState(projectPath, input.stream, input.session));
|
|
1365
1414
|
}
|
|
1366
1415
|
async function handleLearn(projectPath, input) {
|
|
1367
1416
|
if (!input.learning) return mcpError("Error: learning is required for learn action");
|
|
1368
|
-
const { appendLearning } = await import("./dist-
|
|
1417
|
+
const { appendLearning } = await import("./dist-MF5BK5AD.js");
|
|
1369
1418
|
const result = await appendLearning(
|
|
1370
1419
|
projectPath,
|
|
1371
1420
|
input.learning,
|
|
@@ -1380,7 +1429,7 @@ async function handleLearn(projectPath, input) {
|
|
|
1380
1429
|
async function handleFailure(projectPath, input) {
|
|
1381
1430
|
if (!input.description) return mcpError("Error: description is required for failure action");
|
|
1382
1431
|
if (!input.failureType) return mcpError("Error: failureType is required for failure action");
|
|
1383
|
-
const { appendFailure } = await import("./dist-
|
|
1432
|
+
const { appendFailure } = await import("./dist-MF5BK5AD.js");
|
|
1384
1433
|
const result = await appendFailure(
|
|
1385
1434
|
projectPath,
|
|
1386
1435
|
input.description,
|
|
@@ -1393,24 +1442,24 @@ async function handleFailure(projectPath, input) {
|
|
|
1393
1442
|
return resultToMcpResponse(Ok({ recorded: true }));
|
|
1394
1443
|
}
|
|
1395
1444
|
async function handleArchive(projectPath, input) {
|
|
1396
|
-
const { archiveFailures } = await import("./dist-
|
|
1445
|
+
const { archiveFailures } = await import("./dist-MF5BK5AD.js");
|
|
1397
1446
|
const result = await archiveFailures(projectPath, input.stream, input.session);
|
|
1398
1447
|
if (!result.ok) return resultToMcpResponse(result);
|
|
1399
1448
|
return resultToMcpResponse(Ok({ archived: true }));
|
|
1400
1449
|
}
|
|
1401
1450
|
async function handleReset(projectPath, input) {
|
|
1402
|
-
const { saveState, DEFAULT_STATE } = await import("./dist-
|
|
1451
|
+
const { saveState, DEFAULT_STATE } = await import("./dist-MF5BK5AD.js");
|
|
1403
1452
|
const result = await saveState(projectPath, { ...DEFAULT_STATE }, input.stream, input.session);
|
|
1404
1453
|
if (!result.ok) return resultToMcpResponse(result);
|
|
1405
1454
|
return resultToMcpResponse(Ok({ reset: true }));
|
|
1406
1455
|
}
|
|
1407
1456
|
async function handleGate(projectPath, _input) {
|
|
1408
|
-
const { runMechanicalGate } = await import("./dist-
|
|
1457
|
+
const { runMechanicalGate } = await import("./dist-MF5BK5AD.js");
|
|
1409
1458
|
return resultToMcpResponse(await runMechanicalGate(projectPath));
|
|
1410
1459
|
}
|
|
1411
1460
|
async function handleSaveHandoff(projectPath, input) {
|
|
1412
1461
|
if (!input.handoff) return mcpError("Error: handoff is required for save-handoff action");
|
|
1413
|
-
const { saveHandoff } = await import("./dist-
|
|
1462
|
+
const { saveHandoff } = await import("./dist-MF5BK5AD.js");
|
|
1414
1463
|
const result = await saveHandoff(
|
|
1415
1464
|
projectPath,
|
|
1416
1465
|
input.handoff,
|
|
@@ -1422,7 +1471,7 @@ async function handleSaveHandoff(projectPath, input) {
|
|
|
1422
1471
|
return resultToMcpResponse(Ok({ saved: true }));
|
|
1423
1472
|
}
|
|
1424
1473
|
async function handleLoadHandoff(projectPath, input) {
|
|
1425
|
-
const { loadHandoff } = await import("./dist-
|
|
1474
|
+
const { loadHandoff } = await import("./dist-MF5BK5AD.js");
|
|
1426
1475
|
return resultToMcpResponse(await loadHandoff(projectPath, input.stream, input.session));
|
|
1427
1476
|
}
|
|
1428
1477
|
async function handleAppendEntry(projectPath, input) {
|
|
@@ -1430,7 +1479,7 @@ async function handleAppendEntry(projectPath, input) {
|
|
|
1430
1479
|
if (!input.section) return mcpError("Error: section is required for append_entry action");
|
|
1431
1480
|
if (!input.authorSkill) return mcpError("Error: authorSkill is required for append_entry action");
|
|
1432
1481
|
if (!input.content) return mcpError("Error: content is required for append_entry action");
|
|
1433
|
-
const { appendSessionEntry } = await import("./dist-
|
|
1482
|
+
const { appendSessionEntry } = await import("./dist-MF5BK5AD.js");
|
|
1434
1483
|
const result = await appendSessionEntry(
|
|
1435
1484
|
projectPath,
|
|
1436
1485
|
input.session,
|
|
@@ -1446,7 +1495,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
|
|
|
1446
1495
|
if (!input.entryId) return mcpError("Error: entryId is required for update_entry_status action");
|
|
1447
1496
|
if (!input.newStatus)
|
|
1448
1497
|
return mcpError("Error: newStatus is required for update_entry_status action");
|
|
1449
|
-
const { updateSessionEntryStatus } = await import("./dist-
|
|
1498
|
+
const { updateSessionEntryStatus } = await import("./dist-MF5BK5AD.js");
|
|
1450
1499
|
const result = await updateSessionEntryStatus(
|
|
1451
1500
|
projectPath,
|
|
1452
1501
|
input.session,
|
|
@@ -1459,7 +1508,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
|
|
|
1459
1508
|
async function handleReadSection(projectPath, input) {
|
|
1460
1509
|
if (!input.session) return mcpError("Error: session is required for read_section action");
|
|
1461
1510
|
if (!input.section) return mcpError("Error: section is required for read_section action");
|
|
1462
|
-
const { readSessionSection } = await import("./dist-
|
|
1511
|
+
const { readSessionSection } = await import("./dist-MF5BK5AD.js");
|
|
1463
1512
|
const result = await readSessionSection(
|
|
1464
1513
|
projectPath,
|
|
1465
1514
|
input.session,
|
|
@@ -1469,18 +1518,34 @@ async function handleReadSection(projectPath, input) {
|
|
|
1469
1518
|
}
|
|
1470
1519
|
async function handleReadSections(projectPath, input) {
|
|
1471
1520
|
if (!input.session) return mcpError("Error: session is required for read_sections action");
|
|
1472
|
-
const { readSessionSections } = await import("./dist-
|
|
1521
|
+
const { readSessionSections } = await import("./dist-MF5BK5AD.js");
|
|
1473
1522
|
const result = await readSessionSections(projectPath, input.session);
|
|
1474
1523
|
return resultToMcpResponse(result);
|
|
1475
1524
|
}
|
|
1476
1525
|
async function handleArchiveSession(projectPath, input) {
|
|
1477
1526
|
if (!input.session) return mcpError("Error: session is required for archive_session action");
|
|
1478
|
-
const { archiveSession } = await import("./dist-
|
|
1527
|
+
const { archiveSession } = await import("./dist-MF5BK5AD.js");
|
|
1479
1528
|
const result = await archiveSession(projectPath, input.session);
|
|
1480
1529
|
if (!result.ok) return resultToMcpResponse(result);
|
|
1481
1530
|
await autoSyncRoadmap(projectPath);
|
|
1482
1531
|
return resultToMcpResponse(Ok({ archived: true }));
|
|
1483
1532
|
}
|
|
1533
|
+
async function handleTaskStart(projectPath, _input) {
|
|
1534
|
+
await autoSyncRoadmap(projectPath);
|
|
1535
|
+
return resultToMcpResponse(Ok({ synced: true, trigger: "task-start" }));
|
|
1536
|
+
}
|
|
1537
|
+
async function handleTaskComplete(projectPath, _input) {
|
|
1538
|
+
await autoSyncRoadmap(projectPath);
|
|
1539
|
+
return resultToMcpResponse(Ok({ synced: true, trigger: "task-complete" }));
|
|
1540
|
+
}
|
|
1541
|
+
async function handlePhaseStart(projectPath, _input) {
|
|
1542
|
+
await autoSyncRoadmap(projectPath);
|
|
1543
|
+
return resultToMcpResponse(Ok({ synced: true, trigger: "phase-start" }));
|
|
1544
|
+
}
|
|
1545
|
+
async function handlePhaseComplete(projectPath, _input) {
|
|
1546
|
+
await autoSyncRoadmap(projectPath);
|
|
1547
|
+
return resultToMcpResponse(Ok({ synced: true, trigger: "phase-complete" }));
|
|
1548
|
+
}
|
|
1484
1549
|
var ACTION_HANDLERS = {
|
|
1485
1550
|
show: handleShow,
|
|
1486
1551
|
learn: handleLearn,
|
|
@@ -1494,7 +1559,11 @@ var ACTION_HANDLERS = {
|
|
|
1494
1559
|
update_entry_status: handleUpdateEntryStatus,
|
|
1495
1560
|
read_section: handleReadSection,
|
|
1496
1561
|
read_sections: handleReadSections,
|
|
1497
|
-
archive_session: handleArchiveSession
|
|
1562
|
+
archive_session: handleArchiveSession,
|
|
1563
|
+
"task-start": handleTaskStart,
|
|
1564
|
+
"task-complete": handleTaskComplete,
|
|
1565
|
+
"phase-start": handlePhaseStart,
|
|
1566
|
+
"phase-complete": handlePhaseComplete
|
|
1498
1567
|
};
|
|
1499
1568
|
async function handleManageState(input) {
|
|
1500
1569
|
try {
|
|
@@ -1519,7 +1588,7 @@ var listStreamsDefinition = {
|
|
|
1519
1588
|
};
|
|
1520
1589
|
async function handleListStreams(input) {
|
|
1521
1590
|
try {
|
|
1522
|
-
const { listStreams, loadStreamIndex } = await import("./dist-
|
|
1591
|
+
const { listStreams, loadStreamIndex } = await import("./dist-MF5BK5AD.js");
|
|
1523
1592
|
const projectPath = sanitizePath(input.path);
|
|
1524
1593
|
const indexResult = await loadStreamIndex(projectPath);
|
|
1525
1594
|
const streamsResult = await listStreams(projectPath);
|
|
@@ -1557,7 +1626,7 @@ var checkPhaseGateDefinition = {
|
|
|
1557
1626
|
};
|
|
1558
1627
|
async function handleCheckPhaseGate(input) {
|
|
1559
1628
|
try {
|
|
1560
|
-
const { runCheckPhaseGate } = await import("./check-phase-gate-
|
|
1629
|
+
const { runCheckPhaseGate } = await import("./check-phase-gate-OSHN2AEL.js");
|
|
1561
1630
|
const result = await runCheckPhaseGate({ cwd: sanitizePath(input.path) });
|
|
1562
1631
|
if (result.ok) {
|
|
1563
1632
|
return { content: [{ type: "text", text: JSON.stringify(result.value) }] };
|
|
@@ -1613,7 +1682,7 @@ async function handleValidateCrossCheck(input) {
|
|
|
1613
1682
|
};
|
|
1614
1683
|
}
|
|
1615
1684
|
try {
|
|
1616
|
-
const { runCrossCheck } = await import("./validate-cross-check-
|
|
1685
|
+
const { runCrossCheck } = await import("./validate-cross-check-YTDWIMFI.js");
|
|
1617
1686
|
const specsDir = path12.resolve(projectPath, input.specsDir ?? "docs/specs");
|
|
1618
1687
|
if (!specsDir.startsWith(projectPath)) {
|
|
1619
1688
|
return {
|
|
@@ -2258,7 +2327,7 @@ async function handleGenerateSlashCommands(input) {
|
|
|
2258
2327
|
// src/mcp/resources/state.ts
|
|
2259
2328
|
async function getStateResource(projectRoot) {
|
|
2260
2329
|
try {
|
|
2261
|
-
const { loadState, migrateToStreams } = await import("./dist-
|
|
2330
|
+
const { loadState, migrateToStreams } = await import("./dist-MF5BK5AD.js");
|
|
2262
2331
|
await migrateToStreams(projectRoot);
|
|
2263
2332
|
const result = await loadState(projectRoot);
|
|
2264
2333
|
if (result.ok) {
|
|
@@ -2346,7 +2415,7 @@ async function handleQueryGraph(input) {
|
|
|
2346
2415
|
const projectPath = sanitizePath(input.path);
|
|
2347
2416
|
const store = await loadGraphStore(projectPath);
|
|
2348
2417
|
if (!store) return graphNotFoundError();
|
|
2349
|
-
const { ContextQL } = await import("./dist-
|
|
2418
|
+
const { ContextQL } = await import("./dist-U7EAO6T2.js");
|
|
2350
2419
|
const cql = new ContextQL(store);
|
|
2351
2420
|
const result = cql.execute({
|
|
2352
2421
|
rootNodeIds: input.rootNodeIds,
|
|
@@ -2437,7 +2506,7 @@ async function handleSearchSimilar(input) {
|
|
|
2437
2506
|
const projectPath = sanitizePath(input.path);
|
|
2438
2507
|
const store = await loadGraphStore(projectPath);
|
|
2439
2508
|
if (!store) return graphNotFoundError();
|
|
2440
|
-
const { FusionLayer } = await import("./dist-
|
|
2509
|
+
const { FusionLayer } = await import("./dist-U7EAO6T2.js");
|
|
2441
2510
|
const fusion = new FusionLayer(store);
|
|
2442
2511
|
const results = fusion.search(input.query, input.topK ?? 10);
|
|
2443
2512
|
if (input.mode === "summary") {
|
|
@@ -2492,7 +2561,7 @@ async function handleFindContextFor(input) {
|
|
|
2492
2561
|
const projectPath = sanitizePath(input.path);
|
|
2493
2562
|
const store = await loadGraphStore(projectPath);
|
|
2494
2563
|
if (!store) return graphNotFoundError();
|
|
2495
|
-
const { FusionLayer, ContextQL } = await import("./dist-
|
|
2564
|
+
const { FusionLayer, ContextQL } = await import("./dist-U7EAO6T2.js");
|
|
2496
2565
|
const fusion = new FusionLayer(store);
|
|
2497
2566
|
const cql = new ContextQL(store);
|
|
2498
2567
|
const tokenBudget = input.tokenBudget ?? 4e3;
|
|
@@ -2588,7 +2657,7 @@ async function handleGetRelationships(input) {
|
|
|
2588
2657
|
const projectPath = sanitizePath(input.path);
|
|
2589
2658
|
const store = await loadGraphStore(projectPath);
|
|
2590
2659
|
if (!store) return graphNotFoundError();
|
|
2591
|
-
const { ContextQL } = await import("./dist-
|
|
2660
|
+
const { ContextQL } = await import("./dist-U7EAO6T2.js");
|
|
2592
2661
|
const cql = new ContextQL(store);
|
|
2593
2662
|
const direction = input.direction ?? "both";
|
|
2594
2663
|
const bidirectional = direction === "both" || direction === "inbound";
|
|
@@ -2694,7 +2763,7 @@ async function handleGetImpact(input) {
|
|
|
2694
2763
|
const projectPath = sanitizePath(input.path);
|
|
2695
2764
|
const store = await loadGraphStore(projectPath);
|
|
2696
2765
|
if (!store) return graphNotFoundError();
|
|
2697
|
-
const { ContextQL } = await import("./dist-
|
|
2766
|
+
const { ContextQL } = await import("./dist-U7EAO6T2.js");
|
|
2698
2767
|
let targetNodeId = input.nodeId;
|
|
2699
2768
|
if (!targetNodeId && input.filePath) {
|
|
2700
2769
|
const fileNodes = store.findNodes({ type: "file" });
|
|
@@ -2826,7 +2895,7 @@ async function handleIngestSource(input) {
|
|
|
2826
2895
|
try {
|
|
2827
2896
|
const projectPath = sanitizePath(input.path);
|
|
2828
2897
|
const graphDir = path16.join(projectPath, ".harness", "graph");
|
|
2829
|
-
const { GraphStore, CodeIngestor, TopologicalLinker, KnowledgeIngestor, GitIngestor } = await import("./dist-
|
|
2898
|
+
const { GraphStore, CodeIngestor, TopologicalLinker, KnowledgeIngestor, GitIngestor } = await import("./dist-U7EAO6T2.js");
|
|
2830
2899
|
const fs16 = await import("fs/promises");
|
|
2831
2900
|
await fs16.mkdir(graphDir, { recursive: true });
|
|
2832
2901
|
const store = new GraphStore();
|
|
@@ -2901,7 +2970,7 @@ async function handleDetectAnomalies(input) {
|
|
|
2901
2970
|
const projectPath = sanitizePath(input.path);
|
|
2902
2971
|
const store = await loadGraphStore(projectPath);
|
|
2903
2972
|
if (!store) return graphNotFoundError();
|
|
2904
|
-
const { GraphAnomalyAdapter } = await import("./dist-
|
|
2973
|
+
const { GraphAnomalyAdapter } = await import("./dist-U7EAO6T2.js");
|
|
2905
2974
|
const adapter = new GraphAnomalyAdapter(store);
|
|
2906
2975
|
const report = adapter.detect({
|
|
2907
2976
|
...input.threshold !== void 0 && { threshold: input.threshold },
|
|
@@ -2941,7 +3010,7 @@ async function handleAskGraph(input) {
|
|
|
2941
3010
|
const projectPath = sanitizePath(input.path);
|
|
2942
3011
|
const store = await loadGraphStore(projectPath);
|
|
2943
3012
|
if (!store) return graphNotFoundError();
|
|
2944
|
-
const { askGraph } = await import("./dist-
|
|
3013
|
+
const { askGraph } = await import("./dist-U7EAO6T2.js");
|
|
2945
3014
|
const result = await askGraph(store, input.question);
|
|
2946
3015
|
return {
|
|
2947
3016
|
content: [{ type: "text", text: JSON.stringify(result) }]
|
|
@@ -3077,7 +3146,7 @@ var generateAgentDefinitionsDefinition = {
|
|
|
3077
3146
|
}
|
|
3078
3147
|
};
|
|
3079
3148
|
async function handleGenerateAgentDefinitions(input) {
|
|
3080
|
-
const { generateAgentDefinitions } = await import("./generate-agent-definitions-
|
|
3149
|
+
const { generateAgentDefinitions } = await import("./generate-agent-definitions-EYG263XD.js");
|
|
3081
3150
|
const platforms = input.platform === "all" || !input.platform ? ["claude-code", "gemini-cli"] : [input.platform];
|
|
3082
3151
|
const results = generateAgentDefinitions({
|
|
3083
3152
|
platforms: [...platforms],
|
|
@@ -3245,7 +3314,10 @@ function handleAdd(projectPath, input, deps) {
|
|
|
3245
3314
|
spec: input.spec ?? null,
|
|
3246
3315
|
plans: input.plans ?? [],
|
|
3247
3316
|
blockedBy: input.blocked_by ?? [],
|
|
3248
|
-
summary: input.summary
|
|
3317
|
+
summary: input.summary,
|
|
3318
|
+
assignee: null,
|
|
3319
|
+
priority: null,
|
|
3320
|
+
externalId: null
|
|
3249
3321
|
});
|
|
3250
3322
|
roadmap.frontmatter.lastManualEdit = (/* @__PURE__ */ new Date()).toISOString();
|
|
3251
3323
|
writeRoadmapFile(projectPath, serializeRoadmap(roadmap));
|
|
@@ -3371,7 +3443,7 @@ function handleSync(projectPath, input, deps) {
|
|
|
3371
3443
|
}
|
|
3372
3444
|
async function handleManageRoadmap(input) {
|
|
3373
3445
|
try {
|
|
3374
|
-
const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-
|
|
3446
|
+
const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-MF5BK5AD.js");
|
|
3375
3447
|
const { Ok: Ok2 } = await import("./dist-USY2C5JL.js");
|
|
3376
3448
|
const projectPath = sanitizePath(input.path);
|
|
3377
3449
|
const deps = { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges, Ok: Ok2 };
|
|
@@ -3799,7 +3871,7 @@ async function handleTransition(validInput, projectPath, id) {
|
|
|
3799
3871
|
const transition = transitionResult.data;
|
|
3800
3872
|
const prompt = renderTransition(transition);
|
|
3801
3873
|
try {
|
|
3802
|
-
const { saveHandoff } = await import("./dist-
|
|
3874
|
+
const { saveHandoff } = await import("./dist-MF5BK5AD.js");
|
|
3803
3875
|
await saveHandoff(
|
|
3804
3876
|
projectPath,
|
|
3805
3877
|
{
|
|
@@ -3869,7 +3941,7 @@ async function handleEmitInteraction(input) {
|
|
|
3869
3941
|
}
|
|
3870
3942
|
async function recordInteraction(projectPath, id, type, decision, stream) {
|
|
3871
3943
|
try {
|
|
3872
|
-
const { loadState, saveState } = await import("./dist-
|
|
3944
|
+
const { loadState, saveState } = await import("./dist-MF5BK5AD.js");
|
|
3873
3945
|
const stateResult = await loadState(projectPath, stream);
|
|
3874
3946
|
if (stateResult.ok) {
|
|
3875
3947
|
const state = stateResult.value;
|
|
@@ -3958,10 +4030,10 @@ async function handleGatherContext(input) {
|
|
|
3958
4030
|
input.include ?? ["state", "learnings", "handoff", "graph", "validation"]
|
|
3959
4031
|
);
|
|
3960
4032
|
const errors = [];
|
|
3961
|
-
const statePromise = includeSet.has("state") ? import("./dist-
|
|
4033
|
+
const statePromise = includeSet.has("state") ? import("./dist-MF5BK5AD.js").then(
|
|
3962
4034
|
(core) => core.loadState(projectPath, void 0, input.session)
|
|
3963
4035
|
) : Promise.resolve(null);
|
|
3964
|
-
const learningsPromise = includeSet.has("learnings") ? import("./dist-
|
|
4036
|
+
const learningsPromise = includeSet.has("learnings") ? import("./dist-MF5BK5AD.js").then(
|
|
3965
4037
|
(core) => core.loadBudgetedLearnings(projectPath, {
|
|
3966
4038
|
intent: input.intent,
|
|
3967
4039
|
tokenBudget: input.learningsBudget ?? 1e3,
|
|
@@ -3970,14 +4042,14 @@ async function handleGatherContext(input) {
|
|
|
3970
4042
|
...input.depth !== void 0 && { depth: input.depth }
|
|
3971
4043
|
})
|
|
3972
4044
|
) : Promise.resolve(null);
|
|
3973
|
-
const handoffPromise = includeSet.has("handoff") ? import("./dist-
|
|
4045
|
+
const handoffPromise = includeSet.has("handoff") ? import("./dist-MF5BK5AD.js").then(
|
|
3974
4046
|
(core) => core.loadHandoff(projectPath, void 0, input.session)
|
|
3975
4047
|
) : Promise.resolve(null);
|
|
3976
4048
|
const graphPromise = includeSet.has("graph") ? (async () => {
|
|
3977
|
-
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-
|
|
4049
|
+
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-KMHDQYDT.js");
|
|
3978
4050
|
const store = await loadGraphStore2(projectPath);
|
|
3979
4051
|
if (!store) return null;
|
|
3980
|
-
const { FusionLayer, ContextQL } = await import("./dist-
|
|
4052
|
+
const { FusionLayer, ContextQL } = await import("./dist-U7EAO6T2.js");
|
|
3981
4053
|
const fusion = new FusionLayer(store);
|
|
3982
4054
|
const cql = new ContextQL(store);
|
|
3983
4055
|
const tokenBudget = input.tokenBudget ?? 4e3;
|
|
@@ -4014,11 +4086,11 @@ async function handleGatherContext(input) {
|
|
|
4014
4086
|
context: contextBlocks
|
|
4015
4087
|
};
|
|
4016
4088
|
})() : Promise.resolve(null);
|
|
4017
|
-
const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-
|
|
4089
|
+
const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-MF5BK5AD.js").then(
|
|
4018
4090
|
(core) => core.readSessionSections(projectPath, input.session)
|
|
4019
4091
|
) : Promise.resolve(null);
|
|
4020
4092
|
const shouldIncludeEvents = input.includeEvents !== void 0 ? input.includeEvents : includeSet.has("events") || !!input.session && !input.include;
|
|
4021
|
-
const eventsPromise = shouldIncludeEvents ? import("./dist-
|
|
4093
|
+
const eventsPromise = shouldIncludeEvents ? import("./dist-MF5BK5AD.js").then(async (core) => {
|
|
4022
4094
|
const result = await core.loadEvents(projectPath, {
|
|
4023
4095
|
session: input.session
|
|
4024
4096
|
});
|
|
@@ -4026,7 +4098,7 @@ async function handleGatherContext(input) {
|
|
|
4026
4098
|
return core.formatEventTimeline(result.value);
|
|
4027
4099
|
}) : Promise.resolve(null);
|
|
4028
4100
|
const validationPromise = includeSet.has("validation") ? (async () => {
|
|
4029
|
-
const { handleValidateProject: handleValidateProject2 } = await import("./validate-
|
|
4101
|
+
const { handleValidateProject: handleValidateProject2 } = await import("./validate-SPSTH2YW.js");
|
|
4030
4102
|
const result = await handleValidateProject2({ path: projectPath });
|
|
4031
4103
|
const first = result.content[0];
|
|
4032
4104
|
return first ? JSON.parse(first.text) : null;
|
|
@@ -4120,7 +4192,7 @@ async function handleGatherContext(input) {
|
|
|
4120
4192
|
};
|
|
4121
4193
|
if (input.session) {
|
|
4122
4194
|
try {
|
|
4123
|
-
const core = await import("./dist-
|
|
4195
|
+
const core = await import("./dist-MF5BK5AD.js");
|
|
4124
4196
|
core.updateSessionIndex(
|
|
4125
4197
|
projectPath,
|
|
4126
4198
|
input.session,
|
|
@@ -4190,7 +4262,7 @@ async function handleAssessProject(input) {
|
|
|
4190
4262
|
let validateResult = null;
|
|
4191
4263
|
if (checksToRun.has("validate")) {
|
|
4192
4264
|
try {
|
|
4193
|
-
const { handleValidateProject: handleValidateProject2 } = await import("./validate-
|
|
4265
|
+
const { handleValidateProject: handleValidateProject2 } = await import("./validate-SPSTH2YW.js");
|
|
4194
4266
|
const result = await handleValidateProject2({ path: projectPath });
|
|
4195
4267
|
const first = result.content[0];
|
|
4196
4268
|
const parsed = first ? JSON.parse(first.text) : {};
|
|
@@ -4215,7 +4287,7 @@ async function handleAssessProject(input) {
|
|
|
4215
4287
|
parallelChecks.push(
|
|
4216
4288
|
(async () => {
|
|
4217
4289
|
try {
|
|
4218
|
-
const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-
|
|
4290
|
+
const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-UBO5KKUV.js");
|
|
4219
4291
|
const result = await handleCheckDependencies2({ path: projectPath });
|
|
4220
4292
|
const first = result.content[0];
|
|
4221
4293
|
const parsed = first ? JSON.parse(first.text) : {};
|
|
@@ -4242,7 +4314,7 @@ async function handleAssessProject(input) {
|
|
|
4242
4314
|
parallelChecks.push(
|
|
4243
4315
|
(async () => {
|
|
4244
4316
|
try {
|
|
4245
|
-
const { handleCheckDocs: handleCheckDocs2 } = await import("./docs-
|
|
4317
|
+
const { handleCheckDocs: handleCheckDocs2 } = await import("./docs-WZHW4N4P.js");
|
|
4246
4318
|
const result = await handleCheckDocs2({ path: projectPath, scope: "coverage" });
|
|
4247
4319
|
const first = result.content[0];
|
|
4248
4320
|
const parsed = first ? JSON.parse(first.text) : {};
|
|
@@ -4269,7 +4341,7 @@ async function handleAssessProject(input) {
|
|
|
4269
4341
|
parallelChecks.push(
|
|
4270
4342
|
(async () => {
|
|
4271
4343
|
try {
|
|
4272
|
-
const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-
|
|
4344
|
+
const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-FCIGJIIT.js");
|
|
4273
4345
|
const result = await handleDetectEntropy2({ path: projectPath, type: "all" });
|
|
4274
4346
|
const first = result.content[0];
|
|
4275
4347
|
const parsed = first ? JSON.parse(first.text) : {};
|
|
@@ -4296,7 +4368,7 @@ async function handleAssessProject(input) {
|
|
|
4296
4368
|
parallelChecks.push(
|
|
4297
4369
|
(async () => {
|
|
4298
4370
|
try {
|
|
4299
|
-
const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-
|
|
4371
|
+
const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-HTDKKGMX.js");
|
|
4300
4372
|
const result = await handleRunSecurityScan2({ path: projectPath });
|
|
4301
4373
|
const first = result.content[0];
|
|
4302
4374
|
const parsed = first ? JSON.parse(first.text) : {};
|
|
@@ -4328,7 +4400,7 @@ async function handleAssessProject(input) {
|
|
|
4328
4400
|
parallelChecks.push(
|
|
4329
4401
|
(async () => {
|
|
4330
4402
|
try {
|
|
4331
|
-
const { handleCheckPerformance: handleCheckPerformance2 } = await import("./performance-
|
|
4403
|
+
const { handleCheckPerformance: handleCheckPerformance2 } = await import("./performance-NMJDV6HF.js");
|
|
4332
4404
|
const result = await handleCheckPerformance2({ path: projectPath });
|
|
4333
4405
|
if ("isError" in result && result.isError) {
|
|
4334
4406
|
const msg = result.content[0]?.text ?? "Performance check failed";
|
|
@@ -4531,7 +4603,7 @@ async function handleReviewChanges(input) {
|
|
|
4531
4603
|
}
|
|
4532
4604
|
}
|
|
4533
4605
|
async function runQuickReview(projectPath, diff, diffLines, downgraded) {
|
|
4534
|
-
const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-
|
|
4606
|
+
const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-O3FYTZIE.js");
|
|
4535
4607
|
const result = await handleAnalyzeDiff2({ diff, path: projectPath });
|
|
4536
4608
|
const firstContent = result.content[0];
|
|
4537
4609
|
if (!firstContent) throw new Error("Empty analyze_diff response");
|
|
@@ -4562,7 +4634,7 @@ function extractFileCount(diffParsed) {
|
|
|
4562
4634
|
return files?.length ?? 0;
|
|
4563
4635
|
}
|
|
4564
4636
|
async function runStandardReview(projectPath, diff, diffLines, downgraded) {
|
|
4565
|
-
const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-
|
|
4637
|
+
const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-O3FYTZIE.js");
|
|
4566
4638
|
const [diffResult, reviewResult] = await Promise.all([
|
|
4567
4639
|
handleAnalyzeDiff2({ diff, path: projectPath }),
|
|
4568
4640
|
handleCreateSelfReview2({ path: projectPath, diff })
|
|
@@ -4594,7 +4666,7 @@ async function runStandardReview(projectPath, diff, diffLines, downgraded) {
|
|
|
4594
4666
|
};
|
|
4595
4667
|
}
|
|
4596
4668
|
async function runDeepReview(projectPath, diff, diffLines, _downgraded) {
|
|
4597
|
-
const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-
|
|
4669
|
+
const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-MSEJWTKM.js");
|
|
4598
4670
|
const result = await handleRunCodeReview2({ path: projectPath, diff });
|
|
4599
4671
|
const deepContent = result.content[0];
|
|
4600
4672
|
if (!deepContent) throw new Error("Empty code review response");
|
|
@@ -4665,7 +4737,7 @@ async function handleCheckTaskIndependence(input) {
|
|
|
4665
4737
|
try {
|
|
4666
4738
|
const projectPath = sanitizePath(input.path);
|
|
4667
4739
|
const store = await loadGraphStore(projectPath);
|
|
4668
|
-
const { TaskIndependenceAnalyzer } = await import("./dist-
|
|
4740
|
+
const { TaskIndependenceAnalyzer } = await import("./dist-U7EAO6T2.js");
|
|
4669
4741
|
const analyzer = new TaskIndependenceAnalyzer(store ?? void 0);
|
|
4670
4742
|
const result = analyzer.analyze({
|
|
4671
4743
|
tasks: input.tasks,
|
|
@@ -4753,7 +4825,7 @@ async function handlePredictConflicts(input) {
|
|
|
4753
4825
|
try {
|
|
4754
4826
|
const projectPath = sanitizePath(input.path);
|
|
4755
4827
|
const store = await loadGraphStore(projectPath);
|
|
4756
|
-
const { ConflictPredictor } = await import("./dist-
|
|
4828
|
+
const { ConflictPredictor } = await import("./dist-U7EAO6T2.js");
|
|
4757
4829
|
const predictor = new ConflictPredictor(store ?? void 0);
|
|
4758
4830
|
const result = predictor.predict({
|
|
4759
4831
|
tasks: input.tasks,
|
|
@@ -4859,7 +4931,7 @@ async function handleDetectStaleConstraints(input) {
|
|
|
4859
4931
|
isError: true
|
|
4860
4932
|
};
|
|
4861
4933
|
}
|
|
4862
|
-
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-
|
|
4934
|
+
const { loadGraphStore: loadGraphStore2 } = await import("./graph-loader-KMHDQYDT.js");
|
|
4863
4935
|
const store = await loadGraphStore2(projectPath);
|
|
4864
4936
|
if (!store) {
|
|
4865
4937
|
return {
|
|
@@ -4880,7 +4952,7 @@ async function handleDetectStaleConstraints(input) {
|
|
|
4880
4952
|
]
|
|
4881
4953
|
};
|
|
4882
4954
|
}
|
|
4883
|
-
const { detectStaleConstraints } = await import("./dist-
|
|
4955
|
+
const { detectStaleConstraints } = await import("./dist-MF5BK5AD.js");
|
|
4884
4956
|
const result = detectStaleConstraints(
|
|
4885
4957
|
store,
|
|
4886
4958
|
windowDays,
|
|
@@ -5012,7 +5084,7 @@ async function handleCodeOutline(input) {
|
|
|
5012
5084
|
};
|
|
5013
5085
|
}
|
|
5014
5086
|
try {
|
|
5015
|
-
const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-
|
|
5087
|
+
const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-MF5BK5AD.js");
|
|
5016
5088
|
const { stat } = await import("fs/promises");
|
|
5017
5089
|
const stats = await stat(targetPath).catch(() => null);
|
|
5018
5090
|
if (stats?.isFile()) {
|
|
@@ -5092,7 +5164,7 @@ async function handleCodeSearch(input) {
|
|
|
5092
5164
|
};
|
|
5093
5165
|
}
|
|
5094
5166
|
try {
|
|
5095
|
-
const { searchSymbols } = await import("./dist-
|
|
5167
|
+
const { searchSymbols } = await import("./dist-MF5BK5AD.js");
|
|
5096
5168
|
const result = await searchSymbols(input.query, directory, input.glob);
|
|
5097
5169
|
const lines = [`Search: "${result.query}" \u2014 ${result.matches.length} matches`];
|
|
5098
5170
|
for (const match of result.matches) {
|
|
@@ -5161,7 +5233,7 @@ async function handleCodeUnfold(input) {
|
|
|
5161
5233
|
}
|
|
5162
5234
|
try {
|
|
5163
5235
|
if (input.symbol) {
|
|
5164
|
-
const { unfoldSymbol } = await import("./dist-
|
|
5236
|
+
const { unfoldSymbol } = await import("./dist-MF5BK5AD.js");
|
|
5165
5237
|
const result = await unfoldSymbol(filePath, input.symbol);
|
|
5166
5238
|
const header = result.warning ? `${result.file}:${result.startLine}-${result.endLine} ${result.warning}
|
|
5167
5239
|
` : `${result.file}:${result.startLine}-${result.endLine}
|
|
@@ -5169,7 +5241,7 @@ async function handleCodeUnfold(input) {
|
|
|
5169
5241
|
return { content: [{ type: "text", text: header + result.content }] };
|
|
5170
5242
|
}
|
|
5171
5243
|
if (input.startLine != null && input.endLine != null) {
|
|
5172
|
-
const { unfoldRange } = await import("./dist-
|
|
5244
|
+
const { unfoldRange } = await import("./dist-MF5BK5AD.js");
|
|
5173
5245
|
const result = await unfoldRange(filePath, input.startLine, input.endLine);
|
|
5174
5246
|
const header = `${result.file}:${result.startLine}-${result.endLine}
|
|
5175
5247
|
`;
|
|
@@ -5384,7 +5456,7 @@ async function appendUpdateNotification(result, resolvedRoot) {
|
|
|
5384
5456
|
shouldRunCheck,
|
|
5385
5457
|
readCheckState,
|
|
5386
5458
|
spawnBackgroundCheck
|
|
5387
|
-
} = await import("./dist-
|
|
5459
|
+
} = await import("./dist-MF5BK5AD.js");
|
|
5388
5460
|
const { CLI_VERSION } = await import("./version-KFFPOQAX.js");
|
|
5389
5461
|
const configInterval = readConfigInterval(resolvedRoot);
|
|
5390
5462
|
const DEFAULT_INTERVAL = 864e5;
|