@harness-engineering/cli 1.18.0 → 1.20.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.
Files changed (35) hide show
  1. package/dist/{agents-md-DUYNKHJZ.js → agents-md-WHXVPOK2.js} +1 -1
  2. package/dist/{architecture-UBO5KKUV.js → architecture-45YCLD26.js} +2 -2
  3. package/dist/bin/harness-mcp.js +11 -11
  4. package/dist/bin/harness.js +13 -13
  5. package/dist/{check-phase-gate-OSHN2AEL.js → check-phase-gate-2VXVOUJ5.js} +3 -3
  6. package/dist/{chunk-UX3JHYEA.js → chunk-45ZJPG24.js} +1 -1
  7. package/dist/{chunk-APNPXLB2.js → chunk-4U4V7A6U.js} +2 -2
  8. package/dist/{chunk-GWXP3JVA.js → chunk-A33LHIRD.js} +1 -1
  9. package/dist/{chunk-QSRRBNLY.js → chunk-H6KZAGHZ.js} +4 -4
  10. package/dist/{chunk-VF23UTNB.js → chunk-IC5CZSHF.js} +160 -28
  11. package/dist/{chunk-TG7IUJ3J.js → chunk-LEWXD6PR.js} +1 -1
  12. package/dist/{chunk-5FM64G6D.js → chunk-LVJ7SCD7.js} +2 -2
  13. package/dist/{chunk-TZIHFNEG.js → chunk-PDEEQJHH.js} +5 -5
  14. package/dist/{chunk-ABQUCXRE.js → chunk-PDOSLTWP.js} +1 -1
  15. package/dist/{chunk-OA3MOZGG.js → chunk-RJFWCL6M.js} +14 -14
  16. package/dist/{chunk-OHZVGIPE.js → chunk-V73TEHIF.js} +3 -3
  17. package/dist/{chunk-ZA2I7S3E.js → chunk-YDOGGQSF.js} +1 -1
  18. package/dist/{chunk-2DMIQ35P.js → chunk-YL4UHE52.js} +67 -62
  19. package/dist/{ci-workflow-FJZMNZPT.js → ci-workflow-HWX5OVLI.js} +1 -1
  20. package/dist/{dist-MF5BK5AD.js → dist-WHL3NN5S.js} +1 -1
  21. package/dist/{docs-WZHW4N4P.js → docs-FJFY7GF2.js} +3 -3
  22. package/dist/{engine-VS6ZJ2VZ.js → engine-R5BZHIZB.js} +1 -1
  23. package/dist/{entropy-FCIGJIIT.js → entropy-Y2GE4MYS.js} +2 -2
  24. package/dist/{feedback-O3FYTZIE.js → feedback-FKZ7GMPO.js} +1 -1
  25. package/dist/{generate-agent-definitions-EYG263XD.js → generate-agent-definitions-LN3A45OL.js} +1 -1
  26. package/dist/index.js +13 -13
  27. package/dist/{loader-B4XWX4K6.js → loader-2TBQUFWX.js} +1 -1
  28. package/dist/{mcp-DVVUODN7.js → mcp-I7UP73GV.js} +11 -11
  29. package/dist/{performance-NMJDV6HF.js → performance-BSOMMWK5.js} +3 -3
  30. package/dist/{review-pipeline-MSEJWTKM.js → review-pipeline-KUBHP3RV.js} +1 -1
  31. package/dist/{runtime-YHVLJNPG.js → runtime-BN7KGJAO.js} +1 -1
  32. package/dist/{security-HTDKKGMX.js → security-3T4JGDZP.js} +1 -1
  33. package/dist/{validate-SPSTH2YW.js → validate-R5WGB2AV.js} +2 -2
  34. package/dist/{validate-cross-check-YTDWIMFI.js → validate-cross-check-76Z5P6EX.js} +1 -1
  35. package/package.json +5 -5
@@ -6,7 +6,7 @@ import {
6
6
  OutputMode,
7
7
  createCheckPhaseGateCommand,
8
8
  findFiles
9
- } from "./chunk-ABQUCXRE.js";
9
+ } from "./chunk-PDOSLTWP.js";
10
10
  import {
11
11
  createGenerateAgentDefinitionsCommand,
12
12
  generateAgentDefinitions
@@ -50,14 +50,14 @@ import {
50
50
  handleGetImpact,
51
51
  handleOrphanDeletion,
52
52
  persistToolingConfig
53
- } from "./chunk-2DMIQ35P.js";
53
+ } from "./chunk-YL4UHE52.js";
54
54
  import {
55
55
  VALID_PLATFORMS
56
56
  } from "./chunk-CJDVBBPB.js";
57
57
  import {
58
58
  findConfigFile,
59
59
  resolveConfig
60
- } from "./chunk-ZA2I7S3E.js";
60
+ } from "./chunk-YDOGGQSF.js";
61
61
  import {
62
62
  resolveGlobalSkillsDir,
63
63
  resolvePersonasDir,
@@ -135,7 +135,7 @@ import {
135
135
  validateKnowledgeMap,
136
136
  writeConfig,
137
137
  writeLockfile
138
- } from "./chunk-VF23UTNB.js";
138
+ } from "./chunk-IC5CZSHF.js";
139
139
  import {
140
140
  Err,
141
141
  Ok
@@ -221,7 +221,7 @@ function createValidateCommand() {
221
221
  process.exit(result.error.exitCode);
222
222
  }
223
223
  if (opts.crossCheck) {
224
- const { runCrossCheck: runCrossCheck2 } = await import("./validate-cross-check-YTDWIMFI.js");
224
+ const { runCrossCheck: runCrossCheck2 } = await import("./validate-cross-check-76Z5P6EX.js");
225
225
  const cwd = process.cwd();
226
226
  const specsDir = path.join(cwd, "docs", "specs");
227
227
  const plansDir = path.join(cwd, "docs", "plans");
@@ -578,7 +578,7 @@ function registerBenchCommand(perf) {
578
578
  perf.command("bench [glob]").description("Run benchmarks via vitest bench").action(async (glob, _opts, cmd) => {
579
579
  const globalOpts = cmd.optsWithGlobals();
580
580
  const cwd = process.cwd();
581
- const { BenchmarkRunner } = await import("./dist-MF5BK5AD.js");
581
+ const { BenchmarkRunner } = await import("./dist-WHL3NN5S.js");
582
582
  const runner = new BenchmarkRunner();
583
583
  const benchFiles = runner.discover(cwd, glob);
584
584
  if (benchFiles.length === 0) {
@@ -646,7 +646,7 @@ function registerBaselinesCommands(perf) {
646
646
  baselines.command("update").description("Update baselines from latest benchmark run").action(async (_opts, cmd) => {
647
647
  const globalOpts = cmd.optsWithGlobals();
648
648
  const cwd = process.cwd();
649
- const { BenchmarkRunner } = await import("./dist-MF5BK5AD.js");
649
+ const { BenchmarkRunner } = await import("./dist-WHL3NN5S.js");
650
650
  const runner = new BenchmarkRunner();
651
651
  const manager = new BaselineManager(cwd);
652
652
  logger.info("Running benchmarks to update baselines...");
@@ -679,7 +679,7 @@ function registerReportCommand(perf) {
679
679
  perf.command("report").description("Full performance report with metrics, trends, and hotspots").action(async (_opts, cmd) => {
680
680
  const globalOpts = cmd.optsWithGlobals();
681
681
  const cwd = process.cwd();
682
- const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./dist-MF5BK5AD.js");
682
+ const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./dist-WHL3NN5S.js");
683
683
  const analyzer = new EntropyAnalyzer2({
684
684
  rootDir: path5.resolve(cwd),
685
685
  analyze: { complexity: true, coupling: true }
@@ -5095,7 +5095,7 @@ function createGraphCommand() {
5095
5095
  import { Command as Command50 } from "commander";
5096
5096
  function createMcpCommand() {
5097
5097
  return new Command50("mcp").description("Start the MCP (Model Context Protocol) server on stdio").option("--tools <tools...>", "Only register the specified tools (used by Cursor integration)").action(async (opts) => {
5098
- const { startServer: startServer2 } = await import("./mcp-DVVUODN7.js");
5098
+ const { startServer: startServer2 } = await import("./mcp-I7UP73GV.js");
5099
5099
  await startServer2(opts.tools);
5100
5100
  });
5101
5101
  }
@@ -6594,7 +6594,7 @@ function createIntegrationsCommand() {
6594
6594
  // src/commands/usage.ts
6595
6595
  import { Command as Command67 } from "commander";
6596
6596
  async function loadAndPriceRecords(cwd, includeClaudeSessions = false) {
6597
- const { readCostRecords, loadPricingData, calculateCost, parseCCRecords } = await import("./dist-MF5BK5AD.js");
6597
+ const { readCostRecords, loadPricingData, calculateCost, parseCCRecords } = await import("./dist-WHL3NN5S.js");
6598
6598
  const records = readCostRecords(cwd);
6599
6599
  if (includeClaudeSessions) {
6600
6600
  const ccRecords = parseCCRecords();
@@ -6638,7 +6638,7 @@ function registerDailyCommand(usage) {
6638
6638
  }
6639
6639
  return;
6640
6640
  }
6641
- const { aggregateByDay } = await import("./dist-MF5BK5AD.js");
6641
+ const { aggregateByDay } = await import("./dist-WHL3NN5S.js");
6642
6642
  const dailyData = aggregateByDay(records);
6643
6643
  const limited = dailyData.slice(0, days);
6644
6644
  if (globalOpts.json) {
@@ -6674,7 +6674,7 @@ function registerSessionsCommand(usage) {
6674
6674
  }
6675
6675
  return;
6676
6676
  }
6677
- const { aggregateBySession } = await import("./dist-MF5BK5AD.js");
6677
+ const { aggregateBySession } = await import("./dist-WHL3NN5S.js");
6678
6678
  const sessionData = aggregateBySession(records);
6679
6679
  const limited = sessionData.slice(0, limit);
6680
6680
  if (globalOpts.json) {
@@ -6703,7 +6703,7 @@ function registerSessionCommand(usage) {
6703
6703
  const globalOpts = cmd.optsWithGlobals();
6704
6704
  const cwd = process.cwd();
6705
6705
  const records = await loadAndPriceRecords(cwd, globalOpts.includeClaudeSessions);
6706
- const { aggregateBySession } = await import("./dist-MF5BK5AD.js");
6706
+ const { aggregateBySession } = await import("./dist-WHL3NN5S.js");
6707
6707
  const sessionData = aggregateBySession(records);
6708
6708
  const match = sessionData.find((s) => s.sessionId === id);
6709
6709
  if (!match) {
@@ -6769,7 +6769,7 @@ function registerLatestCommand(usage) {
6769
6769
  }
6770
6770
  return;
6771
6771
  }
6772
- const { aggregateBySession } = await import("./dist-MF5BK5AD.js");
6772
+ const { aggregateBySession } = await import("./dist-WHL3NN5S.js");
6773
6773
  const sessionData = aggregateBySession(records);
6774
6774
  const latest = sessionData[0];
6775
6775
  if (!latest) {
@@ -33,7 +33,7 @@ var createSelfReviewDefinition = {
33
33
  };
34
34
  async function handleCreateSelfReview(input) {
35
35
  try {
36
- const { parseDiff, createSelfReview } = await import("./dist-MF5BK5AD.js");
36
+ const { parseDiff, createSelfReview } = await import("./dist-WHL3NN5S.js");
37
37
  const parseResult = parseDiff(input.diff);
38
38
  if (!parseResult.ok) {
39
39
  return resultToMcpResponse(parseResult);
@@ -119,7 +119,7 @@ var analyzeDiffDefinition = {
119
119
  };
120
120
  async function handleAnalyzeDiff(input) {
121
121
  try {
122
- const { parseDiff, analyzeDiff } = await import("./dist-MF5BK5AD.js");
122
+ const { parseDiff, analyzeDiff } = await import("./dist-WHL3NN5S.js");
123
123
  const parseResult = parseDiff(input.diff);
124
124
  if (!parseResult.ok) {
125
125
  return resultToMcpResponse(parseResult);
@@ -195,7 +195,7 @@ var requestPeerReviewDefinition = {
195
195
  };
196
196
  async function handleRequestPeerReview(input) {
197
197
  try {
198
- const { parseDiff, requestPeerReview } = await import("./dist-MF5BK5AD.js");
198
+ const { parseDiff, requestPeerReview } = await import("./dist-WHL3NN5S.js");
199
199
  const parseResult = parseDiff(input.diff);
200
200
  if (!parseResult.ok) {
201
201
  return resultToMcpResponse(parseResult);
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-3WGJMBKH.js";
5
5
  import {
6
6
  ArchConfigSchema
7
- } from "./chunk-VF23UTNB.js";
7
+ } from "./chunk-IC5CZSHF.js";
8
8
  import {
9
9
  Err,
10
10
  Ok
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  detectEntropyDefinition,
3
3
  handleDetectEntropy
4
- } from "./chunk-APNPXLB2.js";
4
+ } from "./chunk-4U4V7A6U.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-TZIHFNEG.js";
14
+ } from "./chunk-PDEEQJHH.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-OHZVGIPE.js";
22
+ } from "./chunk-V73TEHIF.js";
23
23
  import {
24
24
  handleRunSecurityScan,
25
25
  runSecurityScanDefinition
26
- } from "./chunk-TG7IUJ3J.js";
26
+ } from "./chunk-LEWXD6PR.js";
27
27
  import {
28
28
  handleRunCodeReview,
29
29
  runCodeReviewDefinition
30
- } from "./chunk-UX3JHYEA.js";
30
+ } from "./chunk-45ZJPG24.js";
31
31
  import {
32
32
  GENERATED_HEADER_CLAUDE,
33
33
  GENERATED_HEADER_CODEX,
@@ -40,25 +40,25 @@ import {
40
40
  import {
41
41
  handleValidateProject,
42
42
  validateToolDefinition
43
- } from "./chunk-5FM64G6D.js";
43
+ } from "./chunk-LVJ7SCD7.js";
44
44
  import {
45
45
  loadGraphStore
46
46
  } from "./chunk-CZZXE6BL.js";
47
47
  import {
48
48
  checkDependenciesDefinition,
49
49
  handleCheckDependencies
50
- } from "./chunk-GWXP3JVA.js";
50
+ } from "./chunk-A33LHIRD.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-QSRRBNLY.js";
57
+ } from "./chunk-H6KZAGHZ.js";
58
58
  import {
59
59
  TrackerConfigSchema,
60
60
  resolveConfig
61
- } from "./chunk-ZA2I7S3E.js";
61
+ } from "./chunk-YDOGGQSF.js";
62
62
  import {
63
63
  resultToMcpResponse
64
64
  } from "./chunk-IDZNPTYD.js";
@@ -87,7 +87,7 @@ import {
87
87
  checkTaint,
88
88
  scanForInjection,
89
89
  writeTaint
90
- } from "./chunk-VF23UTNB.js";
90
+ } from "./chunk-IC5CZSHF.js";
91
91
  import {
92
92
  Err,
93
93
  Ok
@@ -554,7 +554,7 @@ ${skippedMsg}`
554
554
  async function handleInitProject(input) {
555
555
  const i = input;
556
556
  try {
557
- const { TemplateEngine } = await import("./engine-VS6ZJ2VZ.js");
557
+ const { TemplateEngine } = await import("./engine-R5BZHIZB.js");
558
558
  const engine = new TemplateEngine(resolveTemplatesDir());
559
559
  const safePath = sanitizePath(i.path);
560
560
  const detected = tryDetectFramework(engine, safePath, i);
@@ -575,7 +575,7 @@ var listPersonasDefinition = {
575
575
  inputSchema: { type: "object", properties: {} }
576
576
  };
577
577
  async function handleListPersonas() {
578
- const { listPersonas } = await import("./loader-B4XWX4K6.js");
578
+ const { listPersonas } = await import("./loader-2TBQUFWX.js");
579
579
  const result = listPersonas(resolvePersonasDir());
580
580
  return resultToMcpResponse(result);
581
581
  }
@@ -599,10 +599,10 @@ async function handleGeneratePersonaArtifacts(input) {
599
599
  if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.name)) {
600
600
  return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.name}`)));
601
601
  }
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");
602
+ const { loadPersona } = await import("./loader-2TBQUFWX.js");
603
+ const { generateRuntime } = await import("./runtime-BN7KGJAO.js");
604
+ const { generateAgentsMd } = await import("./agents-md-WHXVPOK2.js");
605
+ const { generateCIWorkflow } = await import("./ci-workflow-HWX5OVLI.js");
606
606
  const personasDir = resolvePersonasDir();
607
607
  const filePath = path3.join(personasDir, `${input.name}.yaml`);
608
608
  if (!filePath.startsWith(personasDir)) {
@@ -657,7 +657,7 @@ async function handleRunPersona(input) {
657
657
  if (!/^[a-z0-9][a-z0-9._-]*$/i.test(input.persona)) {
658
658
  return resultToMcpResponse(Err(new Error(`Invalid persona name: ${input.persona}`)));
659
659
  }
660
- const { loadPersona } = await import("./loader-B4XWX4K6.js");
660
+ const { loadPersona } = await import("./loader-2TBQUFWX.js");
661
661
  const { runPersona } = await import("./runner-VMYLHWOC.js");
662
662
  const { executeSkill } = await import("./skill-executor-XEVDGXUM.js");
663
663
  const personasDir = resolvePersonasDir();
@@ -1275,7 +1275,7 @@ async function autoSyncRoadmap(projectPath) {
1275
1275
  try {
1276
1276
  const roadmapFile = path11.join(projectPath, "docs", "roadmap.md");
1277
1277
  if (!fs10.existsSync(roadmapFile)) return;
1278
- const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-MF5BK5AD.js");
1278
+ const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-WHL3NN5S.js");
1279
1279
  const raw = fs10.readFileSync(roadmapFile, "utf-8");
1280
1280
  const parseResult = parseRoadmap(raw);
1281
1281
  if (!parseResult.ok) return;
@@ -1295,9 +1295,14 @@ async function triggerExternalSync(projectPath, roadmapFile) {
1295
1295
  try {
1296
1296
  const trackerConfig = loadTrackerConfig(projectPath);
1297
1297
  if (!trackerConfig) return;
1298
+ const projectEnvPath = path11.join(projectPath, ".env");
1299
+ if (fs10.existsSync(projectEnvPath) && !process.env.GITHUB_TOKEN) {
1300
+ const { config: loadDotenv } = await import("dotenv");
1301
+ loadDotenv({ path: projectEnvPath });
1302
+ }
1298
1303
  const token = process.env.GITHUB_TOKEN;
1299
1304
  if (!token) return;
1300
- const { fullSync, GitHubIssuesSyncAdapter } = await import("./dist-MF5BK5AD.js");
1305
+ const { fullSync, GitHubIssuesSyncAdapter } = await import("./dist-WHL3NN5S.js");
1301
1306
  const adapter = new GitHubIssuesSyncAdapter({
1302
1307
  token,
1303
1308
  config: trackerConfig
@@ -1409,12 +1414,12 @@ var manageStateDefinition = {
1409
1414
  }
1410
1415
  };
1411
1416
  async function handleShow(projectPath, input) {
1412
- const { loadState } = await import("./dist-MF5BK5AD.js");
1417
+ const { loadState } = await import("./dist-WHL3NN5S.js");
1413
1418
  return resultToMcpResponse(await loadState(projectPath, input.stream, input.session));
1414
1419
  }
1415
1420
  async function handleLearn(projectPath, input) {
1416
1421
  if (!input.learning) return mcpError("Error: learning is required for learn action");
1417
- const { appendLearning } = await import("./dist-MF5BK5AD.js");
1422
+ const { appendLearning } = await import("./dist-WHL3NN5S.js");
1418
1423
  const result = await appendLearning(
1419
1424
  projectPath,
1420
1425
  input.learning,
@@ -1429,7 +1434,7 @@ async function handleLearn(projectPath, input) {
1429
1434
  async function handleFailure(projectPath, input) {
1430
1435
  if (!input.description) return mcpError("Error: description is required for failure action");
1431
1436
  if (!input.failureType) return mcpError("Error: failureType is required for failure action");
1432
- const { appendFailure } = await import("./dist-MF5BK5AD.js");
1437
+ const { appendFailure } = await import("./dist-WHL3NN5S.js");
1433
1438
  const result = await appendFailure(
1434
1439
  projectPath,
1435
1440
  input.description,
@@ -1442,24 +1447,24 @@ async function handleFailure(projectPath, input) {
1442
1447
  return resultToMcpResponse(Ok({ recorded: true }));
1443
1448
  }
1444
1449
  async function handleArchive(projectPath, input) {
1445
- const { archiveFailures } = await import("./dist-MF5BK5AD.js");
1450
+ const { archiveFailures } = await import("./dist-WHL3NN5S.js");
1446
1451
  const result = await archiveFailures(projectPath, input.stream, input.session);
1447
1452
  if (!result.ok) return resultToMcpResponse(result);
1448
1453
  return resultToMcpResponse(Ok({ archived: true }));
1449
1454
  }
1450
1455
  async function handleReset(projectPath, input) {
1451
- const { saveState, DEFAULT_STATE } = await import("./dist-MF5BK5AD.js");
1456
+ const { saveState, DEFAULT_STATE } = await import("./dist-WHL3NN5S.js");
1452
1457
  const result = await saveState(projectPath, { ...DEFAULT_STATE }, input.stream, input.session);
1453
1458
  if (!result.ok) return resultToMcpResponse(result);
1454
1459
  return resultToMcpResponse(Ok({ reset: true }));
1455
1460
  }
1456
1461
  async function handleGate(projectPath, _input) {
1457
- const { runMechanicalGate } = await import("./dist-MF5BK5AD.js");
1462
+ const { runMechanicalGate } = await import("./dist-WHL3NN5S.js");
1458
1463
  return resultToMcpResponse(await runMechanicalGate(projectPath));
1459
1464
  }
1460
1465
  async function handleSaveHandoff(projectPath, input) {
1461
1466
  if (!input.handoff) return mcpError("Error: handoff is required for save-handoff action");
1462
- const { saveHandoff } = await import("./dist-MF5BK5AD.js");
1467
+ const { saveHandoff } = await import("./dist-WHL3NN5S.js");
1463
1468
  const result = await saveHandoff(
1464
1469
  projectPath,
1465
1470
  input.handoff,
@@ -1471,7 +1476,7 @@ async function handleSaveHandoff(projectPath, input) {
1471
1476
  return resultToMcpResponse(Ok({ saved: true }));
1472
1477
  }
1473
1478
  async function handleLoadHandoff(projectPath, input) {
1474
- const { loadHandoff } = await import("./dist-MF5BK5AD.js");
1479
+ const { loadHandoff } = await import("./dist-WHL3NN5S.js");
1475
1480
  return resultToMcpResponse(await loadHandoff(projectPath, input.stream, input.session));
1476
1481
  }
1477
1482
  async function handleAppendEntry(projectPath, input) {
@@ -1479,7 +1484,7 @@ async function handleAppendEntry(projectPath, input) {
1479
1484
  if (!input.section) return mcpError("Error: section is required for append_entry action");
1480
1485
  if (!input.authorSkill) return mcpError("Error: authorSkill is required for append_entry action");
1481
1486
  if (!input.content) return mcpError("Error: content is required for append_entry action");
1482
- const { appendSessionEntry } = await import("./dist-MF5BK5AD.js");
1487
+ const { appendSessionEntry } = await import("./dist-WHL3NN5S.js");
1483
1488
  const result = await appendSessionEntry(
1484
1489
  projectPath,
1485
1490
  input.session,
@@ -1495,7 +1500,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
1495
1500
  if (!input.entryId) return mcpError("Error: entryId is required for update_entry_status action");
1496
1501
  if (!input.newStatus)
1497
1502
  return mcpError("Error: newStatus is required for update_entry_status action");
1498
- const { updateSessionEntryStatus } = await import("./dist-MF5BK5AD.js");
1503
+ const { updateSessionEntryStatus } = await import("./dist-WHL3NN5S.js");
1499
1504
  const result = await updateSessionEntryStatus(
1500
1505
  projectPath,
1501
1506
  input.session,
@@ -1508,7 +1513,7 @@ async function handleUpdateEntryStatus(projectPath, input) {
1508
1513
  async function handleReadSection(projectPath, input) {
1509
1514
  if (!input.session) return mcpError("Error: session is required for read_section action");
1510
1515
  if (!input.section) return mcpError("Error: section is required for read_section action");
1511
- const { readSessionSection } = await import("./dist-MF5BK5AD.js");
1516
+ const { readSessionSection } = await import("./dist-WHL3NN5S.js");
1512
1517
  const result = await readSessionSection(
1513
1518
  projectPath,
1514
1519
  input.session,
@@ -1518,13 +1523,13 @@ async function handleReadSection(projectPath, input) {
1518
1523
  }
1519
1524
  async function handleReadSections(projectPath, input) {
1520
1525
  if (!input.session) return mcpError("Error: session is required for read_sections action");
1521
- const { readSessionSections } = await import("./dist-MF5BK5AD.js");
1526
+ const { readSessionSections } = await import("./dist-WHL3NN5S.js");
1522
1527
  const result = await readSessionSections(projectPath, input.session);
1523
1528
  return resultToMcpResponse(result);
1524
1529
  }
1525
1530
  async function handleArchiveSession(projectPath, input) {
1526
1531
  if (!input.session) return mcpError("Error: session is required for archive_session action");
1527
- const { archiveSession } = await import("./dist-MF5BK5AD.js");
1532
+ const { archiveSession } = await import("./dist-WHL3NN5S.js");
1528
1533
  const result = await archiveSession(projectPath, input.session);
1529
1534
  if (!result.ok) return resultToMcpResponse(result);
1530
1535
  await autoSyncRoadmap(projectPath);
@@ -1588,7 +1593,7 @@ var listStreamsDefinition = {
1588
1593
  };
1589
1594
  async function handleListStreams(input) {
1590
1595
  try {
1591
- const { listStreams, loadStreamIndex } = await import("./dist-MF5BK5AD.js");
1596
+ const { listStreams, loadStreamIndex } = await import("./dist-WHL3NN5S.js");
1592
1597
  const projectPath = sanitizePath(input.path);
1593
1598
  const indexResult = await loadStreamIndex(projectPath);
1594
1599
  const streamsResult = await listStreams(projectPath);
@@ -1626,7 +1631,7 @@ var checkPhaseGateDefinition = {
1626
1631
  };
1627
1632
  async function handleCheckPhaseGate(input) {
1628
1633
  try {
1629
- const { runCheckPhaseGate } = await import("./check-phase-gate-OSHN2AEL.js");
1634
+ const { runCheckPhaseGate } = await import("./check-phase-gate-2VXVOUJ5.js");
1630
1635
  const result = await runCheckPhaseGate({ cwd: sanitizePath(input.path) });
1631
1636
  if (result.ok) {
1632
1637
  return { content: [{ type: "text", text: JSON.stringify(result.value) }] };
@@ -1682,7 +1687,7 @@ async function handleValidateCrossCheck(input) {
1682
1687
  };
1683
1688
  }
1684
1689
  try {
1685
- const { runCrossCheck } = await import("./validate-cross-check-YTDWIMFI.js");
1690
+ const { runCrossCheck } = await import("./validate-cross-check-76Z5P6EX.js");
1686
1691
  const specsDir = path12.resolve(projectPath, input.specsDir ?? "docs/specs");
1687
1692
  if (!specsDir.startsWith(projectPath)) {
1688
1693
  return {
@@ -2327,7 +2332,7 @@ async function handleGenerateSlashCommands(input) {
2327
2332
  // src/mcp/resources/state.ts
2328
2333
  async function getStateResource(projectRoot) {
2329
2334
  try {
2330
- const { loadState, migrateToStreams } = await import("./dist-MF5BK5AD.js");
2335
+ const { loadState, migrateToStreams } = await import("./dist-WHL3NN5S.js");
2331
2336
  await migrateToStreams(projectRoot);
2332
2337
  const result = await loadState(projectRoot);
2333
2338
  if (result.ok) {
@@ -3146,7 +3151,7 @@ var generateAgentDefinitionsDefinition = {
3146
3151
  }
3147
3152
  };
3148
3153
  async function handleGenerateAgentDefinitions(input) {
3149
- const { generateAgentDefinitions } = await import("./generate-agent-definitions-EYG263XD.js");
3154
+ const { generateAgentDefinitions } = await import("./generate-agent-definitions-LN3A45OL.js");
3150
3155
  const platforms = input.platform === "all" || !input.platform ? ["claude-code", "gemini-cli"] : [input.platform];
3151
3156
  const results = generateAgentDefinitions({
3152
3157
  platforms: [...platforms],
@@ -3443,7 +3448,7 @@ function handleSync(projectPath, input, deps) {
3443
3448
  }
3444
3449
  async function handleManageRoadmap(input) {
3445
3450
  try {
3446
- const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-MF5BK5AD.js");
3451
+ const { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges } = await import("./dist-WHL3NN5S.js");
3447
3452
  const { Ok: Ok2 } = await import("./dist-USY2C5JL.js");
3448
3453
  const projectPath = sanitizePath(input.path);
3449
3454
  const deps = { parseRoadmap, serializeRoadmap, syncRoadmap, applySyncChanges, Ok: Ok2 };
@@ -3871,7 +3876,7 @@ async function handleTransition(validInput, projectPath, id) {
3871
3876
  const transition = transitionResult.data;
3872
3877
  const prompt = renderTransition(transition);
3873
3878
  try {
3874
- const { saveHandoff } = await import("./dist-MF5BK5AD.js");
3879
+ const { saveHandoff } = await import("./dist-WHL3NN5S.js");
3875
3880
  await saveHandoff(
3876
3881
  projectPath,
3877
3882
  {
@@ -3941,7 +3946,7 @@ async function handleEmitInteraction(input) {
3941
3946
  }
3942
3947
  async function recordInteraction(projectPath, id, type, decision, stream) {
3943
3948
  try {
3944
- const { loadState, saveState } = await import("./dist-MF5BK5AD.js");
3949
+ const { loadState, saveState } = await import("./dist-WHL3NN5S.js");
3945
3950
  const stateResult = await loadState(projectPath, stream);
3946
3951
  if (stateResult.ok) {
3947
3952
  const state = stateResult.value;
@@ -4030,10 +4035,10 @@ async function handleGatherContext(input) {
4030
4035
  input.include ?? ["state", "learnings", "handoff", "graph", "validation"]
4031
4036
  );
4032
4037
  const errors = [];
4033
- const statePromise = includeSet.has("state") ? import("./dist-MF5BK5AD.js").then(
4038
+ const statePromise = includeSet.has("state") ? import("./dist-WHL3NN5S.js").then(
4034
4039
  (core) => core.loadState(projectPath, void 0, input.session)
4035
4040
  ) : Promise.resolve(null);
4036
- const learningsPromise = includeSet.has("learnings") ? import("./dist-MF5BK5AD.js").then(
4041
+ const learningsPromise = includeSet.has("learnings") ? import("./dist-WHL3NN5S.js").then(
4037
4042
  (core) => core.loadBudgetedLearnings(projectPath, {
4038
4043
  intent: input.intent,
4039
4044
  tokenBudget: input.learningsBudget ?? 1e3,
@@ -4042,7 +4047,7 @@ async function handleGatherContext(input) {
4042
4047
  ...input.depth !== void 0 && { depth: input.depth }
4043
4048
  })
4044
4049
  ) : Promise.resolve(null);
4045
- const handoffPromise = includeSet.has("handoff") ? import("./dist-MF5BK5AD.js").then(
4050
+ const handoffPromise = includeSet.has("handoff") ? import("./dist-WHL3NN5S.js").then(
4046
4051
  (core) => core.loadHandoff(projectPath, void 0, input.session)
4047
4052
  ) : Promise.resolve(null);
4048
4053
  const graphPromise = includeSet.has("graph") ? (async () => {
@@ -4086,11 +4091,11 @@ async function handleGatherContext(input) {
4086
4091
  context: contextBlocks
4087
4092
  };
4088
4093
  })() : Promise.resolve(null);
4089
- const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-MF5BK5AD.js").then(
4094
+ const sessionsPromise = includeSet.has("sessions") && input.session ? import("./dist-WHL3NN5S.js").then(
4090
4095
  (core) => core.readSessionSections(projectPath, input.session)
4091
4096
  ) : Promise.resolve(null);
4092
4097
  const shouldIncludeEvents = input.includeEvents !== void 0 ? input.includeEvents : includeSet.has("events") || !!input.session && !input.include;
4093
- const eventsPromise = shouldIncludeEvents ? import("./dist-MF5BK5AD.js").then(async (core) => {
4098
+ const eventsPromise = shouldIncludeEvents ? import("./dist-WHL3NN5S.js").then(async (core) => {
4094
4099
  const result = await core.loadEvents(projectPath, {
4095
4100
  session: input.session
4096
4101
  });
@@ -4098,7 +4103,7 @@ async function handleGatherContext(input) {
4098
4103
  return core.formatEventTimeline(result.value);
4099
4104
  }) : Promise.resolve(null);
4100
4105
  const validationPromise = includeSet.has("validation") ? (async () => {
4101
- const { handleValidateProject: handleValidateProject2 } = await import("./validate-SPSTH2YW.js");
4106
+ const { handleValidateProject: handleValidateProject2 } = await import("./validate-R5WGB2AV.js");
4102
4107
  const result = await handleValidateProject2({ path: projectPath });
4103
4108
  const first = result.content[0];
4104
4109
  return first ? JSON.parse(first.text) : null;
@@ -4192,7 +4197,7 @@ async function handleGatherContext(input) {
4192
4197
  };
4193
4198
  if (input.session) {
4194
4199
  try {
4195
- const core = await import("./dist-MF5BK5AD.js");
4200
+ const core = await import("./dist-WHL3NN5S.js");
4196
4201
  core.updateSessionIndex(
4197
4202
  projectPath,
4198
4203
  input.session,
@@ -4262,7 +4267,7 @@ async function handleAssessProject(input) {
4262
4267
  let validateResult = null;
4263
4268
  if (checksToRun.has("validate")) {
4264
4269
  try {
4265
- const { handleValidateProject: handleValidateProject2 } = await import("./validate-SPSTH2YW.js");
4270
+ const { handleValidateProject: handleValidateProject2 } = await import("./validate-R5WGB2AV.js");
4266
4271
  const result = await handleValidateProject2({ path: projectPath });
4267
4272
  const first = result.content[0];
4268
4273
  const parsed = first ? JSON.parse(first.text) : {};
@@ -4287,7 +4292,7 @@ async function handleAssessProject(input) {
4287
4292
  parallelChecks.push(
4288
4293
  (async () => {
4289
4294
  try {
4290
- const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-UBO5KKUV.js");
4295
+ const { handleCheckDependencies: handleCheckDependencies2 } = await import("./architecture-45YCLD26.js");
4291
4296
  const result = await handleCheckDependencies2({ path: projectPath });
4292
4297
  const first = result.content[0];
4293
4298
  const parsed = first ? JSON.parse(first.text) : {};
@@ -4314,7 +4319,7 @@ async function handleAssessProject(input) {
4314
4319
  parallelChecks.push(
4315
4320
  (async () => {
4316
4321
  try {
4317
- const { handleCheckDocs: handleCheckDocs2 } = await import("./docs-WZHW4N4P.js");
4322
+ const { handleCheckDocs: handleCheckDocs2 } = await import("./docs-FJFY7GF2.js");
4318
4323
  const result = await handleCheckDocs2({ path: projectPath, scope: "coverage" });
4319
4324
  const first = result.content[0];
4320
4325
  const parsed = first ? JSON.parse(first.text) : {};
@@ -4341,7 +4346,7 @@ async function handleAssessProject(input) {
4341
4346
  parallelChecks.push(
4342
4347
  (async () => {
4343
4348
  try {
4344
- const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-FCIGJIIT.js");
4349
+ const { handleDetectEntropy: handleDetectEntropy2 } = await import("./entropy-Y2GE4MYS.js");
4345
4350
  const result = await handleDetectEntropy2({ path: projectPath, type: "all" });
4346
4351
  const first = result.content[0];
4347
4352
  const parsed = first ? JSON.parse(first.text) : {};
@@ -4368,7 +4373,7 @@ async function handleAssessProject(input) {
4368
4373
  parallelChecks.push(
4369
4374
  (async () => {
4370
4375
  try {
4371
- const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-HTDKKGMX.js");
4376
+ const { handleRunSecurityScan: handleRunSecurityScan2 } = await import("./security-3T4JGDZP.js");
4372
4377
  const result = await handleRunSecurityScan2({ path: projectPath });
4373
4378
  const first = result.content[0];
4374
4379
  const parsed = first ? JSON.parse(first.text) : {};
@@ -4400,7 +4405,7 @@ async function handleAssessProject(input) {
4400
4405
  parallelChecks.push(
4401
4406
  (async () => {
4402
4407
  try {
4403
- const { handleCheckPerformance: handleCheckPerformance2 } = await import("./performance-NMJDV6HF.js");
4408
+ const { handleCheckPerformance: handleCheckPerformance2 } = await import("./performance-BSOMMWK5.js");
4404
4409
  const result = await handleCheckPerformance2({ path: projectPath });
4405
4410
  if ("isError" in result && result.isError) {
4406
4411
  const msg = result.content[0]?.text ?? "Performance check failed";
@@ -4603,7 +4608,7 @@ async function handleReviewChanges(input) {
4603
4608
  }
4604
4609
  }
4605
4610
  async function runQuickReview(projectPath, diff, diffLines, downgraded) {
4606
- const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-O3FYTZIE.js");
4611
+ const { handleAnalyzeDiff: handleAnalyzeDiff2 } = await import("./feedback-FKZ7GMPO.js");
4607
4612
  const result = await handleAnalyzeDiff2({ diff, path: projectPath });
4608
4613
  const firstContent = result.content[0];
4609
4614
  if (!firstContent) throw new Error("Empty analyze_diff response");
@@ -4634,7 +4639,7 @@ function extractFileCount(diffParsed) {
4634
4639
  return files?.length ?? 0;
4635
4640
  }
4636
4641
  async function runStandardReview(projectPath, diff, diffLines, downgraded) {
4637
- const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-O3FYTZIE.js");
4642
+ const { handleAnalyzeDiff: handleAnalyzeDiff2, handleCreateSelfReview: handleCreateSelfReview2 } = await import("./feedback-FKZ7GMPO.js");
4638
4643
  const [diffResult, reviewResult] = await Promise.all([
4639
4644
  handleAnalyzeDiff2({ diff, path: projectPath }),
4640
4645
  handleCreateSelfReview2({ path: projectPath, diff })
@@ -4666,7 +4671,7 @@ async function runStandardReview(projectPath, diff, diffLines, downgraded) {
4666
4671
  };
4667
4672
  }
4668
4673
  async function runDeepReview(projectPath, diff, diffLines, _downgraded) {
4669
- const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-MSEJWTKM.js");
4674
+ const { handleRunCodeReview: handleRunCodeReview2 } = await import("./review-pipeline-KUBHP3RV.js");
4670
4675
  const result = await handleRunCodeReview2({ path: projectPath, diff });
4671
4676
  const deepContent = result.content[0];
4672
4677
  if (!deepContent) throw new Error("Empty code review response");
@@ -4952,7 +4957,7 @@ async function handleDetectStaleConstraints(input) {
4952
4957
  ]
4953
4958
  };
4954
4959
  }
4955
- const { detectStaleConstraints } = await import("./dist-MF5BK5AD.js");
4960
+ const { detectStaleConstraints } = await import("./dist-WHL3NN5S.js");
4956
4961
  const result = detectStaleConstraints(
4957
4962
  store,
4958
4963
  windowDays,
@@ -5084,7 +5089,7 @@ async function handleCodeOutline(input) {
5084
5089
  };
5085
5090
  }
5086
5091
  try {
5087
- const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-MF5BK5AD.js");
5092
+ const { getOutline, formatOutline, EXTENSION_MAP } = await import("./dist-WHL3NN5S.js");
5088
5093
  const { stat } = await import("fs/promises");
5089
5094
  const stats = await stat(targetPath).catch(() => null);
5090
5095
  if (stats?.isFile()) {
@@ -5164,7 +5169,7 @@ async function handleCodeSearch(input) {
5164
5169
  };
5165
5170
  }
5166
5171
  try {
5167
- const { searchSymbols } = await import("./dist-MF5BK5AD.js");
5172
+ const { searchSymbols } = await import("./dist-WHL3NN5S.js");
5168
5173
  const result = await searchSymbols(input.query, directory, input.glob);
5169
5174
  const lines = [`Search: "${result.query}" \u2014 ${result.matches.length} matches`];
5170
5175
  for (const match of result.matches) {
@@ -5233,7 +5238,7 @@ async function handleCodeUnfold(input) {
5233
5238
  }
5234
5239
  try {
5235
5240
  if (input.symbol) {
5236
- const { unfoldSymbol } = await import("./dist-MF5BK5AD.js");
5241
+ const { unfoldSymbol } = await import("./dist-WHL3NN5S.js");
5237
5242
  const result = await unfoldSymbol(filePath, input.symbol);
5238
5243
  const header = result.warning ? `${result.file}:${result.startLine}-${result.endLine} ${result.warning}
5239
5244
  ` : `${result.file}:${result.startLine}-${result.endLine}
@@ -5241,7 +5246,7 @@ async function handleCodeUnfold(input) {
5241
5246
  return { content: [{ type: "text", text: header + result.content }] };
5242
5247
  }
5243
5248
  if (input.startLine != null && input.endLine != null) {
5244
- const { unfoldRange } = await import("./dist-MF5BK5AD.js");
5249
+ const { unfoldRange } = await import("./dist-WHL3NN5S.js");
5245
5250
  const result = await unfoldRange(filePath, input.startLine, input.endLine);
5246
5251
  const header = `${result.file}:${result.startLine}-${result.endLine}
5247
5252
  `;
@@ -5456,7 +5461,7 @@ async function appendUpdateNotification(result, resolvedRoot) {
5456
5461
  shouldRunCheck,
5457
5462
  readCheckState,
5458
5463
  spawnBackgroundCheck
5459
- } = await import("./dist-MF5BK5AD.js");
5464
+ } = await import("./dist-WHL3NN5S.js");
5460
5465
  const { CLI_VERSION } = await import("./version-KFFPOQAX.js");
5461
5466
  const configInterval = readConfigInterval(resolvedRoot);
5462
5467
  const DEFAULT_INTERVAL = 864e5;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateCIWorkflow
3
3
  } from "./chunk-SD3SQOZ2.js";
4
- import "./chunk-VF23UTNB.js";
4
+ import "./chunk-IC5CZSHF.js";
5
5
  import "./chunk-ERS5EVUZ.js";
6
6
  export {
7
7
  generateCIWorkflow