@harness-engineering/cli 4.0.1 → 4.1.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 (64) hide show
  1. package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +9 -8
  2. package/dist/agents/skills/claude-code/pre-merge-brief/SKILL.md +86 -0
  3. package/dist/agents/skills/claude-code/pre-merge-brief/skill.yaml +67 -0
  4. package/dist/agents/skills/codex/harness-autopilot/SKILL.md +9 -8
  5. package/dist/agents/skills/codex/pre-merge-brief/SKILL.md +86 -0
  6. package/dist/agents/skills/codex/pre-merge-brief/skill.yaml +67 -0
  7. package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +9 -8
  8. package/dist/agents/skills/cursor/pre-merge-brief/SKILL.md +86 -0
  9. package/dist/agents/skills/cursor/pre-merge-brief/skill.yaml +67 -0
  10. package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +9 -8
  11. package/dist/agents/skills/gemini-cli/pre-merge-brief/SKILL.md +86 -0
  12. package/dist/agents/skills/gemini-cli/pre-merge-brief/skill.yaml +67 -0
  13. package/dist/{agents-md-VJLYEH2S.js → agents-md-7L4PKKOM.js} +3 -3
  14. package/dist/analyzer-XRCV63KC-HLTEIKAJ.js +26 -0
  15. package/dist/{architecture-YQH2NYXY.js → architecture-RCHFDI7E.js} +4 -4
  16. package/dist/{assess-project-KOTAPAHD.js → assess-project-YUDPNRS6.js} +5 -3
  17. package/dist/bin/harness-mcp.js +14 -14
  18. package/dist/bin/harness.js +24 -24
  19. package/dist/{check-phase-gate-CHU2E3OU.js → check-phase-gate-56GS3A72.js} +4 -4
  20. package/dist/{chunk-JPVOI7GP.js → chunk-4SKWGVYD.js} +2 -2
  21. package/dist/{chunk-GHBFNLV2.js → chunk-ABRYIEWJ.js} +923 -614
  22. package/dist/{chunk-36GQREOE.js → chunk-AU4YPEIE.js} +3 -3
  23. package/dist/{chunk-OQ6KOQEV.js → chunk-DGVT4DBI.js} +3 -3
  24. package/dist/{chunk-I3CGCZJF.js → chunk-GLHLXTKC.js} +5 -5
  25. package/dist/{chunk-4VXFZSYF.js → chunk-GSYBGOY3.js} +1 -1
  26. package/dist/{chunk-UWVMJEUJ.js → chunk-IGWJRAJT.js} +1 -1
  27. package/dist/{chunk-YANR2RL7.js → chunk-N4AI2WFH.js} +1 -1
  28. package/dist/{chunk-5RSXUAMN.js → chunk-NCMJXBEO.js} +1 -1
  29. package/dist/{chunk-SEA2PFVI.js → chunk-OZSKLJQW.js} +1 -1
  30. package/dist/{chunk-AX5KGRM6.js → chunk-P4NA5OQX.js} +1 -1
  31. package/dist/{chunk-7PJCK7UE.js → chunk-RY2U77OY.js} +6 -6
  32. package/dist/{chunk-6SCYTIF4.js → chunk-RZQZXWEL.js} +32 -7
  33. package/dist/{chunk-MMLQPHZ5.js → chunk-UACYZCW4.js} +31 -13
  34. package/dist/{chunk-T746REAE.js → chunk-VG4G3R2V.js} +1 -1
  35. package/dist/{chunk-7TIJXWG3.js → chunk-XW5XVVMI.js} +2 -2
  36. package/dist/{chunk-E5EW5HVJ.js → chunk-XZNCONFG.js} +1 -1
  37. package/dist/{chunk-SDMV4QHM.js → chunk-Y33P35U3.js} +24 -6
  38. package/dist/{chunk-XAVMTAUT.js → chunk-Y5HPJMTM.js} +18 -2
  39. package/dist/{chunk-6YFHUIGT.js → chunk-YJYUJSWK.js} +58 -20
  40. package/dist/{chunk-AAUY53CC.js → chunk-YWRPQZL7.js} +1 -1
  41. package/dist/{chunk-M7F2PPN3.js → chunk-YXOPQEFZ.js} +2 -2
  42. package/dist/{chunk-RG3TNIUB.js → chunk-Z4XWWNYX.js} +86 -86
  43. package/dist/{chunk-EYMOPFSD.js → chunk-ZU6T7W3U.js} +2 -2
  44. package/dist/{ci-workflow-HO4WKGNG.js → ci-workflow-TFAA5BK7.js} +3 -3
  45. package/dist/{dist-6D2F2J57.js → dist-MCTEX5QH.js} +4 -2
  46. package/dist/{docs-FP47JONV.js → docs-BBMAN3CY.js} +4 -4
  47. package/dist/{engine-YUA6IYOG.js → engine-R2YH74AL.js} +3 -3
  48. package/dist/{entropy-DBW2INZU.js → entropy-5UP5N6AF.js} +6 -3
  49. package/dist/{feedback-BPHADTRQ.js → feedback-6MDCCFZL.js} +1 -1
  50. package/dist/{generate-agent-definitions-KPVGBGDY.js → generate-agent-definitions-KKAN5DB5.js} +4 -4
  51. package/dist/hooks/sentinel-pre.js +15 -138
  52. package/dist/index.d.ts +61 -0
  53. package/dist/index.js +24 -24
  54. package/dist/{loader-QOJQ6NZM.js → loader-2WT2ZE2T.js} +3 -3
  55. package/dist/{mcp-ZPX6O767.js → mcp-5V4LPMB3.js} +14 -14
  56. package/dist/{performance-FXYTGJGQ.js → performance-2N3CFXLR.js} +4 -4
  57. package/dist/{review-pipeline-2TFQ5OAE.js → review-pipeline-XZIGBU3Q.js} +3 -3
  58. package/dist/{runtime-XK6ZCHKE.js → runtime-POME3GTR.js} +3 -3
  59. package/dist/{security-4W2P5ZGI.js → security-QLJLMSIW.js} +1 -1
  60. package/dist/{state-events-ECQAIZLU.js → state-events-YY5KBZTC.js} +3 -3
  61. package/dist/{validate-64KTEGIE.js → validate-VZORVK43.js} +4 -4
  62. package/dist/{validate-cross-check-J5PVGICB.js → validate-cross-check-OYKEDCST.js} +3 -3
  63. package/package.json +5 -4
  64. package/dist/analyzer-V633GUHY-OV335HGM.js +0 -26
@@ -12,7 +12,7 @@ import {
12
12
  __esm
13
13
  } from "./chunk-KFQGP6VL.js";
14
14
 
15
- // ../core/dist/chunk-MUWJHO2S.mjs
15
+ // ../core/dist/chunk-JZ7UO3OF.mjs
16
16
  import { parse } from "@typescript-eslint/typescript-estree";
17
17
  import { access, constants, readFile } from "fs";
18
18
  import { promisify } from "util";
@@ -1021,18 +1021,57 @@ function extractPythonFromImport(child) {
1021
1021
  kind: "value"
1022
1022
  };
1023
1023
  }
1024
- function extractPythonExport(child) {
1025
- if (child.type === "function_definition" || child.type === "class_definition") {
1026
- return makeNamedExport(child);
1027
- }
1028
- if (child.type === "assignment") {
1029
- const left = child.childForFieldName("left") ?? child.children[0];
1030
- if (left && !left.text.startsWith("_")) {
1031
- return { name: left.text, type: "named", location: makeLocation2(child), isReExport: false };
1032
- }
1024
+ function makePythonExport(name, node) {
1025
+ return { name, type: "named", location: makeLocation2(node), isReExport: false };
1026
+ }
1027
+ function pythonAssignmentName(assignment) {
1028
+ const left = assignment.childForFieldName("left") ?? assignment.children[0];
1029
+ if (left && left.type === "identifier" && !left.text.startsWith("_")) {
1030
+ return left.text;
1033
1031
  }
1034
1032
  return null;
1035
1033
  }
1034
+ function unwrapPythonDefinition(node) {
1035
+ return node.childForFieldName("definition") ?? node.namedChildren.find(
1036
+ (c) => c.type === "function_definition" || c.type === "class_definition"
1037
+ ) ?? null;
1038
+ }
1039
+ function publicPythonDefName(node) {
1040
+ const name = node.childForFieldName("name");
1041
+ return name && !name.text.startsWith("_") ? name.text : null;
1042
+ }
1043
+ function collectExpressionStatementExports(node, out) {
1044
+ for (const child of node.namedChildren) {
1045
+ if (child.type !== "assignment") continue;
1046
+ const name = pythonAssignmentName(child);
1047
+ if (name) out.push(makePythonExport(name, child));
1048
+ }
1049
+ }
1050
+ function collectClassExports(node, out, descendIntoClass) {
1051
+ const name = publicPythonDefName(node);
1052
+ if (name) out.push(makePythonExport(name, node));
1053
+ const body = descendIntoClass ? node.childForFieldName("body") : null;
1054
+ if (!body) return;
1055
+ for (const member of body.namedChildren) {
1056
+ collectPythonExports(member, out, false);
1057
+ }
1058
+ }
1059
+ function collectPythonExports(node, out, descendIntoClass) {
1060
+ if (node.type === "decorated_definition") {
1061
+ const def = unwrapPythonDefinition(node);
1062
+ if (def) collectPythonExports(def, out, descendIntoClass);
1063
+ } else if (node.type === "expression_statement") {
1064
+ collectExpressionStatementExports(node, out);
1065
+ } else if (node.type === "function_definition") {
1066
+ const name = publicPythonDefName(node);
1067
+ if (name) out.push(makePythonExport(name, node));
1068
+ } else if (node.type === "class_definition") {
1069
+ collectClassExports(node, out, descendIntoClass);
1070
+ } else if (node.type === "assignment") {
1071
+ const name = pythonAssignmentName(node);
1072
+ if (name) out.push(makePythonExport(name, node));
1073
+ }
1074
+ }
1036
1075
  function extractGoImportPath(spec) {
1037
1076
  const pathNode = spec.childForFieldName("path") ?? spec.children.find((c) => c.type === "interpreted_string_literal");
1038
1077
  return pathNode ? pathNode.text.replace(/"/g, "") : null;
@@ -1108,8 +1147,8 @@ function getDefaultRegistry() {
1108
1147
  return registry;
1109
1148
  }
1110
1149
  var accessAsync, readFileAsync, DEFAULT_FIND_FILES_IGNORE, TypeScriptParser, EXTENSION_MAP, parserCache, initialized, GRAMMAR_MAP, TOP_LEVEL_TYPES, METHOD_TYPES, IDENTIFIER_TYPES, NAME_EXTRACTORS, EXTENSION_BY_LANG, JS_EXT_FALLBACKS, DEFAULT_THRESHOLDS, FUNCTION_PATTERNS, DECISION_PATTERNS, DEFAULT_THRESHOLDS2, pythonStrategy, goStrategy, RUST_USE_ARG_TYPES, RUST_PUB_ITEM_TYPES, rustStrategy, JAVA_IMPORT_TYPES, JAVA_EXPORT_TYPES, javaStrategy, STRATEGIES, TreeSitterParser, ParserRegistry, defaultRegistry;
1111
- var init_chunk_MUWJHO2S = __esm({
1112
- "../core/dist/chunk-MUWJHO2S.mjs"() {
1150
+ var init_chunk_JZ7UO3OF = __esm({
1151
+ "../core/dist/chunk-JZ7UO3OF.mjs"() {
1113
1152
  "use strict";
1114
1153
  init_dist();
1115
1154
  accessAsync = promisify(access);
@@ -1394,8 +1433,7 @@ var init_chunk_MUWJHO2S = __esm({
1394
1433
  extractExports(root) {
1395
1434
  const exports = [];
1396
1435
  for (const child of root.children) {
1397
- const exp = extractPythonExport(child);
1398
- if (exp) exports.push(exp);
1436
+ collectPythonExports(child, exports, true);
1399
1437
  }
1400
1438
  return exports;
1401
1439
  }
@@ -1605,7 +1643,7 @@ var init_chunk_MUWJHO2S = __esm({
1605
1643
  }
1606
1644
  });
1607
1645
 
1608
- // ../core/dist/chunk-S4DTDJ6J.mjs
1646
+ // ../core/dist/chunk-IHRT6II2.mjs
1609
1647
  import { resolve as resolve2 } from "path";
1610
1648
  import { minimatch as minimatch2 } from "minimatch";
1611
1649
  import { join, resolve as resolve3 } from "path";
@@ -3062,10 +3100,10 @@ function generateSuggestions(deadCode, drift, patterns) {
3062
3100
  };
3063
3101
  }
3064
3102
  var TS_HINTS, TS_CONVENTIONS, PYTHON_HINTS, PYTHON_CONVENTIONS, DEFAULT_INCLUDE_PATTERNS, BCP47_LOCALE_RE, FILE_REFERENCE_RE, CODE_BLOCK_LANGUAGES, DEFAULT_FORWARD_LOOKING_PATHS, DEFAULT_DRIFT_CONFIG, JS_EXT_FALLBACKS2, FILE_TYPES, EXPORT_TYPES, CONVENTION_DESCRIPTIONS, RULE_CHECKERS, EntropyAnalyzer;
3065
- var init_chunk_S4DTDJ6J = __esm({
3066
- "../core/dist/chunk-S4DTDJ6J.mjs"() {
3103
+ var init_chunk_IHRT6II2 = __esm({
3104
+ "../core/dist/chunk-IHRT6II2.mjs"() {
3067
3105
  "use strict";
3068
- init_chunk_MUWJHO2S();
3106
+ init_chunk_JZ7UO3OF();
3069
3107
  init_dist2();
3070
3108
  init_dist2();
3071
3109
  TS_HINTS = ['Add "exports" or "main" to package.json', "Create src/index.ts"];
@@ -3393,7 +3431,7 @@ export {
3393
3431
  detectComplexityViolations,
3394
3432
  detectCouplingViolations,
3395
3433
  getDefaultRegistry,
3396
- init_chunk_MUWJHO2S,
3434
+ init_chunk_JZ7UO3OF,
3397
3435
  buildSnapshot,
3398
3436
  detectDocDrift,
3399
3437
  detectDeadCode,
@@ -3402,5 +3440,5 @@ export {
3402
3440
  detectSizeBudgetViolations,
3403
3441
  generateSuggestions,
3404
3442
  EntropyAnalyzer,
3405
- init_chunk_S4DTDJ6J
3443
+ init_chunk_IHRT6II2
3406
3444
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  event_sourcing_exports,
3
3
  init_dist
4
- } from "./chunk-MMLQPHZ5.js";
4
+ } from "./chunk-UACYZCW4.js";
5
5
  import {
6
6
  Ok
7
7
  } from "./chunk-BDGTZRZ6.js";
@@ -27,7 +27,7 @@ var runSecurityScanDefinition = {
27
27
  };
28
28
  async function handleRunSecurityScan(input) {
29
29
  try {
30
- const core = await import("./dist-6D2F2J57.js");
30
+ const core = await import("./dist-MCTEX5QH.js");
31
31
  const projectRoot = sanitizePath(input.path);
32
32
  let configData = {};
33
33
  try {
@@ -114,7 +114,7 @@ var getSecurityTrendsDefinition = {
114
114
  };
115
115
  async function handleGetSecurityTrends(input) {
116
116
  try {
117
- const core = await import("./dist-6D2F2J57.js");
117
+ const core = await import("./dist-MCTEX5QH.js");
118
118
  const projectRoot = sanitizePath(input.path);
119
119
  const manager = new core.SecurityTimelineManager(projectRoot);
120
120
  const trendOptions = {};