@esbenwiberg/corpus-default 1.1.0 → 1.2.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.
Files changed (74) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +24 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/probes/_shared/guidance-content.d.ts +9 -0
  5. package/dist/probes/_shared/guidance-content.d.ts.map +1 -0
  6. package/dist/probes/_shared/guidance-content.js +140 -0
  7. package/dist/probes/_shared/guidance-content.js.map +1 -0
  8. package/dist/probes/agent-guidance-aligned.d.ts +3 -0
  9. package/dist/probes/agent-guidance-aligned.d.ts.map +1 -0
  10. package/dist/probes/agent-guidance-aligned.js +130 -0
  11. package/dist/probes/agent-guidance-aligned.js.map +1 -0
  12. package/dist/probes/agent-guidance-fresh.d.ts.map +1 -1
  13. package/dist/probes/agent-guidance-fresh.js +3 -13
  14. package/dist/probes/agent-guidance-fresh.js.map +1 -1
  15. package/dist/probes/agent-guidance-quality.d.ts.map +1 -1
  16. package/dist/probes/agent-guidance-quality.js +3 -13
  17. package/dist/probes/agent-guidance-quality.js.map +1 -1
  18. package/dist/probes/agent-guidance-substance.d.ts.map +1 -1
  19. package/dist/probes/agent-guidance-substance.js +20 -3
  20. package/dist/probes/agent-guidance-substance.js.map +1 -1
  21. package/dist/probes/agent-skills-present.d.ts +3 -0
  22. package/dist/probes/agent-skills-present.d.ts.map +1 -0
  23. package/dist/probes/agent-skills-present.js +82 -0
  24. package/dist/probes/agent-skills-present.js.map +1 -0
  25. package/dist/probes/agent-skills-quality.d.ts +3 -0
  26. package/dist/probes/agent-skills-quality.d.ts.map +1 -0
  27. package/dist/probes/agent-skills-quality.js +148 -0
  28. package/dist/probes/agent-skills-quality.js.map +1 -0
  29. package/dist/probes/arch-coupling-hotspots.d.ts +3 -0
  30. package/dist/probes/arch-coupling-hotspots.d.ts.map +1 -0
  31. package/dist/probes/arch-coupling-hotspots.js +222 -0
  32. package/dist/probes/arch-coupling-hotspots.js.map +1 -0
  33. package/dist/probes/contracts-machine-readable.d.ts +3 -0
  34. package/dist/probes/contracts-machine-readable.d.ts.map +1 -0
  35. package/dist/probes/contracts-machine-readable.js +139 -0
  36. package/dist/probes/contracts-machine-readable.js.map +1 -0
  37. package/dist/probes/errors-actionability.d.ts.map +1 -1
  38. package/dist/probes/errors-actionability.js +132 -22
  39. package/dist/probes/errors-actionability.js.map +1 -1
  40. package/dist/probes/generated-code-marked.d.ts +3 -0
  41. package/dist/probes/generated-code-marked.d.ts.map +1 -0
  42. package/dist/probes/generated-code-marked.js +110 -0
  43. package/dist/probes/generated-code-marked.js.map +1 -0
  44. package/dist/probes/hooks-precommit-present.d.ts.map +1 -1
  45. package/dist/probes/hooks-precommit-present.js +81 -5
  46. package/dist/probes/hooks-precommit-present.js.map +1 -1
  47. package/dist/probes/specs-test-traceability.d.ts +3 -0
  48. package/dist/probes/specs-test-traceability.d.ts.map +1 -0
  49. package/dist/probes/specs-test-traceability.js +198 -0
  50. package/dist/probes/specs-test-traceability.js.map +1 -0
  51. package/dist/probes/tests-agent-safe-command.d.ts +3 -0
  52. package/dist/probes/tests-agent-safe-command.d.ts.map +1 -0
  53. package/dist/probes/tests-agent-safe-command.js +158 -0
  54. package/dist/probes/tests-agent-safe-command.js.map +1 -0
  55. package/dist/probes/tests-cover-public-surface.d.ts.map +1 -1
  56. package/dist/probes/tests-cover-public-surface.js +93 -12
  57. package/dist/probes/tests-cover-public-surface.js.map +1 -1
  58. package/dist/probes/tests-deterministic.d.ts +3 -0
  59. package/dist/probes/tests-deterministic.d.ts.map +1 -0
  60. package/dist/probes/tests-deterministic.js +204 -0
  61. package/dist/probes/tests-deterministic.js.map +1 -0
  62. package/dist/probes/tests-failure-actionability.d.ts +3 -0
  63. package/dist/probes/tests-failure-actionability.d.ts.map +1 -0
  64. package/dist/probes/tests-failure-actionability.js +139 -0
  65. package/dist/probes/tests-failure-actionability.js.map +1 -0
  66. package/dist/probes/tests-oracle-quality.d.ts +3 -0
  67. package/dist/probes/tests-oracle-quality.d.ts.map +1 -0
  68. package/dist/probes/tests-oracle-quality.js +140 -0
  69. package/dist/probes/tests-oracle-quality.js.map +1 -0
  70. package/dist/probes/types-escape-hatches.d.ts +3 -0
  71. package/dist/probes/types-escape-hatches.d.ts.map +1 -0
  72. package/dist/probes/types-escape-hatches.js +229 -0
  73. package/dist/probes/types-escape-hatches.js.map +1 -0
  74. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"errors-actionability.d.ts","sourceRoot":"","sources":["../../src/probes/errors-actionability.ts"],"names":[],"mappings":";AA+BA,wBAuKG"}
1
+ {"version":3,"file":"errors-actionability.d.ts","sourceRoot":"","sources":["../../src/probes/errors-actionability.ts"],"names":[],"mappings":";AA+BA,wBA2RG"}
@@ -1,5 +1,5 @@
1
1
  import { defineProbe } from "@esbenwiberg/repofit/sdk";
2
- const PROBE_VERSION = "1.0.0";
2
+ const PROBE_VERSION = "2.0.0";
3
3
  const MAX_INPUT_CHARS = 6_000;
4
4
  const RUBRIC = {
5
5
  task: "Judge whether the toolchain configured in this repo would produce error messages that help a coding agent fix problems — not just say 'something broke'.",
@@ -28,26 +28,30 @@ export default defineProbe({
28
28
  version: PROBE_VERSION,
29
29
  dimensions: [{ id: "feedback", weight: 1 }],
30
30
  tier: "reasoned",
31
- evidence: ["node_package", "files", "judge"],
31
+ evidence: [
32
+ "node_package",
33
+ "python_project",
34
+ "dotnet_project",
35
+ "go_module",
36
+ "toolchain",
37
+ "files",
38
+ "judge",
39
+ ],
32
40
  rationale: `
33
41
  When an agent makes a change and a script fails, the error message is
34
42
  the only signal it has to act on. Tools that emit clear file:line
35
- diagnostics (Biome, TSC strict, Vitest) let the agent self-correct;
36
- tools run with --silent or homegrown shell scripts that just exit 1
37
- leave the agent guessing. This probe asks an LLM to judge the
38
- toolchain — which tools are configured, how they're scripted, and
39
- whether common feedback loops are present — for diagnostic quality.
43
+ diagnostics (Biome, TSC strict, Vitest, pytest, mypy, ruff, dotnet, go)
44
+ let the agent self-correct; tools run with --silent or homegrown shell
45
+ scripts that just exit 1 leave the agent guessing. This probe asks an LLM
46
+ to judge the toolchain — which tools are configured, how they're scripted,
47
+ and whether common feedback loops are present — for diagnostic quality.
40
48
  `,
41
49
  remediation: "Use tools that emit file:line:col diagnostics (TSC strict, Biome, ESLint, Vitest, Pytest, rustc). Remove `--silent` / `--quiet` / `2>/dev/null` from scripts. Avoid parallel runners that interleave output during failure investigation. Wire up the full feedback loop: typecheck, lint, test, build — each with a clear script name.",
42
50
  async detect(ev) {
43
- if (!ev.node_package.present) {
44
- return { kind: "na", reason: "no package.json" };
45
- }
46
- const scripts = ev.node_package.scripts;
47
- if (Object.keys(scripts).length === 0) {
48
- return { kind: "na", reason: "package.json has no scripts" };
51
+ if (!ev.toolchain.primary && !ev.node_package.present) {
52
+ return { kind: "na", reason: "no supported stack or package.json scripts" };
49
53
  }
50
- const interestingConfigs = [
54
+ const nodeConfigs = [
51
55
  "tsconfig.json",
52
56
  "biome.json",
53
57
  "biome.jsonc",
@@ -63,12 +67,51 @@ export default defineProbe({
63
67
  ".prettierrc",
64
68
  "prettier.config.js",
65
69
  ];
66
- const presentConfigs = interestingConfigs.filter((p) => ev.files.has(p));
67
- const lines = ["# package.json scripts", ""];
70
+ const presentNodeConfigs = nodeConfigs.filter((p) => ev.files.has(p));
71
+ const pythonConfigs = [
72
+ ev.python_project.pyproject?.path,
73
+ ...(ev.python_project.configFiles ?? []),
74
+ ].filter((p) => typeof p === "string" && p.length > 0);
75
+ const dotnetConfigs = [
76
+ ...ev.dotnet_project.solutions,
77
+ ...ev.dotnet_project.projects.map((p) => p.path),
78
+ ev.dotnet_project.centralPackageManagement?.path,
79
+ ].filter((p) => typeof p === "string" && p.length > 0);
80
+ const goConfigs = ev.go_module.modules.map((m) => m.path);
81
+ const lines = ["# supported stacks", ""];
82
+ lines.push(`primary: ${ev.toolchain.primary ?? "(none)"}`);
83
+ lines.push(`detected: ${ev.toolchain.stacks.length === 0 ? "(none)" : ev.toolchain.stacks.join(", ")}`);
84
+ lines.push("", "# resolved toolchain commands", "");
85
+ let commandCount = 0;
86
+ for (const [phase, cmd] of Object.entries(ev.toolchain.commands)) {
87
+ if (!cmd)
88
+ continue;
89
+ commandCount += 1;
90
+ lines.push(`${phase}: ${cmd.argv.join(" ")} (${cmd.source})`);
91
+ }
92
+ const scripts = ev.node_package.scripts;
93
+ const scriptEntries = Object.entries(scripts);
94
+ lines.push("", "# package.json scripts", "");
95
+ if (!ev.node_package.present) {
96
+ lines.push("(no package.json)");
97
+ }
98
+ else if (scriptEntries.length === 0) {
99
+ lines.push("(none detected)");
100
+ }
68
101
  for (const [name, body] of Object.entries(scripts)) {
102
+ commandCount += 1;
69
103
  lines.push(`${name}: ${shortString(body)}`);
70
104
  }
105
+ if (commandCount === 0) {
106
+ return { kind: "na", reason: "no toolchain commands configured" };
107
+ }
71
108
  lines.push("", "# tool configs present", "");
109
+ const presentConfigs = [
110
+ ...presentNodeConfigs,
111
+ ...pythonConfigs,
112
+ ...dotnetConfigs,
113
+ ...goConfigs,
114
+ ];
72
115
  lines.push(presentConfigs.length === 0 ? "(none detected)" : presentConfigs.join("\n"));
73
116
  const deps = Object.keys({
74
117
  ...(ev.node_package.dependencies ?? {}),
@@ -76,7 +119,11 @@ export default defineProbe({
76
119
  });
77
120
  const toolDeps = deps.filter((d) => /^(?:@biomejs|biome|eslint|prettier|typescript|vitest|jest|mocha|tsx|tsc|tap)\b/.test(d));
78
121
  lines.push("", "# tool-related dependencies", "");
79
- lines.push(toolDeps.length === 0 ? "(none detected)" : toolDeps.sort().join("\n"));
122
+ lines.push([
123
+ ...toolDeps.sort(),
124
+ ...(ev.python_project.pyproject?.toolHints ?? []),
125
+ ...(ev.python_project.requirementsToolHints ?? []),
126
+ ].join("\n") || "(none detected)");
80
127
  const input = lines.join("\n").slice(0, MAX_INPUT_CHARS);
81
128
  const result = await ev.judge.score({
82
129
  probeId: "errors.actionability",
@@ -95,16 +142,20 @@ export default defineProbe({
95
142
  score: { kind: "judge" },
96
143
  fixtures: [
97
144
  {
98
- name: "no-package-json",
99
- evidence: { node_package: { present: false } },
100
- expect: { reading: { kind: "na", reason: "no package.json" }, score: null },
145
+ name: "no-supported-stack",
146
+ evidence: { node_package: { present: false }, toolchain: { primary: null } },
147
+ expect: {
148
+ reading: { kind: "na", reason: "no supported stack or package.json scripts" },
149
+ score: null,
150
+ },
101
151
  },
102
152
  {
103
- name: "empty-scripts",
153
+ name: "empty-toolchain",
104
154
  evidence: {
105
155
  node_package: { present: true, scripts: {} },
156
+ toolchain: { stacks: ["node"], primary: "node", commands: {} },
106
157
  },
107
- expect: { reading: { kind: "na", reason: "package.json has no scripts" }, score: null },
158
+ expect: { reading: { kind: "na", reason: "no toolchain commands configured" }, score: null },
108
159
  },
109
160
  {
110
161
  name: "strong-toolchain",
@@ -114,6 +165,15 @@ export default defineProbe({
114
165
  scripts: { typecheck: "tsc --noEmit", lint: "biome check .", test: "vitest run" },
115
166
  devDependencies: { typescript: "^5", "@biomejs/biome": "^2", vitest: "^4" },
116
167
  },
168
+ toolchain: {
169
+ stacks: ["node"],
170
+ primary: "node",
171
+ commands: {
172
+ typecheck: { source: "node", argv: ["npm", "run", "typecheck", "--silent"] },
173
+ lint: { source: "node", argv: ["npm", "run", "lint", "--silent"] },
174
+ test: { source: "node", argv: ["npm", "test", "--silent"] },
175
+ },
176
+ },
117
177
  files: ["tsconfig.json", "biome.json", "vitest.config.ts"],
118
178
  judge: {
119
179
  score: 80,
@@ -141,6 +201,56 @@ export default defineProbe({
141
201
  score: 80,
142
202
  },
143
203
  },
204
+ {
205
+ name: "strong-python-toolchain",
206
+ evidence: {
207
+ python_project: {
208
+ present: true,
209
+ pyproject: {
210
+ path: "pyproject.toml",
211
+ hasBuildSystem: true,
212
+ tools: ["mypy", "pytest", "ruff"],
213
+ toolHints: ["mypy", "pytest", "ruff"],
214
+ },
215
+ configFiles: ["pytest.ini"],
216
+ },
217
+ toolchain: {
218
+ stacks: ["python"],
219
+ primary: "python",
220
+ commands: {
221
+ build: { source: "python", argv: ["python", "-m", "build"] },
222
+ typecheck: { source: "python", argv: ["mypy", "."] },
223
+ lint: { source: "python", argv: ["ruff", "check", "."] },
224
+ test: { source: "python", argv: ["pytest"] },
225
+ },
226
+ },
227
+ files: ["pyproject.toml", "pytest.ini"],
228
+ judge: {
229
+ score: 80,
230
+ perCriterion: {
231
+ "tool-clarity": 80,
232
+ "output-discipline": 80,
233
+ "feedback-loop-coverage": 80,
234
+ },
235
+ rationale: "Pytest, Ruff, mypy, and python -m build provide clear diagnostics.",
236
+ model: "fixture",
237
+ },
238
+ },
239
+ expect: {
240
+ reading: {
241
+ kind: "judge",
242
+ score: 80,
243
+ perCriterion: {
244
+ "tool-clarity": 80,
245
+ "output-discipline": 80,
246
+ "feedback-loop-coverage": 80,
247
+ },
248
+ rationale: "Pytest, Ruff, mypy, and python -m build provide clear diagnostics.",
249
+ model: "fixture",
250
+ },
251
+ score: 80,
252
+ },
253
+ },
144
254
  {
145
255
  name: "opaque-scripts",
146
256
  evidence: {
@@ -1 +1 @@
1
- {"version":3,"file":"errors-actionability.js","sourceRoot":"","sources":["../../src/probes/errors-actionability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors-actionability.js","sourceRoot":"","sources":["../../src/probes/errors-actionability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@esbenwiberg/repofit/sdk").Probe;
2
+ export default _default;
3
+ //# sourceMappingURL=generated-code-marked.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-code-marked.d.ts","sourceRoot":"","sources":["../../src/probes/generated-code-marked.ts"],"names":[],"mappings":";AAaA,wBAiHG"}
@@ -0,0 +1,110 @@
1
+ import { defineProbe } from "@esbenwiberg/repofit/sdk";
2
+ const SOURCE_OR_SCHEMA = /\.(?:ts|tsx|js|jsx|mjs|cjs|py|go|rs|java|kt|cs|json|ya?ml|graphql|proto)$/i;
3
+ const GENERATED_PATH = /(?:^|\/)(?:generated|__generated__|gen|autogen|openapi-client|graphql\/generated)(?:\/|$)|(?:^|\/)[^/]+\.(?:gen|generated|pb)\.[^.]+$/i;
4
+ const GENERATED_HEADER = /^\s*(?:\/\/|\/\*|\*|#|<!--)\s*(?:@generated|code generated|.*do not edit|auto-generated)/im;
5
+ const SKIP_DIRS = /(?:^|\/)(?:node_modules|coverage|\.git)\//;
6
+ const TEST_OR_FIXTURE_PATH = /(?:\.test\.|\.spec\.|__tests__|^tests?\/|\/tests?\/|^fixtures\/|\/fixtures\/|^examples\/|\/examples\/)/i;
7
+ export default defineProbe({
8
+ id: "generated.code-marked",
9
+ version: "1.0.0",
10
+ dimensions: [
11
+ { id: "context", weight: 0.5 },
12
+ { id: "cost", weight: 1 },
13
+ { id: "consistency", weight: 0.5 },
14
+ ],
15
+ tier: "static",
16
+ evidence: ["files", "size_stats"],
17
+ rationale: `
18
+ Generated code is often necessary, but agents should know not to edit it
19
+ as source. The size subsystem already respects files marked
20
+ linguist-generated. This probe flags tracked files that look generated by
21
+ path or header but are not marked generated.
22
+ `,
23
+ remediation: "Mark generated files in `.gitattributes` with `linguist-generated=true`, keep generated code under a clear directory, and document the source command that regenerates it. Agents should patch the source schema/template, not the artifact.",
24
+ async detect(ev) {
25
+ const candidates = ev.size_stats.files
26
+ .filter((f) => !f.generated)
27
+ .filter((f) => SOURCE_OR_SCHEMA.test(f.path) &&
28
+ !SKIP_DIRS.test(`/${f.path}`) &&
29
+ !TEST_OR_FIXTURE_PATH.test(f.path))
30
+ .sort((a, b) => a.path.localeCompare(b.path));
31
+ const items = [];
32
+ for (const f of candidates) {
33
+ let looksGenerated = GENERATED_PATH.test(f.path);
34
+ if (!looksGenerated && f.bytes < 100_000) {
35
+ const text = await ev.files.readText(f.path);
36
+ const head = text?.slice(0, 1_000) ?? "";
37
+ looksGenerated = GENERATED_HEADER.test(head);
38
+ }
39
+ if (looksGenerated) {
40
+ items.push({
41
+ location: { path: f.path },
42
+ severity: "warn",
43
+ message: "looks generated but is not marked generated",
44
+ });
45
+ }
46
+ }
47
+ return { kind: "inventory", items };
48
+ },
49
+ score: {
50
+ kind: "inventory",
51
+ severityWeights: { info: 1, warn: 3, error: 10 },
52
+ bands: [{ upTo: 0, score: 100 }, { upTo: 3, score: 80 }, { upTo: 9, score: 50 }, { score: 0 }],
53
+ },
54
+ fixtures: [
55
+ {
56
+ name: "no-generated-looking-files",
57
+ evidence: {
58
+ files: { "src/index.ts": "export const ok = true;\n" },
59
+ size_stats: {
60
+ source: "git-ls-files",
61
+ totalBytes: 100,
62
+ totalFiles: 1,
63
+ files: [{ path: "src/index.ts", bytes: 100, lines: 1, depth: 1 }],
64
+ },
65
+ },
66
+ expect: { reading: { kind: "inventory", items: [] }, score: 100 },
67
+ },
68
+ {
69
+ name: "marked-generated-is-ok",
70
+ evidence: {
71
+ files: { "src/generated/client.ts": "// Code generated by OpenAPI. DO NOT EDIT.\n" },
72
+ size_stats: {
73
+ source: "git-ls-files",
74
+ totalBytes: 100,
75
+ totalFiles: 1,
76
+ files: [
77
+ { path: "src/generated/client.ts", bytes: 100, lines: 1, depth: 2, generated: true },
78
+ ],
79
+ },
80
+ },
81
+ expect: { reading: { kind: "inventory", items: [] }, score: 100 },
82
+ },
83
+ {
84
+ name: "unmarked-generated",
85
+ evidence: {
86
+ files: { "src/generated/client.ts": "// Code generated by OpenAPI. DO NOT EDIT.\n" },
87
+ size_stats: {
88
+ source: "git-ls-files",
89
+ totalBytes: 100,
90
+ totalFiles: 1,
91
+ files: [{ path: "src/generated/client.ts", bytes: 100, lines: 1, depth: 2 }],
92
+ },
93
+ },
94
+ expect: {
95
+ reading: {
96
+ kind: "inventory",
97
+ items: [
98
+ {
99
+ location: { path: "src/generated/client.ts" },
100
+ severity: "warn",
101
+ message: "looks generated but is not marked generated",
102
+ },
103
+ ],
104
+ },
105
+ score: 80,
106
+ },
107
+ },
108
+ ],
109
+ });
110
+ //# sourceMappingURL=generated-code-marked.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-code-marked.js","sourceRoot":"","sources":["../../src/probes/generated-code-marked.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks-precommit-present.d.ts","sourceRoot":"","sources":["../../src/probes/hooks-precommit-present.ts"],"names":[],"mappings":";AAIA,wBA6CG"}
1
+ {"version":3,"file":"hooks-precommit-present.d.ts","sourceRoot":"","sources":["../../src/probes/hooks-precommit-present.ts"],"names":[],"mappings":";AAoBA,wBA4EG"}
@@ -1,20 +1,40 @@
1
1
  import { defineProbe } from "@esbenwiberg/repofit/sdk";
2
- const HOOK_PATHS = [".husky/pre-commit", ".githooks/pre-commit", ".pre-commit-config.yaml"];
2
+ const DIRECT_HOOK_PATHS = [
3
+ ".husky/pre-commit",
4
+ ".githooks/pre-commit",
5
+ ".git/hooks/pre-commit",
6
+ ".pre-commit-config.yaml",
7
+ ".pre-commit-config.yml",
8
+ ];
9
+ const CONFIG_HOOK_PATHS = [
10
+ "lefthook.yml",
11
+ "lefthook.yaml",
12
+ ".lefthook.yml",
13
+ ".lefthook.yaml",
14
+ ".lefthook/pre-commit.yml",
15
+ ".lefthook/pre-commit.yaml",
16
+ ".overcommit.yml",
17
+ ];
3
18
  export default defineProbe({
4
19
  id: "hooks.precommit-present",
5
- version: "1.0.0",
20
+ version: "1.1.0",
6
21
  dimensions: [{ id: "feedback", weight: 1 }],
7
22
  tier: "static",
8
- evidence: ["files"],
23
+ evidence: ["files", "node_package"],
9
24
  rationale: `
10
25
  A pre-commit hook is local feedback an agent can actually feel: if the
11
26
  commit it just made fails the hook, the failure is immediate and
12
27
  actionable. Without one, mistakes survive until CI (slower loop) or
13
28
  code review (much slower).
14
29
  `,
15
- remediation: "Wire a pre-commit hook. Easiest options: `husky` (Node), `pre-commit` (Python — `.pre-commit-config.yaml`), or commit hooks under `.githooks/` + `git config core.hooksPath .githooks`. Run lint/format/test from it.",
30
+ remediation: "Wire a pre-commit hook. Easiest options: `husky` or `simple-git-hooks` (Node), `pre-commit` (Python — `.pre-commit-config.yaml`), `lefthook`, `overcommit`, or commit hooks under `.githooks/` + `git config core.hooksPath .githooks`. Run lint/format/test from it.",
16
31
  async detect(ev) {
17
- return { kind: "predicate", value: HOOK_PATHS.some((p) => ev.files.has(p)) };
32
+ return {
33
+ kind: "predicate",
34
+ value: DIRECT_HOOK_PATHS.some((p) => ev.files.has(p)) ||
35
+ (await hasPreCommitManagerConfig(ev.files)) ||
36
+ hasPackageJsonPreCommitConfig(ev.node_package.raw),
37
+ };
18
38
  },
19
39
  score: { kind: "predicate", direction: "positive" },
20
40
  fixtures: [
@@ -33,6 +53,31 @@ export default defineProbe({
33
53
  evidence: { files: [".pre-commit-config.yaml"] },
34
54
  expect: { reading: { kind: "predicate", value: true }, score: 100 },
35
55
  },
56
+ {
57
+ name: "pre-commit-framework-yml",
58
+ evidence: { files: [".pre-commit-config.yml"] },
59
+ expect: { reading: { kind: "predicate", value: true }, score: 100 },
60
+ },
61
+ {
62
+ name: "lefthook-config",
63
+ evidence: {
64
+ files: { "lefthook.yml": "pre-commit:\n commands:\n lint:\n run: npm run lint\n" },
65
+ },
66
+ expect: { reading: { kind: "predicate", value: true }, score: 100 },
67
+ },
68
+ {
69
+ name: "simple-git-hooks-package-config",
70
+ evidence: {
71
+ node_package: {
72
+ present: true,
73
+ dependencies: {},
74
+ devDependencies: { "simple-git-hooks": "^2.13.1" },
75
+ scripts: {},
76
+ raw: { "simple-git-hooks": { "pre-commit": "npm test" } },
77
+ },
78
+ },
79
+ expect: { reading: { kind: "predicate", value: true }, score: 100 },
80
+ },
36
81
  {
37
82
  name: "no-hooks",
38
83
  evidence: { files: [] },
@@ -40,4 +85,35 @@ export default defineProbe({
40
85
  },
41
86
  ],
42
87
  });
88
+ async function hasPreCommitManagerConfig(files) {
89
+ for (const path of CONFIG_HOOK_PATHS) {
90
+ if (!files.has(path))
91
+ continue;
92
+ if (path.includes("/pre-commit."))
93
+ return true;
94
+ const content = await files.readText(path);
95
+ if (content === undefined)
96
+ return true;
97
+ if (/^pre-commit\s*:/m.test(content))
98
+ return true;
99
+ }
100
+ return false;
101
+ }
102
+ function hasPackageJsonPreCommitConfig(raw) {
103
+ if (!raw)
104
+ return false;
105
+ const husky = asRecord(raw.husky);
106
+ const huskyHooks = asRecord(husky?.hooks);
107
+ if (typeof huskyHooks?.["pre-commit"] === "string")
108
+ return true;
109
+ const simpleGitHooks = asRecord(raw["simple-git-hooks"]);
110
+ if (typeof simpleGitHooks?.["pre-commit"] === "string")
111
+ return true;
112
+ return false;
113
+ }
114
+ function asRecord(value) {
115
+ return value && typeof value === "object" && !Array.isArray(value)
116
+ ? value
117
+ : undefined;
118
+ }
43
119
  //# sourceMappingURL=hooks-precommit-present.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks-precommit-present.js","sourceRoot":"","sources":["../../src/probes/hooks-precommit-present.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,UAAU,GAAG,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,yBAAyB,CAAC,CAAC;AAE5F,eAAe,WAAW,CAAC;IACzB,EAAE,EAAE,yBAAyB;IAC7B,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAC3C,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,OAAO,CAAC;IAEnB,SAAS,EAAE;;;;;GAKV;IAED,WAAW,EACT,uNAAuN;IAEzN,KAAK,CAAC,MAAM,CAAC,EAAE;QACb,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,CAAC;IAED,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE;IAEnD,QAAQ,EAAE;QACR;YACE,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,mBAAmB,CAAC,EAAE;YAC1C,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACpE;QACD;YACE,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,sBAAsB,CAAC,EAAE;YAC7C,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACpE;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,yBAAyB,CAAC,EAAE;YAChD,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACpE;QACD;YACE,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACvB,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;SACnE;KACF;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"hooks-precommit-present.js","sourceRoot":"","sources":["../../src/probes/hooks-precommit-present.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@esbenwiberg/repofit/sdk").Probe;
2
+ export default _default;
3
+ //# sourceMappingURL=specs-test-traceability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specs-test-traceability.d.ts","sourceRoot":"","sources":["../../src/probes/specs-test-traceability.ts"],"names":[],"mappings":";AAsEA,wBAsJG"}