@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.
- package/dist/bin/harness-mcp.js +1 -1
- package/dist/bin/harness.js +3 -3
- package/dist/{chunk-TCMVZ3B7.js → chunk-EHTUWULH.js} +1 -1
- package/dist/{chunk-SA57FVGX.js → chunk-VCC47EXU.js} +23 -8
- package/dist/{chunk-QTXW5TIS.js → chunk-XKU37HGH.js} +10 -1
- package/dist/index.js +3 -3
- package/dist/{mcp-ICXMTAD3.js → mcp-NUG4BMKJ.js} +1 -1
- package/dist/{scan-TX55R6QS.js → scan-M4EGDAQ2.js} +1 -1
- package/package.json +4 -4
package/dist/bin/harness-mcp.js
CHANGED
package/dist/bin/harness.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
createProgram,
|
|
4
4
|
installCommandTelemetry,
|
|
5
5
|
printFirstRunWelcome
|
|
6
|
-
} from "../chunk-
|
|
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-
|
|
20
|
+
import "../chunk-XKU37HGH.js";
|
|
21
21
|
import {
|
|
22
22
|
dispatchSkillsFromGit
|
|
23
|
-
} from "../chunk-
|
|
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.
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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(
|
|
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
|
|
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 {
|
|
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-
|
|
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-
|
|
63
|
+
} from "./chunk-XKU37HGH.js";
|
|
64
64
|
import {
|
|
65
65
|
createHarnessServer,
|
|
66
66
|
generateSlashCommands,
|
|
67
67
|
getToolDefinitions,
|
|
68
68
|
startServer
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-EHTUWULH.js";
|
|
70
70
|
import "./chunk-2FOLD76X.js";
|
|
71
71
|
import "./chunk-F3Y64VNF.js";
|
|
72
72
|
import "./chunk-IOW3MW2K.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@harness-engineering/cli",
|
|
3
|
-
"version": "1.27.
|
|
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": {
|