@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 +11 -0
- package/README.md +3 -2
- package/dist/cli.cjs +12 -3
- package/dist/cli.js +12 -3
- package/package.json +1 -1
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|