no-mistakes 0.90.0 → 0.91.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/bin/no-mistakes.js +10 -2
- package/executed-postgres-sql-types.d.ts +2 -0
- package/invocation-types.d.ts +3 -1
- package/package.json +5 -5
- package/planning-impact-artifacts-inputs.js +17 -1
- package/planning-impact-artifacts.js +1 -7
- package/planning-impact-cli.js +9 -0
- package/test-types.d.ts +2 -0
package/bin/no-mistakes.js
CHANGED
|
@@ -5,9 +5,17 @@ const { spawn } = require("node:child_process");
|
|
|
5
5
|
const { boundedDiagnostic } = require("../planning-impact-cli");
|
|
6
6
|
const { resolveNativePackage } = require("../scripts/native-package");
|
|
7
7
|
|
|
8
|
-
const VALUE_OPTIONS = new Set([
|
|
8
|
+
const VALUE_OPTIONS = new Set([
|
|
9
|
+
"--timeout",
|
|
10
|
+
"--invocation-timeout-ms",
|
|
11
|
+
"--lock-timeout",
|
|
12
|
+
"--jobs",
|
|
13
|
+
"--profile",
|
|
14
|
+
"-j",
|
|
15
|
+
]);
|
|
9
16
|
const FLAG_OPTIONS = new Set(["--fail-on-lock"]);
|
|
10
|
-
const INLINE_VALUE_OPTION =
|
|
17
|
+
const INLINE_VALUE_OPTION =
|
|
18
|
+
/^(?:--(?:timeout|invocation-timeout-ms|lock-timeout|jobs|profile)=|-j)/u;
|
|
11
19
|
|
|
12
20
|
function firstSubcommand(argv) {
|
|
13
21
|
const index = firstSubcommandIndex(argv);
|
|
@@ -43,6 +43,8 @@ export interface ExecutedPostgresSql {
|
|
|
43
43
|
/** True only when all incompleteness is from generated value binds. Parse before classifying reads. */
|
|
44
44
|
onlyValuePlaceholders: boolean;
|
|
45
45
|
kind: ExecutedPostgresSqlKind;
|
|
46
|
+
/** Evaluator blocker; null for complete SQL or proven generated value binds. */
|
|
47
|
+
incompleteReason: string | null;
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
/** Extract configured PostgreSQL executor calls from supplied TS/JS source. */
|
package/invocation-types.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
/** Controls shared by every analysis invocation.
|
|
1
|
+
/** Controls shared by every analysis invocation. timeout/lockTimeout use seconds; invocationTimeoutMs uses milliseconds. */
|
|
2
2
|
export interface InvocationOptions {
|
|
3
3
|
/** Command execution timeout in whole non-negative seconds. Omit, `0`, or `null` disables it. CLI default remains 30. */
|
|
4
4
|
timeout?: number | null;
|
|
5
|
+
/** Positive safe-integer native invocation budget in milliseconds, shared by lock acquisition and execution. Never extends timeout or lockTimeout; profile ci disables it. Omit to preserve existing timeout semantics; null is invalid. */
|
|
6
|
+
invocationTimeoutMs?: number;
|
|
5
7
|
/** Maximum time to wait for the current user's invocation lock (shared across project roots), in whole non-negative seconds. Omit, `0`, or `null` waits indefinitely. CLI default remains 30. */
|
|
6
8
|
lockTimeout?: number | null;
|
|
7
9
|
/** Fail immediately instead of waiting when another invocation holds the lock. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "no-mistakes",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.91.1",
|
|
4
4
|
"description": "Deterministic impact maps, test plans, Playwright coverage, and repository checks for coding agents",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -65,9 +65,9 @@
|
|
|
65
65
|
}
|
|
66
66
|
},
|
|
67
67
|
"optionalDependencies": {
|
|
68
|
-
"no-mistakes-darwin-arm64": "0.
|
|
69
|
-
"no-mistakes-linux-arm64-gnu": "0.
|
|
70
|
-
"no-mistakes-linux-x64-gnu": "0.
|
|
71
|
-
"no-mistakes-win32-x64-msvc": "0.
|
|
68
|
+
"no-mistakes-darwin-arm64": "0.91.1",
|
|
69
|
+
"no-mistakes-linux-arm64-gnu": "0.91.1",
|
|
70
|
+
"no-mistakes-linux-x64-gnu": "0.91.1",
|
|
71
|
+
"no-mistakes-win32-x64-msvc": "0.91.1"
|
|
72
72
|
}
|
|
73
73
|
}
|
|
@@ -84,4 +84,20 @@ function completeResult(result, requestedReports) {
|
|
|
84
84
|
return { reports: [...omitted, ...result.reports] };
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
function invocationOptions(options) {
|
|
88
|
+
return Object.fromEntries(
|
|
89
|
+
[
|
|
90
|
+
"timeout",
|
|
91
|
+
"invocationTimeoutMs",
|
|
92
|
+
"lockTimeout",
|
|
93
|
+
"failOnLock",
|
|
94
|
+
"jobs",
|
|
95
|
+
"profile",
|
|
96
|
+
"diagnosticsId",
|
|
97
|
+
]
|
|
98
|
+
.filter((name) => Object.hasOwn(options, name))
|
|
99
|
+
.map((name) => [name, options[name]]),
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
module.exports = { buildRequest, completeResult, isReservedArtifactPath, invocationOptions };
|
|
@@ -14,6 +14,7 @@ const {
|
|
|
14
14
|
buildRequest,
|
|
15
15
|
completeResult,
|
|
16
16
|
isReservedArtifactPath,
|
|
17
|
+
invocationOptions,
|
|
17
18
|
} = require("./planning-impact-artifacts-inputs");
|
|
18
19
|
const { basename, isAbsolute, posix, resolve, win32 } = require("node:path");
|
|
19
20
|
const { TextDecoder } = require("node:util");
|
|
@@ -115,13 +116,6 @@ function decodeManifest(contents) {
|
|
|
115
116
|
throw new Error("changed-files manifest must be valid UTF-8");
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
|
-
function invocationOptions(options) {
|
|
119
|
-
return Object.fromEntries(
|
|
120
|
-
["timeout", "lockTimeout", "failOnLock", "jobs", "profile", "diagnosticsId"]
|
|
121
|
-
.filter((name) => Object.hasOwn(options, name))
|
|
122
|
-
.map((name) => [name, options[name]]),
|
|
123
|
-
);
|
|
124
|
-
}
|
|
125
119
|
function parseChangedFiles(source) {
|
|
126
120
|
const files = [...new Set(source.split(/\r\n|[\r\n]/u).filter((line) => line.length > 0))];
|
|
127
121
|
if (!files.length) throw new Error("changed-files manifest is empty");
|
package/planning-impact-cli.js
CHANGED
|
@@ -26,6 +26,7 @@ function parsePlanningImpactArgs(argv, root) {
|
|
|
26
26
|
timeout: { type: "string" },
|
|
27
27
|
"lock-timeout": { type: "string" },
|
|
28
28
|
"fail-on-lock": { type: "boolean" },
|
|
29
|
+
"invocation-timeout-ms": { type: "string" },
|
|
29
30
|
jobs: { type: "string", short: "j" },
|
|
30
31
|
profile: { type: "string" },
|
|
31
32
|
help: { type: "boolean", short: "h" },
|
|
@@ -51,6 +52,14 @@ function parsePlanningImpactArgs(argv, root) {
|
|
|
51
52
|
if (values[flag] !== undefined) options[key] = parseNonNegativeInteger(flag, values[flag]);
|
|
52
53
|
}
|
|
53
54
|
if (values["fail-on-lock"]) options.failOnLock = true;
|
|
55
|
+
if (values["invocation-timeout-ms"] !== undefined) {
|
|
56
|
+
options.invocationTimeoutMs = parseNonNegativeInteger(
|
|
57
|
+
"invocation-timeout-ms",
|
|
58
|
+
values["invocation-timeout-ms"],
|
|
59
|
+
);
|
|
60
|
+
if (options.invocationTimeoutMs === 0)
|
|
61
|
+
throw new Error("invocation-timeout-ms must be positive");
|
|
62
|
+
}
|
|
54
63
|
if (values.profile) options.profile = values.profile;
|
|
55
64
|
return options;
|
|
56
65
|
}
|
package/test-types.d.ts
CHANGED
|
@@ -186,6 +186,7 @@ export interface TestPlanGroup {
|
|
|
186
186
|
}
|
|
187
187
|
|
|
188
188
|
export interface TestPlanWarning {
|
|
189
|
+
/** Includes cargo-target-unresolved when a Rust test has no unambiguous enabled Cargo target. */
|
|
189
190
|
type: string;
|
|
190
191
|
message: string;
|
|
191
192
|
file: string;
|
|
@@ -204,6 +205,7 @@ export interface TestTargetRow {
|
|
|
204
205
|
}
|
|
205
206
|
|
|
206
207
|
export interface TestTargetWarning {
|
|
208
|
+
/** Includes cargo-target-unresolved; such files retain an empty targets array. */
|
|
207
209
|
type: string;
|
|
208
210
|
message: string;
|
|
209
211
|
file: string;
|