@smartergpt/lexrunner 2.0.1 → 2.0.2

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/CHANGELOG.md CHANGED
@@ -6,6 +6,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.0.2] - 2026-08-29
10
+
11
+ ### Fixed
12
+
13
+ - **Generated test-gate timeouts** - Pin standard GitHub and multi-repository `test` and `unit`
14
+ gates to an explicit five-minute plan timeout while leaving faster and custom gates on the
15
+ operation fallback. Multi-repository `unit` gates now use the same `npm test` command and
16
+ artifacts as `test` gates.
17
+ - **Timeout documentation truth** - Remove unimplemented `LEX_PR_TIMEOUT` and `gates.yml` timeout
18
+ claims. Document plan `timeoutMs` plus the CLI and MCP operation-default controls instead.
19
+
9
20
  ## [2.0.1] - 2026-08-29
10
21
 
11
22
  ### Fixed
package/README.md CHANGED
@@ -115,11 +115,12 @@ The checked-in package version is the single source for `lexrunner --version` an
115
115
 
116
116
  <!-- BEGIN GENERATED PACKAGE VERSION -->
117
117
 
118
- Current repository package version: **2.0.1**. npm availability and dist-tags are separate
118
+ Current repository package version: **2.0.2**. npm availability and dist-tags are separate
119
119
  release evidence; inspect the registry rather than inferring publication from source metadata.
120
120
  <!-- END GENERATED PACKAGE VERSION -->
121
121
 
122
- See the [2.0.1 MCP identity correction](docs/releases/2.0.1.md), the
122
+ See the [2.0.2 generated timeout correction](docs/releases/2.0.2.md), the
123
+ [2.0.1 MCP identity correction](docs/releases/2.0.1.md), the
123
124
  [2.0.0 plan-bound evidence release](docs/releases/2.0.0.md), the
124
125
  [1.5.2 exact Lex alignment release](docs/releases/1.5.2.md), the
125
126
  [1.5.1 release correction](docs/releases/1.5.1.md), the
package/dist/cli.cjs CHANGED
@@ -26773,7 +26773,7 @@ var import_config3 = require("dotenv/config");
26773
26773
  // package.json
26774
26774
  var package_default = {
26775
26775
  name: "@smartergpt/lexrunner",
26776
- version: "2.0.1",
26776
+ version: "2.0.2",
26777
26777
  type: "module",
26778
26778
  engines: {
26779
26779
  node: ">=24"
@@ -28982,6 +28982,7 @@ init_canonicalJson();
28982
28982
  // src/core/githubPlan.ts
28983
28983
  init_canonicalJson();
28984
28984
  init_planner();
28985
+ var STANDARD_TEST_GATE_TIMEOUT_MS = 5 * 60 * 1e3;
28985
28986
  async function generatePlanFromGitHub(client, options = {}) {
28986
28987
  const repoInfo = await client.validateRepository();
28987
28988
  const target = options.target || repoInfo.defaultBranch;
@@ -29086,7 +29087,8 @@ function createStandardGate(gateName, pr) {
29086
29087
  return {
29087
29088
  ...baseGate,
29088
29089
  run: "npm test",
29089
- artifacts: ["test-results.xml", "coverage/"]
29090
+ artifacts: ["test-results.xml", "coverage/"],
29091
+ timeoutMs: STANDARD_TEST_GATE_TIMEOUT_MS
29090
29092
  };
29091
29093
  case "typecheck":
29092
29094
  return {
@@ -29137,6 +29139,7 @@ function validateGitHubDependencies(planItems, prDetails) {
29137
29139
  // src/core/multiRepoPlan.ts
29138
29140
  init_github();
29139
29141
  init_canonicalJson();
29142
+ var STANDARD_TEST_GATE_TIMEOUT_MS2 = 5 * 60 * 1e3;
29140
29143
  async function generateMultiRepoPlan(repos, options = {}) {
29141
29144
  if (repos.length === 0) {
29142
29145
  throw new Error("At least one repository is required");
@@ -29273,7 +29276,8 @@ function generateGatesForMultiRepoPR(pr, options) {
29273
29276
  REPO_NAME: pr.repoName
29274
29277
  },
29275
29278
  runtime: "local",
29276
- artifacts: getGateArtifacts(gateName)
29279
+ artifacts: getGateArtifacts(gateName),
29280
+ ...isStandardTestGate(gateName) ? { timeoutMs: STANDARD_TEST_GATE_TIMEOUT_MS2 } : {}
29277
29281
  });
29278
29282
  }
29279
29283
  gates.sort((a, b) => a.name.localeCompare(b.name));
@@ -29283,6 +29287,7 @@ function getGateCommand(gateName) {
29283
29287
  const commands = {
29284
29288
  lint: "npm run lint",
29285
29289
  test: "npm test",
29290
+ unit: "npm test",
29286
29291
  typecheck: "npm run typecheck",
29287
29292
  build: "npm run build"
29288
29293
  };
@@ -29292,11 +29297,15 @@ function getGateArtifacts(gateName) {
29292
29297
  const artifacts = {
29293
29298
  lint: ["lint-results.txt"],
29294
29299
  test: ["test-results.xml", "coverage/"],
29300
+ unit: ["test-results.xml", "coverage/"],
29295
29301
  typecheck: ["typecheck-results.txt"],
29296
29302
  build: ["dist/"]
29297
29303
  };
29298
29304
  return artifacts[gateName] || [];
29299
29305
  }
29306
+ function isStandardTestGate(gateName) {
29307
+ return gateName === "test" || gateName === "unit";
29308
+ }
29300
29309
  function createEmptyPlan(target, options) {
29301
29310
  const plan = {
29302
29311
  schemaVersion: "1.0.0",
package/dist/cli.js CHANGED
@@ -470,7 +470,7 @@ import "dotenv/config";
470
470
  // package.json
471
471
  var package_default = {
472
472
  name: "@smartergpt/lexrunner",
473
- version: "2.0.1",
473
+ version: "2.0.2",
474
474
  type: "module",
475
475
  engines: {
476
476
  node: ">=24"
@@ -2639,6 +2639,7 @@ function installUnhandledRejectionHandler() {
2639
2639
  }
2640
2640
 
2641
2641
  // src/core/githubPlan.ts
2642
+ var STANDARD_TEST_GATE_TIMEOUT_MS = 5 * 60 * 1e3;
2642
2643
  async function generatePlanFromGitHub(client, options = {}) {
2643
2644
  const repoInfo = await client.validateRepository();
2644
2645
  const target = options.target || repoInfo.defaultBranch;
@@ -2743,7 +2744,8 @@ function createStandardGate(gateName, pr) {
2743
2744
  return {
2744
2745
  ...baseGate,
2745
2746
  run: "npm test",
2746
- artifacts: ["test-results.xml", "coverage/"]
2747
+ artifacts: ["test-results.xml", "coverage/"],
2748
+ timeoutMs: STANDARD_TEST_GATE_TIMEOUT_MS
2747
2749
  };
2748
2750
  case "typecheck":
2749
2751
  return {
@@ -2792,6 +2794,7 @@ function validateGitHubDependencies(planItems, prDetails) {
2792
2794
  }
2793
2795
 
2794
2796
  // src/core/multiRepoPlan.ts
2797
+ var STANDARD_TEST_GATE_TIMEOUT_MS2 = 5 * 60 * 1e3;
2795
2798
  async function generateMultiRepoPlan(repos, options = {}) {
2796
2799
  if (repos.length === 0) {
2797
2800
  throw new Error("At least one repository is required");
@@ -2928,7 +2931,8 @@ function generateGatesForMultiRepoPR(pr, options) {
2928
2931
  REPO_NAME: pr.repoName
2929
2932
  },
2930
2933
  runtime: "local",
2931
- artifacts: getGateArtifacts(gateName)
2934
+ artifacts: getGateArtifacts(gateName),
2935
+ ...isStandardTestGate(gateName) ? { timeoutMs: STANDARD_TEST_GATE_TIMEOUT_MS2 } : {}
2932
2936
  });
2933
2937
  }
2934
2938
  gates.sort((a, b) => a.name.localeCompare(b.name));
@@ -2938,6 +2942,7 @@ function getGateCommand(gateName) {
2938
2942
  const commands = {
2939
2943
  lint: "npm run lint",
2940
2944
  test: "npm test",
2945
+ unit: "npm test",
2941
2946
  typecheck: "npm run typecheck",
2942
2947
  build: "npm run build"
2943
2948
  };
@@ -2947,11 +2952,15 @@ function getGateArtifacts(gateName) {
2947
2952
  const artifacts = {
2948
2953
  lint: ["lint-results.txt"],
2949
2954
  test: ["test-results.xml", "coverage/"],
2955
+ unit: ["test-results.xml", "coverage/"],
2950
2956
  typecheck: ["typecheck-results.txt"],
2951
2957
  build: ["dist/"]
2952
2958
  };
2953
2959
  return artifacts[gateName] || [];
2954
2960
  }
2961
+ function isStandardTestGate(gateName) {
2962
+ return gateName === "test" || gateName === "unit";
2963
+ }
2955
2964
  function createEmptyPlan(target, options) {
2956
2965
  const plan = {
2957
2966
  schemaVersion: "1.0.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartergpt/lexrunner",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=24"