@vyuhlabs/dxkit 2.22.0 → 2.23.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 (69) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/dist/analyzers/correctness/run.d.ts +79 -0
  3. package/dist/analyzers/correctness/run.d.ts.map +1 -0
  4. package/dist/analyzers/correctness/run.js +173 -0
  5. package/dist/analyzers/correctness/run.js.map +1 -0
  6. package/dist/analyzers/correctness/surface-run.d.ts +73 -0
  7. package/dist/analyzers/correctness/surface-run.d.ts.map +1 -0
  8. package/dist/analyzers/correctness/surface-run.js +142 -0
  9. package/dist/analyzers/correctness/surface-run.js.map +1 -0
  10. package/dist/analyzers/correctness/surface.d.ts +69 -0
  11. package/dist/analyzers/correctness/surface.d.ts.map +1 -0
  12. package/dist/analyzers/correctness/surface.js +281 -0
  13. package/dist/analyzers/correctness/surface.js.map +1 -0
  14. package/dist/cli.d.ts.map +1 -1
  15. package/dist/cli.js +77 -4
  16. package/dist/cli.js.map +1 -1
  17. package/dist/languages/capabilities/correctness.d.ts +54 -0
  18. package/dist/languages/capabilities/correctness.d.ts.map +1 -0
  19. package/dist/languages/capabilities/correctness.js +20 -0
  20. package/dist/languages/capabilities/correctness.js.map +1 -0
  21. package/dist/languages/csharp.d.ts.map +1 -1
  22. package/dist/languages/csharp.js +84 -0
  23. package/dist/languages/csharp.js.map +1 -1
  24. package/dist/languages/go.d.ts.map +1 -1
  25. package/dist/languages/go.js +51 -0
  26. package/dist/languages/go.js.map +1 -1
  27. package/dist/languages/index.d.ts +11 -0
  28. package/dist/languages/index.d.ts.map +1 -1
  29. package/dist/languages/index.js +12 -0
  30. package/dist/languages/index.js.map +1 -1
  31. package/dist/languages/java.d.ts.map +1 -1
  32. package/dist/languages/java.js +12 -0
  33. package/dist/languages/java.js.map +1 -1
  34. package/dist/languages/jvm-build.d.ts +54 -0
  35. package/dist/languages/jvm-build.d.ts.map +1 -0
  36. package/dist/languages/jvm-build.js +245 -0
  37. package/dist/languages/jvm-build.js.map +1 -0
  38. package/dist/languages/kotlin.d.ts.map +1 -1
  39. package/dist/languages/kotlin.js +13 -0
  40. package/dist/languages/kotlin.js.map +1 -1
  41. package/dist/languages/python.d.ts.map +1 -1
  42. package/dist/languages/python.js +78 -0
  43. package/dist/languages/python.js.map +1 -1
  44. package/dist/languages/ruby.d.ts.map +1 -1
  45. package/dist/languages/ruby.js +64 -0
  46. package/dist/languages/ruby.js.map +1 -1
  47. package/dist/languages/rust.d.ts.map +1 -1
  48. package/dist/languages/rust.js +110 -0
  49. package/dist/languages/rust.js.map +1 -1
  50. package/dist/languages/types.d.ts +20 -0
  51. package/dist/languages/types.d.ts.map +1 -1
  52. package/dist/languages/typescript.d.ts.map +1 -1
  53. package/dist/languages/typescript.js +109 -0
  54. package/dist/languages/typescript.js.map +1 -1
  55. package/dist/loop/floor-gate.d.ts +54 -0
  56. package/dist/loop/floor-gate.d.ts.map +1 -0
  57. package/dist/loop/floor-gate.js +157 -0
  58. package/dist/loop/floor-gate.js.map +1 -0
  59. package/dist/loop/floor-state.d.ts +66 -0
  60. package/dist/loop/floor-state.d.ts.map +1 -0
  61. package/dist/loop/floor-state.js +138 -0
  62. package/dist/loop/floor-state.js.map +1 -0
  63. package/dist/loop/stop-gate.d.ts +2 -1
  64. package/dist/loop/stop-gate.d.ts.map +1 -1
  65. package/dist/loop/stop-gate.js +44 -6
  66. package/dist/loop/stop-gate.js.map +1 -1
  67. package/package.json +1 -1
  68. package/templates/.githooks/pre-push +10 -0
  69. package/templates/.github/workflows/dxkit-guardrails.yml +17 -0
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Shared JVM build-tool glue for the correctness floor (CLAUDE.md Rule 2 — one
3
+ * gather/command-builder, consumed by every pack that needs it). Both the Java
4
+ * and Kotlin packs run on the same two build systems (Maven, Gradle) with the
5
+ * same multi-module affected unit — the MODULE — so the compile + affected-test
6
+ * command construction lives here once and is parameterized only by which source
7
+ * extensions count as a "relevant change".
8
+ *
9
+ * The floor's two commands:
10
+ * - syntaxCheck: compile the whole reactor/build (main + test sources). Cheap,
11
+ * incremental via the build tool's cache, bounded by the runner's timeout
12
+ * (fail-open → CI backstop). Not narrowed — compile is fast and a partial
13
+ * compile can miss a cross-module break.
14
+ * - affectedTests: run the changed MODULES' tests. Maven narrows via
15
+ * `-pl <modules> -am`; Gradle via `:<project>:test`. A single-module project
16
+ * (no sub-manifests) runs the whole build — that IS its affected surface, the
17
+ * same way Rust's single-crate `cargo test` is. A build-file change anywhere,
18
+ * or a source file that can't be attributed to a sub-module, falls back to
19
+ * the whole build (never silently under-tests). Cross-module DEPENDENTS of a
20
+ * change are caught at full/CI scope, not the affected surface — the same
21
+ * package/module-level rung as Go and C#.
22
+ *
23
+ * The wrapper (`gradlew`) is emitted as an ABSOLUTE path, not `./gradlew`: the
24
+ * runner's availability check stats the bin against the process cwd while
25
+ * execution uses the command cwd, so a relative wrapper path would be checked in
26
+ * the wrong directory. An absolute path is the resolved-path form the runner
27
+ * explicitly supports (venv python, findTool paths).
28
+ */
29
+ import type { CorrectnessProvider } from './capabilities/correctness';
30
+ /**
31
+ * Is this an Android Gradle build? The Android Gradle Plugin replaces the
32
+ * standard `test` / `testClasses` lifecycle tasks with variant-specific ones
33
+ * (`testDebugUnitTest`, `compileDebugKotlin`, …), so the plain commands this
34
+ * module builds don't apply — an Android project should decline the floor and
35
+ * let CI (which knows the variant) backstop, rather than false-fail on a
36
+ * "task not found". Cheap signal: the `com.android.*` plugin in a root build
37
+ * file. Exported so both JVM packs share the one detector.
38
+ */
39
+ export declare function isAndroidGradleBuild(cwd: string): boolean;
40
+ export interface JvmCorrectnessOptions {
41
+ /** Extensions that count as a relevant source change (`.java`, `.kt`/`.kts`). */
42
+ readonly sourceExtensions: readonly string[];
43
+ /** Optional escape hatch: decline the floor entirely when true (e.g. an
44
+ * Android Gradle build, whose variant-specific `testDebugUnitTest` tasks the
45
+ * standard `test`/`testClasses` commands don't cover — CI backstops). */
46
+ readonly declineWhen?: (cwd: string) => boolean;
47
+ }
48
+ /**
49
+ * Build a `CorrectnessProvider` for a JVM language pack. Shared by the Java and
50
+ * Kotlin packs (CLAUDE.md Rule 2) — the two differ only in which extensions mark
51
+ * a relevant change and whether an Android build should decline.
52
+ */
53
+ export declare function jvmCorrectnessProvider(opts: JvmCorrectnessOptions): CorrectnessProvider;
54
+ //# sourceMappingURL=jvm-build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jvm-build.d.ts","sourceRoot":"","sources":["../../src/languages/jvm-build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAwDpC;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAezD;AAiFD,MAAM,WAAW,qBAAqB;IACpC,iFAAiF;IACjF,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C;;8EAE0E;IAC1E,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACjD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,qBAAqB,GAAG,mBAAmB,CA6BvF"}
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ /**
3
+ * Shared JVM build-tool glue for the correctness floor (CLAUDE.md Rule 2 — one
4
+ * gather/command-builder, consumed by every pack that needs it). Both the Java
5
+ * and Kotlin packs run on the same two build systems (Maven, Gradle) with the
6
+ * same multi-module affected unit — the MODULE — so the compile + affected-test
7
+ * command construction lives here once and is parameterized only by which source
8
+ * extensions count as a "relevant change".
9
+ *
10
+ * The floor's two commands:
11
+ * - syntaxCheck: compile the whole reactor/build (main + test sources). Cheap,
12
+ * incremental via the build tool's cache, bounded by the runner's timeout
13
+ * (fail-open → CI backstop). Not narrowed — compile is fast and a partial
14
+ * compile can miss a cross-module break.
15
+ * - affectedTests: run the changed MODULES' tests. Maven narrows via
16
+ * `-pl <modules> -am`; Gradle via `:<project>:test`. A single-module project
17
+ * (no sub-manifests) runs the whole build — that IS its affected surface, the
18
+ * same way Rust's single-crate `cargo test` is. A build-file change anywhere,
19
+ * or a source file that can't be attributed to a sub-module, falls back to
20
+ * the whole build (never silently under-tests). Cross-module DEPENDENTS of a
21
+ * change are caught at full/CI scope, not the affected surface — the same
22
+ * package/module-level rung as Go and C#.
23
+ *
24
+ * The wrapper (`gradlew`) is emitted as an ABSOLUTE path, not `./gradlew`: the
25
+ * runner's availability check stats the bin against the process cwd while
26
+ * execution uses the command cwd, so a relative wrapper path would be checked in
27
+ * the wrong directory. An absolute path is the resolved-path form the runner
28
+ * explicitly supports (venv python, findTool paths).
29
+ */
30
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
31
+ if (k2 === undefined) k2 = k;
32
+ var desc = Object.getOwnPropertyDescriptor(m, k);
33
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
34
+ desc = { enumerable: true, get: function() { return m[k]; } };
35
+ }
36
+ Object.defineProperty(o, k2, desc);
37
+ }) : (function(o, m, k, k2) {
38
+ if (k2 === undefined) k2 = k;
39
+ o[k2] = m[k];
40
+ }));
41
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
42
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
43
+ }) : function(o, v) {
44
+ o["default"] = v;
45
+ });
46
+ var __importStar = (this && this.__importStar) || (function () {
47
+ var ownKeys = function(o) {
48
+ ownKeys = Object.getOwnPropertyNames || function (o) {
49
+ var ar = [];
50
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
51
+ return ar;
52
+ };
53
+ return ownKeys(o);
54
+ };
55
+ return function (mod) {
56
+ if (mod && mod.__esModule) return mod;
57
+ var result = {};
58
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
59
+ __setModuleDefault(result, mod);
60
+ return result;
61
+ };
62
+ })();
63
+ Object.defineProperty(exports, "__esModule", { value: true });
64
+ exports.isAndroidGradleBuild = isAndroidGradleBuild;
65
+ exports.jvmCorrectnessProvider = jvmCorrectnessProvider;
66
+ const fs = __importStar(require("fs"));
67
+ const path = __importStar(require("path"));
68
+ const runner_1 = require("../analyzers/tools/runner");
69
+ /** Per-system sub-module manifest filenames (a directory owning one of these is
70
+ * a build module we can narrow to). */
71
+ const MODULE_MANIFESTS = {
72
+ maven: ['pom.xml'],
73
+ gradle: ['build.gradle', 'build.gradle.kts'],
74
+ };
75
+ /** Any build-descriptor filename. A change to one of these can affect any
76
+ * module (a dependency/plugin/version bump), so it disqualifies narrowing. */
77
+ const JVM_BUILD_FILES = [
78
+ 'pom.xml',
79
+ 'build.gradle',
80
+ 'build.gradle.kts',
81
+ 'settings.gradle',
82
+ 'settings.gradle.kts',
83
+ 'gradle.properties',
84
+ 'libs.versions.toml',
85
+ ];
86
+ /** The absolute Gradle wrapper path when present, else bare `gradle` (PATH). */
87
+ function gradleBin(cwd) {
88
+ const wrapper = path.join(cwd, 'gradlew');
89
+ return fs.existsSync(wrapper) ? wrapper : 'gradle';
90
+ }
91
+ /** Detect the build system rooted at cwd. Maven-first when both are present
92
+ * (rare); null when neither manifest exists — the floor then skips. */
93
+ function detectJvmBuild(cwd) {
94
+ if ((0, runner_1.fileExists)(cwd, 'pom.xml'))
95
+ return { system: 'maven', bin: 'mvn' };
96
+ if ((0, runner_1.fileExists)(cwd, 'build.gradle') ||
97
+ (0, runner_1.fileExists)(cwd, 'build.gradle.kts') ||
98
+ (0, runner_1.fileExists)(cwd, 'gradlew') ||
99
+ (0, runner_1.fileExists)(cwd, 'settings.gradle') ||
100
+ (0, runner_1.fileExists)(cwd, 'settings.gradle.kts')) {
101
+ return { system: 'gradle', bin: gradleBin(cwd) };
102
+ }
103
+ return null;
104
+ }
105
+ function isJvmBuildFile(rel) {
106
+ const base = rel.replace(/\\/g, '/').split('/').pop() ?? '';
107
+ return JVM_BUILD_FILES.includes(base);
108
+ }
109
+ /**
110
+ * Is this an Android Gradle build? The Android Gradle Plugin replaces the
111
+ * standard `test` / `testClasses` lifecycle tasks with variant-specific ones
112
+ * (`testDebugUnitTest`, `compileDebugKotlin`, …), so the plain commands this
113
+ * module builds don't apply — an Android project should decline the floor and
114
+ * let CI (which knows the variant) backstop, rather than false-fail on a
115
+ * "task not found". Cheap signal: the `com.android.*` plugin in a root build
116
+ * file. Exported so both JVM packs share the one detector.
117
+ */
118
+ function isAndroidGradleBuild(cwd) {
119
+ for (const rel of [
120
+ 'build.gradle.kts',
121
+ 'build.gradle',
122
+ 'settings.gradle.kts',
123
+ 'settings.gradle',
124
+ ]) {
125
+ if (!(0, runner_1.fileExists)(cwd, rel))
126
+ continue;
127
+ try {
128
+ if (fs.readFileSync(path.join(cwd, rel), 'utf-8').includes('com.android'))
129
+ return true;
130
+ }
131
+ catch {
132
+ /* ignore unreadable */
133
+ }
134
+ }
135
+ return false;
136
+ }
137
+ /**
138
+ * The repo-relative directory of the nearest ANCESTOR sub-module owning
139
+ * `relFile` — the closest directory (below the root) that carries a module
140
+ * manifest. Returns null when the nearest manifest is the root itself (a
141
+ * root-level change affects the whole build) or none is found.
142
+ */
143
+ function nearestModuleDir(cwd, relFile, manifests) {
144
+ let dir = path.dirname(relFile).replace(/\\/g, '/');
145
+ for (;;) {
146
+ if (dir === '.' || dir === '')
147
+ return null; // reached the root → not a sub-module
148
+ try {
149
+ const entries = fs.readdirSync(path.join(cwd, dir));
150
+ if (entries.some((f) => manifests.includes(f)))
151
+ return dir;
152
+ }
153
+ catch {
154
+ /* dir unreadable — keep walking up */
155
+ }
156
+ dir = path.dirname(dir);
157
+ }
158
+ }
159
+ /**
160
+ * The distinct sub-module directories owning the changed source files. Returns
161
+ * null when ANY changed source file can't be attributed to a sub-module (it
162
+ * lives at the root, or the project is single-module) — the caller then runs the
163
+ * whole build, never under-testing.
164
+ */
165
+ function jvmChangedModules(cwd, changedSources, manifests) {
166
+ const mods = new Set();
167
+ for (const f of changedSources) {
168
+ const mod = nearestModuleDir(cwd, f, manifests);
169
+ if (mod === null)
170
+ return null; // root-level / single-module → whole build
171
+ mods.add(mod);
172
+ }
173
+ return [...mods];
174
+ }
175
+ /** Whole-build compile (main + test sources). */
176
+ function compileCommand(build) {
177
+ if (build.system === 'maven') {
178
+ return { label: 'compile', bin: build.bin, args: ['-q', '-B', 'test-compile'] };
179
+ }
180
+ // Unqualified `testClasses` runs in every subproject that has it (Gradle
181
+ // executes an unqualified task name across the root + all subprojects), so it
182
+ // compiles main + test for the whole build without the root needing the task.
183
+ return { label: 'compile', bin: build.bin, args: ['testClasses'] };
184
+ }
185
+ /** Whole-build test run (the `full`-scope and safe-fallback command). */
186
+ function testCommandFull(build) {
187
+ if (build.system === 'maven') {
188
+ return { label: 'affected-tests', bin: build.bin, args: ['-q', '-B', 'test'] };
189
+ }
190
+ return { label: 'affected-tests', bin: build.bin, args: ['test'] };
191
+ }
192
+ /** Narrowed test run over the given sub-module directories. */
193
+ function testCommandForModules(build, mods) {
194
+ if (build.system === 'maven') {
195
+ // -pl takes a comma-joined list of module paths; -am also-makes (compiles)
196
+ // the upstream dependencies of the listed modules so their tests can build.
197
+ return {
198
+ label: 'affected-tests',
199
+ bin: build.bin,
200
+ args: ['-q', '-B', '-pl', mods.join(','), '-am', 'test'],
201
+ };
202
+ }
203
+ // Gradle project path: `a/b` → `:a:b`, task `:a:b:test`.
204
+ const tasks = mods.map((d) => `:${d.replace(/\\/g, '/').split('/').join(':')}:test`);
205
+ return { label: 'affected-tests', bin: build.bin, args: tasks };
206
+ }
207
+ /**
208
+ * Build a `CorrectnessProvider` for a JVM language pack. Shared by the Java and
209
+ * Kotlin packs (CLAUDE.md Rule 2) — the two differ only in which extensions mark
210
+ * a relevant change and whether an Android build should decline.
211
+ */
212
+ function jvmCorrectnessProvider(opts) {
213
+ const isSource = (f) => opts.sourceExtensions.some((e) => f.endsWith(e));
214
+ return {
215
+ syntaxCheck(ctx) {
216
+ if (opts.declineWhen?.(ctx.cwd))
217
+ return null;
218
+ const build = detectJvmBuild(ctx.cwd);
219
+ if (!build)
220
+ return null;
221
+ return compileCommand(build);
222
+ },
223
+ affectedTests(ctx) {
224
+ if (opts.declineWhen?.(ctx.cwd))
225
+ return null;
226
+ const build = detectJvmBuild(ctx.cwd);
227
+ if (!build)
228
+ return null;
229
+ const undeterminable = ctx.changedFiles.length === 0;
230
+ if (ctx.scope !== 'affected' || undeterminable)
231
+ return testCommandFull(build);
232
+ const changedSources = ctx.changedFiles.filter(isSource);
233
+ if (changedSources.length === 0)
234
+ return null; // no relevant source change → skip
235
+ // A build-descriptor change can affect any module — don't narrow.
236
+ if (ctx.changedFiles.some(isJvmBuildFile))
237
+ return testCommandFull(build);
238
+ const mods = jvmChangedModules(ctx.cwd, changedSources, MODULE_MANIFESTS[build.system]);
239
+ if (mods && mods.length > 0)
240
+ return testCommandForModules(build, mods);
241
+ return testCommandFull(build); // single-module / unattributable → whole build
242
+ },
243
+ };
244
+ }
245
+ //# sourceMappingURL=jvm-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jvm-build.js","sourceRoot":"","sources":["../../src/languages/jvm-build.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"kotlin.d.ts","sourceRoot":"","sources":["../../src/languages/kotlin.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAKV,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAkD7D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAMhE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAWpE;AAuLD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAYjE;AA2FD,eAAO,MAAM,MAAM,EAAE,eAiIpB,CAAC"}
1
+ {"version":3,"file":"kotlin.d.ts","sourceRoot":"","sources":["../../src/languages/kotlin.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAKV,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAkD7D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAMhE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAWpE;AAuLD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAYjE;AAwGD,eAAO,MAAM,MAAM,EAAE,eAmIpB,CAAC"}
@@ -47,6 +47,7 @@ const walk_source_files_1 = require("../analyzers/tools/walk-source-files");
47
47
  const runner_1 = require("../analyzers/tools/runner");
48
48
  const run_tests_helper_1 = require("../analyzers/tools/run-tests-helper");
49
49
  const tool_registry_1 = require("../analyzers/tools/tool-registry");
50
+ const jvm_build_1 = require("./jvm-build");
50
51
  // ─── Detection ──────────────────────────────────────────────────────────────
51
52
  /**
52
53
  * Walk the project tree (bounded depth) looking for a `.kt` or `.kts`
@@ -416,6 +417,17 @@ const kotlinTestFrameworkProvider = {
416
417
  return gatherKotlinTestFrameworkResult(cwd);
417
418
  },
418
419
  };
420
+ // ─── Correctness floor (Maven/Gradle compile + module-affected tests) ──────
421
+ //
422
+ // Shared with the java pack via `jvmCorrectnessProvider` (CLAUDE.md Rule 2).
423
+ // Kotlin contributes both source extensions (`.kt` for sources, `.kts` for
424
+ // build/scratch scripts). An Android Gradle build declines — its variant-
425
+ // specific `testDebugUnitTest` / `compileDebugKotlin` tasks aren't the standard
426
+ // `test`/`testClasses` the shared commands run, so CI (variant-aware) backstops.
427
+ const kotlinCorrectnessProvider = (0, jvm_build_1.jvmCorrectnessProvider)({
428
+ sourceExtensions: ['.kt', '.kts'],
429
+ declineWhen: jvm_build_1.isAndroidGradleBuild,
430
+ });
419
431
  // ─── Pack export ────────────────────────────────────────────────────────────
420
432
  exports.kotlin = {
421
433
  id: 'kotlin',
@@ -501,6 +513,7 @@ exports.kotlin = {
501
513
  codeqlBeta: true,
502
514
  snykCode: true,
503
515
  },
516
+ correctness: kotlinCorrectnessProvider,
504
517
  capabilities: {
505
518
  depVulns: kotlinDepVulnsProvider,
506
519
  lint: kotlinLintProvider,
@@ -1 +1 @@
1
- {"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../src/languages/kotlin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../src/languages/kotlin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/languages/python.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,QAAQ,EAAyC,MAAM,6BAA6B,CAAC;AA8BnG,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAgE7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,OAAO,GAClB,MAAM,GAAG,IAAI,CAQf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,GACV,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA6B3D;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAC/D,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA0BvB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBnE;AAoBD,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAsCtF;AA6WD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB7D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB7F;AA8HD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8BlE;AAkGD,eAAO,MAAM,MAAM,EAAE,eAwGpB,CAAC"}
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/languages/python.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,QAAQ,EAAyC,MAAM,6BAA6B,CAAC;AAmCnG,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAgE7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,OAAO,GAClB,MAAM,GAAG,IAAI,CAQf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,GACV,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA6B3D;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAC/D,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA0BvB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBnE;AAoBD,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAsCtF;AA6WD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB7D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB7F;AA6MD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8BlE;AAkGD,eAAO,MAAM,MAAM,EAAE,eA0GpB,CAAC"}
@@ -790,6 +790,83 @@ const pyTestFrameworkProvider = {
790
790
  return gatherPyTestFrameworkResult(cwd);
791
791
  },
792
792
  };
793
+ /** The interpreter the floor runs — the project's venv python (absolute path,
794
+ * so it uses the env that actually has pytest installed) when resolvable,
795
+ * else `python3` / `python` on PATH. */
796
+ function floorPython(cwd) {
797
+ return findPyProjectVenvPython(cwd) ?? ((0, runner_1.commandExists)('python3') ? 'python3' : 'python');
798
+ }
799
+ /** Is pytest actually installed for the resolved interpreter? A venv python
800
+ * (`.../bin/python`) has a sibling `.../bin/pytest`; a PATH interpreter uses
801
+ * a PATH `pytest`. Gating on this keeps a project WITHOUT pytest installed
802
+ * fail-OPEN (the check is skipped) rather than a fail-CLOSED "No module named
803
+ * pytest" that would block a developer who hasn't installed test deps. */
804
+ function pytestInstalledFor(python) {
805
+ if (python.includes('/') || python.includes(path.sep)) {
806
+ const pytestBin = path.join(path.dirname(python), 'pytest');
807
+ return isPyExecutable(pytestBin);
808
+ }
809
+ return (0, runner_1.commandExists)('pytest');
810
+ }
811
+ /** A changed Python file that is a pytest test module (`test_*.py` /
812
+ * `*_test.py`, or under a `tests/` directory) — the pack's file-level
813
+ * affected-selection unit. */
814
+ function isPyTestFile(rel) {
815
+ const base = path.basename(rel);
816
+ return (/^test_.*\.py$/.test(base) ||
817
+ /_test\.py$/.test(base) ||
818
+ /(^|\/)tests?\//.test(rel.replace(/\\/g, '/')));
819
+ }
820
+ /**
821
+ * The Python correctness floor.
822
+ *
823
+ * syntaxCheck: `python -m py_compile <changed .py>` — the universal, stdlib
824
+ * parse check (needs only an interpreter, catches exactly syntax errors, and
825
+ * cannot false-positive on lint the way `ruff` would). Runs on the changed
826
+ * `.py` files; on the full/undeterminable surface it returns null because the
827
+ * pytest run below imports every module and surfaces a syntax error on import.
828
+ *
829
+ * affectedTests: `python -m pytest`. Native impact-selection needs a plugin
830
+ * (pytest-testmon / pytest-picked) that cannot be reliably detected without
831
+ * running, so the honest v1 rung is FILE-LEVEL — the changed test modules on
832
+ * the fast surface, the whole suite at full scope. A source-only change with no
833
+ * changed test module is syntax-checked on the fast surface and fully tested in
834
+ * CI. (Documented ceiling; testmon-based per-test selection is a future upgrade.)
835
+ */
836
+ const pyCorrectnessProvider = {
837
+ syntaxCheck(ctx) {
838
+ const changedPy = ctx.changedFiles.filter((f) => f.endsWith('.py'));
839
+ if (changedPy.length === 0)
840
+ return null; // full-scope backstop is the pytest import
841
+ const python = floorPython(ctx.cwd);
842
+ if (!binaryLike(python))
843
+ return null;
844
+ return { label: 'syntax', bin: python, args: ['-m', 'py_compile', ...changedPy] };
845
+ },
846
+ affectedTests(ctx) {
847
+ if (gatherPyTestFrameworkResult(ctx.cwd) === null)
848
+ return null; // no pytest project
849
+ const python = floorPython(ctx.cwd);
850
+ if (!pytestInstalledFor(python))
851
+ return null; // fail-open: pytest not installed here
852
+ const undeterminable = ctx.changedFiles.length === 0;
853
+ const changedTests = ctx.changedFiles.filter((f) => f.endsWith('.py') && isPyTestFile(f));
854
+ if (ctx.scope === 'affected' && !undeterminable) {
855
+ if (changedTests.length === 0)
856
+ return null; // no changed test module → nothing to run
857
+ return { label: 'affected-tests', bin: python, args: ['-m', 'pytest', ...changedTests] };
858
+ }
859
+ // Full scope, or the diff was undeterminable → run the whole suite.
860
+ return { label: 'affected-tests', bin: python, args: ['-m', 'pytest'] };
861
+ },
862
+ };
863
+ /** A `bin` we can hand the runner: a bare name (resolved on PATH) or an
864
+ * existing interpreter path. Mirrors the runner's own availability gate. */
865
+ function binaryLike(bin) {
866
+ if (bin.includes('/') || bin.includes(path.sep))
867
+ return isPyExecutable(bin);
868
+ return (0, runner_1.commandExists)(bin);
869
+ }
793
870
  /**
794
871
  * Check whether an absolute path points at a runnable Python
795
872
  * interpreter (a file; Windows `python.exe` not yet supported —
@@ -1012,6 +1089,7 @@ exports.python = {
1012
1089
  semgrepRulesets: ['p/python'],
1013
1090
  // CodeQL `python` extractor (no build); Snyk Code supports Python.
1014
1091
  deepSast: { codeqlLanguage: 'python', snykCode: true },
1092
+ correctness: pyCorrectnessProvider,
1015
1093
  capabilities: {
1016
1094
  depVulns: pyDepVulnsProvider,
1017
1095
  lint: pyLintProvider,