@harness-engineering/cli 1.27.0 → 1.27.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.
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  startServer
4
- } from "../chunk-TCMVZ3B7.js";
4
+ } from "../chunk-EHTUWULH.js";
5
5
  import "../chunk-2FOLD76X.js";
6
6
  import "../chunk-F3Y64VNF.js";
7
7
  import "../chunk-IOW3MW2K.js";
@@ -3,7 +3,7 @@ import {
3
3
  createProgram,
4
4
  installCommandTelemetry,
5
5
  printFirstRunWelcome
6
- } from "../chunk-SA57FVGX.js";
6
+ } from "../chunk-VCC47EXU.js";
7
7
  import "../chunk-EICASBYP.js";
8
8
  import "../chunk-C7RPQWBG.js";
9
9
  import "../chunk-FUS4OOGC.js";
@@ -17,10 +17,10 @@ import "../chunk-3XMOWLK3.js";
17
17
  import "../chunk-SDDQPMZK.js";
18
18
  import "../chunk-KET4QQZB.js";
19
19
  import "../chunk-BO4AJZRE.js";
20
- import "../chunk-QTXW5TIS.js";
20
+ import "../chunk-XKU37HGH.js";
21
21
  import {
22
22
  dispatchSkillsFromGit
23
- } from "../chunk-TCMVZ3B7.js";
23
+ } from "../chunk-EHTUWULH.js";
24
24
  import "../chunk-2FOLD76X.js";
25
25
  import "../chunk-F3Y64VNF.js";
26
26
  import "../chunk-IOW3MW2K.js";
@@ -6770,7 +6770,7 @@ async function handleCheckTraceability(input) {
6770
6770
  type: "text",
6771
6771
  text: JSON.stringify({
6772
6772
  status: "no-requirements",
6773
- message: "No requirement nodes found in graph. Ingest specs with RequirementIngestor first."
6773
+ message: "No requirement nodes found in graph. Run `harness scan` to ingest spec requirements."
6774
6774
  })
6775
6775
  }
6776
6776
  ]
@@ -42,7 +42,7 @@ import {
42
42
  } from "./chunk-BO4AJZRE.js";
43
43
  import {
44
44
  createScanCommand
45
- } from "./chunk-QTXW5TIS.js";
45
+ } from "./chunk-XKU37HGH.js";
46
46
  import {
47
47
  appendFrameworkAgents,
48
48
  captureHealthSnapshot,
@@ -56,7 +56,7 @@ import {
56
56
  loadCachedSnapshot,
57
57
  persistToolingConfig,
58
58
  recommend
59
- } from "./chunk-TCMVZ3B7.js";
59
+ } from "./chunk-EHTUWULH.js";
60
60
  import {
61
61
  loadGraphStore
62
62
  } from "./chunk-776JFSPK.js";
@@ -2933,6 +2933,7 @@ async function runIngest(projectPath, source, opts) {
2933
2933
  TopologicalLinker,
2934
2934
  KnowledgeIngestor,
2935
2935
  GitIngestor,
2936
+ RequirementIngestor,
2936
2937
  SyncManager,
2937
2938
  JiraConnector,
2938
2939
  SlackConnector,
@@ -2949,6 +2950,9 @@ async function runIngest(projectPath, source, opts) {
2949
2950
  const codeResult = await new CodeIngestor(store).ingest(projectPath);
2950
2951
  new TopologicalLinker(store).link();
2951
2952
  const knowledgeResult = await new KnowledgeIngestor(store).ingestAll(projectPath);
2953
+ const reqResult = await new RequirementIngestor(store).ingestSpecs(
2954
+ path18.join(projectPath, "docs", "changes")
2955
+ );
2952
2956
  const gitResult = await new GitIngestor(store).ingest(projectPath);
2953
2957
  const { createExtractionRunner } = await import("./dist-BZS2XRLG.js");
2954
2958
  const extractedDir = path18.join(projectPath, ".harness", "knowledge", "extracted");
@@ -2971,6 +2975,7 @@ async function runIngest(projectPath, source, opts) {
2971
2975
  const merged = mergeResults(
2972
2976
  codeResult,
2973
2977
  knowledgeResult,
2978
+ reqResult,
2974
2979
  gitResult,
2975
2980
  signalsResult,
2976
2981
  connectorResult
@@ -2989,6 +2994,11 @@ async function runIngest(projectPath, source, opts) {
2989
2994
  case "git":
2990
2995
  result = await new GitIngestor(store).ingest(projectPath);
2991
2996
  break;
2997
+ case "requirements":
2998
+ result = await new RequirementIngestor(store).ingestSpecs(
2999
+ path18.join(projectPath, "docs", "changes")
3000
+ );
3001
+ break;
2992
3002
  case "business-signals": {
2993
3003
  const { createExtractionRunner } = await import("./dist-BZS2XRLG.js");
2994
3004
  const extractedDir = path18.join(projectPath, ".harness", "knowledge", "extracted");
@@ -2999,7 +3009,7 @@ async function runIngest(projectPath, source, opts) {
2999
3009
  const knownConnectors = ["jira", "slack", "ci", "confluence", "figma", "miro"];
3000
3010
  if (!knownConnectors.includes(source)) {
3001
3011
  throw new Error(
3002
- `Unknown source: ${source}. Available: code, knowledge, git, business-signals, jira, slack, ci, confluence, figma, miro`
3012
+ `Unknown source: ${source}. Available: code, knowledge, git, requirements, business-signals, jira, slack, ci, confluence, figma, miro`
3003
3013
  );
3004
3014
  }
3005
3015
  if (!SyncManager) {
@@ -3029,7 +3039,7 @@ async function runIngest(projectPath, source, opts) {
3029
3039
  function createIngestCommand() {
3030
3040
  return new Command24("ingest").description("Ingest data into the knowledge graph").option(
3031
3041
  "--source <name>",
3032
- "Source to ingest (code, knowledge, git, business-signals, jira, slack, ci, confluence, figma, miro)"
3042
+ "Source to ingest (code, knowledge, git, requirements, business-signals, jira, slack, ci, confluence, figma, miro)"
3033
3043
  ).option("--all", "Run all sources (code, knowledge, git, and configured connectors)").option("--full", "Force full re-ingestion").action(async (opts, cmd) => {
3034
3044
  if (!opts.source && !opts.all) {
3035
3045
  console.error("Error: --source or --all is required");
@@ -5626,7 +5636,7 @@ function createMcpCommand() {
5626
5636
  parseBudget
5627
5637
  ).action(async (opts) => {
5628
5638
  const [{ startServer: startServer2, getToolDefinitions: getToolDefinitions2 }, { selectTier }] = await Promise.all([
5629
- import("./mcp-ICXMTAD3.js"),
5639
+ import("./mcp-NUG4BMKJ.js"),
5630
5640
  import("./tool-tiers-7QGZ3FKY.js")
5631
5641
  ]);
5632
5642
  if (opts.tools && opts.tools.length > 0) {
@@ -6714,7 +6724,7 @@ function ensureHooks(cwd) {
6714
6724
  }
6715
6725
  async function runInitialGraphScan(cwd) {
6716
6726
  try {
6717
- const { runScan: runScan2 } = await import("./scan-TX55R6QS.js");
6727
+ const { runScan: runScan2 } = await import("./scan-M4EGDAQ2.js");
6718
6728
  const result = await runScan2(cwd);
6719
6729
  return {
6720
6730
  status: "pass",
@@ -8678,9 +8688,14 @@ function handleNoStore(mode) {
8678
8688
  }
8679
8689
  function handleEmptyResults(mode) {
8680
8690
  if (mode === OutputMode.JSON) {
8681
- console.log(JSON.stringify({ results: [], message: "No requirements found in graph." }));
8691
+ console.log(
8692
+ JSON.stringify({
8693
+ results: [],
8694
+ message: "No requirements found in graph. Run `harness scan` to ingest spec requirements."
8695
+ })
8696
+ );
8682
8697
  } else if (mode !== OutputMode.QUIET) {
8683
- logger.info("No requirements found in graph. Run `harness scan` to index spec files.");
8698
+ logger.info("No requirements found in graph. Run `harness scan` to ingest spec requirements.");
8684
8699
  }
8685
8700
  process.exit(ExitCode.SUCCESS);
8686
8701
  }
@@ -2,13 +2,22 @@
2
2
  import { Command } from "commander";
3
3
  import * as path from "path";
4
4
  async function runScan(projectPath) {
5
- const { GraphStore, CodeIngestor, TopologicalLinker, KnowledgeIngestor, GitIngestor } = await import("./dist-BZS2XRLG.js");
5
+ const {
6
+ GraphStore,
7
+ CodeIngestor,
8
+ TopologicalLinker,
9
+ KnowledgeIngestor,
10
+ GitIngestor,
11
+ RequirementIngestor
12
+ } = await import("./dist-BZS2XRLG.js");
6
13
  const store = new GraphStore();
7
14
  const start = Date.now();
8
15
  await new CodeIngestor(store).ingest(projectPath);
9
16
  new TopologicalLinker(store).link();
10
17
  const knowledgeIngestor = new KnowledgeIngestor(store);
11
18
  await knowledgeIngestor.ingestAll(projectPath);
19
+ const specsDir = path.join(projectPath, "docs", "changes");
20
+ await new RequirementIngestor(store).ingestSpecs(specsDir);
12
21
  try {
13
22
  await new GitIngestor(store).ingest(projectPath);
14
23
  } catch {
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  runSnapshotCapture,
13
13
  runUninstall,
14
14
  runUninstallConstraints
15
- } from "./chunk-SA57FVGX.js";
15
+ } from "./chunk-VCC47EXU.js";
16
16
  import {
17
17
  generateRuntime
18
18
  } from "./chunk-EICASBYP.js";
@@ -60,13 +60,13 @@ import {
60
60
  } from "./chunk-BO4AJZRE.js";
61
61
  import {
62
62
  runScan
63
- } from "./chunk-QTXW5TIS.js";
63
+ } from "./chunk-XKU37HGH.js";
64
64
  import {
65
65
  createHarnessServer,
66
66
  generateSlashCommands,
67
67
  getToolDefinitions,
68
68
  startServer
69
- } from "./chunk-TCMVZ3B7.js";
69
+ } from "./chunk-EHTUWULH.js";
70
70
  import "./chunk-2FOLD76X.js";
71
71
  import "./chunk-F3Y64VNF.js";
72
72
  import "./chunk-IOW3MW2K.js";
@@ -2,7 +2,7 @@ import {
2
2
  createHarnessServer,
3
3
  getToolDefinitions,
4
4
  startServer
5
- } from "./chunk-TCMVZ3B7.js";
5
+ } from "./chunk-EHTUWULH.js";
6
6
  import "./chunk-2FOLD76X.js";
7
7
  import "./chunk-F3Y64VNF.js";
8
8
  import "./chunk-IOW3MW2K.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createScanCommand,
3
3
  runScan
4
- } from "./chunk-QTXW5TIS.js";
4
+ } from "./chunk-XKU37HGH.js";
5
5
  import "./chunk-KFQGP6VL.js";
6
6
  export {
7
7
  createScanCommand,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harness-engineering/cli",
3
- "version": "1.27.0",
3
+ "version": "1.27.1",
4
4
  "description": "CLI for Harness Engineering toolkit",
5
5
  "type": "module",
6
6
  "bin": {
@@ -37,11 +37,11 @@
37
37
  "web-tree-sitter": "^0.24.7",
38
38
  "yaml": "^2.8.3",
39
39
  "zod": "^3.25.76",
40
- "@harness-engineering/core": "0.23.3",
41
- "@harness-engineering/dashboard": "0.2.2",
42
40
  "@harness-engineering/graph": "0.6.0",
43
- "@harness-engineering/linter-gen": "0.1.7",
44
41
  "@harness-engineering/orchestrator": "0.2.15",
42
+ "@harness-engineering/linter-gen": "0.1.7",
43
+ "@harness-engineering/core": "0.23.3",
44
+ "@harness-engineering/dashboard": "0.3.0",
45
45
  "@harness-engineering/types": "0.10.1"
46
46
  },
47
47
  "peerDependencies": {