@vyuhlabs/dxkit 1.6.1 → 2.0.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 (210) hide show
  1. package/CHANGELOG.md +115 -0
  2. package/README.md +3 -3
  3. package/dist/agents/extract.d.ts +25 -0
  4. package/dist/agents/extract.d.ts.map +1 -0
  5. package/dist/agents/extract.js +186 -0
  6. package/dist/agents/extract.js.map +1 -0
  7. package/dist/agents/schemas.d.ts +106 -0
  8. package/dist/agents/schemas.d.ts.map +1 -0
  9. package/dist/agents/schemas.js +86 -0
  10. package/dist/agents/schemas.js.map +1 -0
  11. package/dist/agents/session.d.ts +28 -0
  12. package/dist/agents/session.d.ts.map +1 -0
  13. package/dist/agents/session.js +223 -0
  14. package/dist/agents/session.js.map +1 -0
  15. package/dist/analyzers/developer/detailed.js +1 -1
  16. package/dist/analyzers/developer/detailed.js.map +1 -1
  17. package/dist/analyzers/dispatcher.d.ts +36 -0
  18. package/dist/analyzers/dispatcher.d.ts.map +1 -0
  19. package/dist/analyzers/dispatcher.js +62 -0
  20. package/dist/analyzers/dispatcher.js.map +1 -0
  21. package/dist/analyzers/docs/shallow.d.ts +3 -2
  22. package/dist/analyzers/docs/shallow.d.ts.map +1 -1
  23. package/dist/analyzers/docs/shallow.js +2 -2
  24. package/dist/analyzers/docs/shallow.js.map +1 -1
  25. package/dist/analyzers/dx/shallow.d.ts +3 -2
  26. package/dist/analyzers/dx/shallow.d.ts.map +1 -1
  27. package/dist/analyzers/dx/shallow.js +2 -2
  28. package/dist/analyzers/dx/shallow.js.map +1 -1
  29. package/dist/analyzers/health/actions.d.ts +3 -3
  30. package/dist/analyzers/health/actions.d.ts.map +1 -1
  31. package/dist/analyzers/health/actions.js +99 -52
  32. package/dist/analyzers/health/actions.js.map +1 -1
  33. package/dist/analyzers/health/detailed.d.ts.map +1 -1
  34. package/dist/analyzers/health/detailed.js +6 -2
  35. package/dist/analyzers/health/detailed.js.map +1 -1
  36. package/dist/analyzers/health.d.ts +0 -2
  37. package/dist/analyzers/health.d.ts.map +1 -1
  38. package/dist/analyzers/health.js +134 -72
  39. package/dist/analyzers/health.js.map +1 -1
  40. package/dist/analyzers/maintainability/shallow.d.ts +3 -2
  41. package/dist/analyzers/maintainability/shallow.d.ts.map +1 -1
  42. package/dist/analyzers/maintainability/shallow.js +2 -2
  43. package/dist/analyzers/maintainability/shallow.js.map +1 -1
  44. package/dist/analyzers/quality/detailed.js +1 -1
  45. package/dist/analyzers/quality/detailed.js.map +1 -1
  46. package/dist/analyzers/quality/gather.d.ts +33 -4
  47. package/dist/analyzers/quality/gather.d.ts.map +1 -1
  48. package/dist/analyzers/quality/gather.js +81 -93
  49. package/dist/analyzers/quality/gather.js.map +1 -1
  50. package/dist/analyzers/quality/index.js +4 -4
  51. package/dist/analyzers/quality/index.js.map +1 -1
  52. package/dist/analyzers/quality/shallow.d.ts +3 -2
  53. package/dist/analyzers/quality/shallow.d.ts.map +1 -1
  54. package/dist/analyzers/quality/shallow.js +2 -2
  55. package/dist/analyzers/quality/shallow.js.map +1 -1
  56. package/dist/analyzers/scoring.d.ts +26 -9
  57. package/dist/analyzers/scoring.d.ts.map +1 -1
  58. package/dist/analyzers/scoring.js +83 -71
  59. package/dist/analyzers/scoring.js.map +1 -1
  60. package/dist/analyzers/security/detailed.js +1 -1
  61. package/dist/analyzers/security/detailed.js.map +1 -1
  62. package/dist/analyzers/security/gather.d.ts +28 -5
  63. package/dist/analyzers/security/gather.d.ts.map +1 -1
  64. package/dist/analyzers/security/gather.js +87 -135
  65. package/dist/analyzers/security/gather.js.map +1 -1
  66. package/dist/analyzers/security/index.d.ts +1 -1
  67. package/dist/analyzers/security/index.d.ts.map +1 -1
  68. package/dist/analyzers/security/index.js +16 -11
  69. package/dist/analyzers/security/index.js.map +1 -1
  70. package/dist/analyzers/security/report.d.ts +6 -0
  71. package/dist/analyzers/security/report.d.ts.map +1 -0
  72. package/dist/analyzers/security/report.js +118 -0
  73. package/dist/analyzers/security/report.js.map +1 -0
  74. package/dist/analyzers/security/shallow.d.ts +3 -2
  75. package/dist/analyzers/security/shallow.d.ts.map +1 -1
  76. package/dist/analyzers/security/shallow.js +2 -2
  77. package/dist/analyzers/security/shallow.js.map +1 -1
  78. package/dist/analyzers/tests/detailed.js +1 -1
  79. package/dist/analyzers/tests/detailed.js.map +1 -1
  80. package/dist/analyzers/tests/import-graph.d.ts +8 -22
  81. package/dist/analyzers/tests/import-graph.d.ts.map +1 -1
  82. package/dist/analyzers/tests/import-graph.js +22 -189
  83. package/dist/analyzers/tests/import-graph.js.map +1 -1
  84. package/dist/analyzers/tests/index.d.ts +1 -1
  85. package/dist/analyzers/tests/index.d.ts.map +1 -1
  86. package/dist/analyzers/tests/index.js +3 -3
  87. package/dist/analyzers/tests/index.js.map +1 -1
  88. package/dist/analyzers/tests/shallow.d.ts +3 -2
  89. package/dist/analyzers/tests/shallow.d.ts.map +1 -1
  90. package/dist/analyzers/tests/shallow.js +2 -2
  91. package/dist/analyzers/tests/shallow.js.map +1 -1
  92. package/dist/analyzers/tools/coverage.d.ts +21 -11
  93. package/dist/analyzers/tools/coverage.d.ts.map +1 -1
  94. package/dist/analyzers/tools/coverage.js +32 -44
  95. package/dist/analyzers/tools/coverage.js.map +1 -1
  96. package/dist/analyzers/tools/dotnet.d.ts +8 -0
  97. package/dist/analyzers/tools/dotnet.d.ts.map +1 -0
  98. package/dist/analyzers/tools/dotnet.js +81 -0
  99. package/dist/analyzers/tools/dotnet.js.map +1 -0
  100. package/dist/analyzers/tools/gather-cache.d.ts +16 -0
  101. package/dist/analyzers/tools/gather-cache.d.ts.map +1 -0
  102. package/dist/analyzers/tools/gather-cache.js +126 -0
  103. package/dist/analyzers/tools/gather-cache.js.map +1 -0
  104. package/dist/analyzers/tools/generic.d.ts.map +1 -1
  105. package/dist/analyzers/tools/generic.js +6 -28
  106. package/dist/analyzers/tools/generic.js.map +1 -1
  107. package/dist/analyzers/tools/gitleaks.d.ts +28 -5
  108. package/dist/analyzers/tools/gitleaks.d.ts.map +1 -1
  109. package/dist/analyzers/tools/gitleaks.js +91 -37
  110. package/dist/analyzers/tools/gitleaks.js.map +1 -1
  111. package/dist/analyzers/tools/go.d.ts +8 -0
  112. package/dist/analyzers/tools/go.d.ts.map +1 -0
  113. package/dist/analyzers/tools/go.js +84 -0
  114. package/dist/analyzers/tools/go.js.map +1 -0
  115. package/dist/analyzers/tools/graphify.d.ts +31 -3
  116. package/dist/analyzers/tools/graphify.d.ts.map +1 -1
  117. package/dist/analyzers/tools/graphify.js +78 -36
  118. package/dist/analyzers/tools/graphify.js.map +1 -1
  119. package/dist/analyzers/tools/grep-secrets.d.ts +6 -0
  120. package/dist/analyzers/tools/grep-secrets.d.ts.map +1 -0
  121. package/dist/analyzers/tools/grep-secrets.js +124 -0
  122. package/dist/analyzers/tools/grep-secrets.js.map +1 -0
  123. package/dist/analyzers/tools/jscpd.d.ts +40 -0
  124. package/dist/analyzers/tools/jscpd.d.ts.map +1 -0
  125. package/dist/analyzers/tools/jscpd.js +96 -0
  126. package/dist/analyzers/tools/jscpd.js.map +1 -0
  127. package/dist/analyzers/tools/node.d.ts +8 -0
  128. package/dist/analyzers/tools/node.d.ts.map +1 -0
  129. package/dist/analyzers/tools/node.js +160 -0
  130. package/dist/analyzers/tools/node.js.map +1 -0
  131. package/dist/analyzers/tools/package-json.d.ts +6 -0
  132. package/dist/analyzers/tools/package-json.d.ts.map +1 -0
  133. package/dist/analyzers/tools/package-json.js +67 -0
  134. package/dist/analyzers/tools/package-json.js.map +1 -0
  135. package/dist/analyzers/tools/parallel.d.ts +22 -5
  136. package/dist/analyzers/tools/parallel.d.ts.map +1 -1
  137. package/dist/analyzers/tools/parallel.js +26 -185
  138. package/dist/analyzers/tools/parallel.js.map +1 -1
  139. package/dist/analyzers/tools/paths.d.ts +21 -0
  140. package/dist/analyzers/tools/paths.d.ts.map +1 -0
  141. package/dist/analyzers/tools/paths.js +62 -0
  142. package/dist/analyzers/tools/paths.js.map +1 -0
  143. package/dist/analyzers/tools/python.d.ts +8 -0
  144. package/dist/analyzers/tools/python.d.ts.map +1 -0
  145. package/dist/analyzers/tools/python.js +81 -0
  146. package/dist/analyzers/tools/python.js.map +1 -0
  147. package/dist/analyzers/tools/rust.d.ts +8 -0
  148. package/dist/analyzers/tools/rust.d.ts.map +1 -0
  149. package/dist/analyzers/tools/rust.js +86 -0
  150. package/dist/analyzers/tools/rust.js.map +1 -0
  151. package/dist/analyzers/tools/semgrep.d.ts +39 -0
  152. package/dist/analyzers/tools/semgrep.d.ts.map +1 -0
  153. package/dist/analyzers/tools/semgrep.js +129 -0
  154. package/dist/analyzers/tools/semgrep.js.map +1 -0
  155. package/dist/analyzers/tools/tool-registry.d.ts +0 -41
  156. package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
  157. package/dist/analyzers/tools/tool-registry.js +0 -87
  158. package/dist/analyzers/tools/tool-registry.js.map +1 -1
  159. package/dist/analyzers/types.d.ts +42 -30
  160. package/dist/analyzers/types.d.ts.map +1 -1
  161. package/dist/cli.js +2 -2
  162. package/dist/cli.js.map +1 -1
  163. package/dist/constants.d.ts +1 -3
  164. package/dist/constants.d.ts.map +1 -1
  165. package/dist/constants.js +55 -14
  166. package/dist/constants.js.map +1 -1
  167. package/dist/languages/capabilities/descriptors.d.ts +74 -0
  168. package/dist/languages/capabilities/descriptors.d.ts.map +1 -0
  169. package/dist/languages/capabilities/descriptors.js +250 -0
  170. package/dist/languages/capabilities/descriptors.js.map +1 -0
  171. package/dist/languages/capabilities/global.d.ts +43 -0
  172. package/dist/languages/capabilities/global.d.ts.map +1 -0
  173. package/dist/languages/capabilities/global.js +48 -0
  174. package/dist/languages/capabilities/global.js.map +1 -0
  175. package/dist/languages/capabilities/index.d.ts +31 -0
  176. package/dist/languages/capabilities/index.d.ts.map +1 -0
  177. package/dist/languages/capabilities/index.js +56 -0
  178. package/dist/languages/capabilities/index.js.map +1 -0
  179. package/dist/languages/capabilities/provider.d.ts +16 -0
  180. package/dist/languages/capabilities/provider.d.ts.map +1 -0
  181. package/dist/languages/capabilities/provider.js +12 -0
  182. package/dist/languages/capabilities/provider.js.map +1 -0
  183. package/dist/languages/capabilities/types.d.ts +226 -0
  184. package/dist/languages/capabilities/types.d.ts.map +1 -0
  185. package/dist/languages/capabilities/types.js +23 -0
  186. package/dist/languages/capabilities/types.js.map +1 -0
  187. package/dist/languages/csharp.d.ts +8 -0
  188. package/dist/languages/csharp.d.ts.map +1 -1
  189. package/dist/languages/csharp.js +203 -103
  190. package/dist/languages/csharp.js.map +1 -1
  191. package/dist/languages/go.d.ts +13 -7
  192. package/dist/languages/go.d.ts.map +1 -1
  193. package/dist/languages/go.js +277 -183
  194. package/dist/languages/go.js.map +1 -1
  195. package/dist/languages/python.d.ts +14 -0
  196. package/dist/languages/python.d.ts.map +1 -1
  197. package/dist/languages/python.js +276 -169
  198. package/dist/languages/python.js.map +1 -1
  199. package/dist/languages/rust.d.ts +8 -0
  200. package/dist/languages/rust.d.ts.map +1 -1
  201. package/dist/languages/rust.js +218 -131
  202. package/dist/languages/rust.js.map +1 -1
  203. package/dist/languages/types.d.ts +16 -15
  204. package/dist/languages/types.d.ts.map +1 -1
  205. package/dist/languages/typescript.d.ts +12 -11
  206. package/dist/languages/typescript.d.ts.map +1 -1
  207. package/dist/languages/typescript.js +256 -161
  208. package/dist/languages/typescript.js.map +1 -1
  209. package/package.json +1 -1
  210. package/templates/.ai/templates/session-checkpoint-template.md +97 -0
@@ -35,9 +35,11 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.rust = void 0;
37
37
  exports.mapClippyLintSeverity = mapClippyLintSeverity;
38
+ exports.extractRustImportsRaw = extractRustImportsRaw;
38
39
  exports.parseLcov = parseLcov;
39
40
  const fs = __importStar(require("fs"));
40
41
  const path = __importStar(require("path"));
42
+ const exclusions_1 = require("../analyzers/tools/exclusions");
41
43
  const csharp_1 = require("./csharp");
42
44
  const runner_1 = require("../analyzers/tools/runner");
43
45
  const tool_registry_1 = require("../analyzers/tools/tool-registry");
@@ -136,6 +138,215 @@ function tierCargoMessage(msg) {
136
138
  return 'high';
137
139
  return tier;
138
140
  }
141
+ /**
142
+ * Single source of truth for the rust pack's dep-vuln gathering.
143
+ * Consumed by `rustDepVulnsProvider` (capability dispatcher).
144
+ */
145
+ async function gatherRustDepVulnsResult(cwd) {
146
+ const audit = (0, tool_registry_1.findTool)(tool_registry_1.TOOL_DEFS['cargo-audit'], cwd);
147
+ if (!audit.available || !audit.path)
148
+ return { kind: 'tool-missing' };
149
+ const raw = (0, runner_1.run)(`${audit.path} audit --json 2>/dev/null`, cwd, 60000);
150
+ if (!raw)
151
+ return { kind: 'no-output' };
152
+ try {
153
+ const data = JSON.parse(raw);
154
+ if (!data.vulnerabilities)
155
+ return { kind: 'no-output' };
156
+ let critical = 0;
157
+ let high = 0;
158
+ let medium = 0;
159
+ let low = 0;
160
+ for (const v of data.vulnerabilities.list || []) {
161
+ const sev = v.advisory?.severity?.toLowerCase();
162
+ if (sev === 'critical')
163
+ critical++;
164
+ else if (sev === 'high')
165
+ high++;
166
+ else if (sev === 'medium')
167
+ medium++;
168
+ else
169
+ low++;
170
+ }
171
+ const envelope = {
172
+ schemaVersion: 1,
173
+ tool: 'cargo-audit',
174
+ enrichment: null,
175
+ counts: { critical, high, medium, low },
176
+ };
177
+ return { kind: 'success', envelope };
178
+ }
179
+ catch {
180
+ return { kind: 'parse-error' };
181
+ }
182
+ }
183
+ const rustDepVulnsProvider = {
184
+ source: 'rust',
185
+ async gather(cwd) {
186
+ const outcome = await gatherRustDepVulnsResult(cwd);
187
+ return outcome.kind === 'success' ? outcome.envelope : null;
188
+ },
189
+ };
190
+ /**
191
+ * Single source of truth for the rust pack's lint gathering.
192
+ * Consumed by `rustLintProvider` (capability dispatcher).
193
+ *
194
+ * Previously, empty cargo output was silently skipped (nothing pushed
195
+ * to toolsUsed or toolsUnavailable). This helper aligns rust with the
196
+ * other packs: empty output = clean run with zero lint issues. Strict
197
+ * improvement.
198
+ */
199
+ function gatherRustLintResult(cwd) {
200
+ const clippy = (0, tool_registry_1.findTool)(tool_registry_1.TOOL_DEFS.clippy, cwd);
201
+ if (!clippy.available) {
202
+ return { kind: 'unavailable', reason: 'not installed' };
203
+ }
204
+ const raw = (0, runner_1.run)('cargo clippy --message-format json 2>/dev/null', cwd, 120000);
205
+ const counts = { critical: 0, high: 0, medium: 0, low: 0 };
206
+ for (const line of raw.split('\n')) {
207
+ if (!line.trim())
208
+ continue;
209
+ try {
210
+ const msg = JSON.parse(line);
211
+ if (msg.reason !== 'compiler-message' || !msg.message)
212
+ continue;
213
+ // Upstream emits multiple levels (error, warning, note, help).
214
+ // Skip note/help — they're context, not findings.
215
+ if (msg.message.level !== 'error' && msg.message.level !== 'warning')
216
+ continue;
217
+ counts[tierCargoMessage(msg.message)]++;
218
+ }
219
+ catch {
220
+ /* skip non-JSON lines */
221
+ }
222
+ }
223
+ const envelope = { schemaVersion: 1, tool: 'clippy', counts };
224
+ return { kind: 'success', envelope };
225
+ }
226
+ const rustLintProvider = {
227
+ source: 'rust',
228
+ async gather(cwd) {
229
+ const outcome = gatherRustLintResult(cwd);
230
+ return outcome.kind === 'success' ? outcome.envelope : null;
231
+ },
232
+ };
233
+ /**
234
+ * Single source of truth for the rust pack's coverage gathering.
235
+ * Tries lcov first (cargo llvm-cov --lcov default), falls back to
236
+ * cobertura XML. Consumed by `rustCoverageProvider` (capability
237
+ * dispatcher).
238
+ */
239
+ function gatherRustCoverageResult(cwd) {
240
+ for (const file of ['lcov.info', 'coverage/lcov.info']) {
241
+ const abs = path.join(cwd, file);
242
+ let raw;
243
+ try {
244
+ raw = fs.readFileSync(abs, 'utf-8');
245
+ }
246
+ catch {
247
+ continue;
248
+ }
249
+ const coverage = parseLcov(raw, file, cwd);
250
+ if (coverage) {
251
+ return { schemaVersion: 1, tool: `coverage:${coverage.source}`, coverage };
252
+ }
253
+ }
254
+ for (const file of ['coverage.cobertura.xml', 'coverage/coverage.cobertura.xml']) {
255
+ const abs = path.join(cwd, file);
256
+ let raw;
257
+ try {
258
+ raw = fs.readFileSync(abs, 'utf-8');
259
+ }
260
+ catch {
261
+ continue;
262
+ }
263
+ const coverage = (0, csharp_1.parseCoberturaXml)(raw, file, cwd);
264
+ if (coverage) {
265
+ return { schemaVersion: 1, tool: `coverage:${coverage.source}`, coverage };
266
+ }
267
+ }
268
+ return null;
269
+ }
270
+ const rustCoverageProvider = {
271
+ source: 'rust',
272
+ async gather(cwd) {
273
+ return gatherRustCoverageResult(cwd);
274
+ },
275
+ };
276
+ /**
277
+ * Capture Rust `use` path specifiers from source text. Handles simple
278
+ * paths (`use std::io;`) and grouped (`use std::{io, fs};`). Rust has
279
+ * no file-level resolver — see note on the pack's capabilities slot —
280
+ * so this is the only raw helper the imports capability needs.
281
+ * Exported for unit tests.
282
+ */
283
+ function extractRustImportsRaw(content) {
284
+ const out = [];
285
+ const re = /^\s*use\s+([a-zA-Z_][\w:]*(?:::\{[^}]+\})?)\s*;/gm;
286
+ let m;
287
+ while ((m = re.exec(content)) !== null) {
288
+ out.push(m[1]);
289
+ }
290
+ return out;
291
+ }
292
+ /**
293
+ * Enumerate .rs source files and capture the pack's per-file imports.
294
+ * Rust has no resolveImport (the module/crate hierarchy requires parsing
295
+ * Cargo.toml + mod declarations — out of scope), so `edges` is always
296
+ * empty and the envelope carries only `extracted` for downstream
297
+ * consumers that want package-level import analysis.
298
+ */
299
+ function gatherRustImportsResult(cwd) {
300
+ const excludes = (0, exclusions_1.getFindExcludeFlags)(cwd);
301
+ const raw = (0, runner_1.run)(`find . -type f -name "*.rs" ${excludes} 2>/dev/null`, cwd);
302
+ if (!raw)
303
+ return null;
304
+ const extracted = new Map();
305
+ for (const line of raw.split('\n')) {
306
+ const p = line.trim();
307
+ if (!p)
308
+ continue;
309
+ const rel = p.replace(/^\.\//, '');
310
+ let content;
311
+ try {
312
+ content = fs.readFileSync(path.join(cwd, rel), 'utf-8');
313
+ }
314
+ catch {
315
+ continue;
316
+ }
317
+ extracted.set(rel, extractRustImportsRaw(content));
318
+ }
319
+ if (extracted.size === 0)
320
+ return null;
321
+ return {
322
+ schemaVersion: 1,
323
+ tool: 'rust-imports',
324
+ sourceExtensions: ['.rs'],
325
+ extracted,
326
+ edges: new Map(),
327
+ };
328
+ }
329
+ const rustImportsProvider = {
330
+ source: 'rust',
331
+ async gather(cwd) {
332
+ return gatherRustImportsResult(cwd);
333
+ },
334
+ };
335
+ /**
336
+ * Rust's canonical test runner is `cargo test`; any crate with a
337
+ * `Cargo.toml` has it available by default. No deeper detection needed.
338
+ */
339
+ function gatherRustTestFrameworkResult(cwd) {
340
+ if (!(0, runner_1.fileExists)(cwd, 'Cargo.toml'))
341
+ return null;
342
+ return { schemaVersion: 1, tool: 'rust', name: 'cargo-test' };
343
+ }
344
+ const rustTestFrameworkProvider = {
345
+ source: 'rust',
346
+ async gather(cwd) {
347
+ return gatherRustTestFrameworkResult(cwd);
348
+ },
349
+ };
139
350
  function round1(n) {
140
351
  return Math.round(n * 10) / 10;
141
352
  }
@@ -197,137 +408,13 @@ exports.rust = {
197
408
  tools: ['clippy', 'cargo-audit', 'cargo-llvm-cov'],
198
409
  // No dedicated semgrep Rust ruleset; covered by p/security-audit.
199
410
  semgrepRulesets: [],
200
- mapLintSeverity: mapClippyLintSeverity,
201
- parseCoverage(cwd) {
202
- // Try lcov.info first (common default for cargo llvm-cov --lcov)
203
- for (const file of ['lcov.info', 'coverage/lcov.info']) {
204
- const abs = path.join(cwd, file);
205
- let raw;
206
- try {
207
- raw = fs.readFileSync(abs, 'utf-8');
208
- }
209
- catch {
210
- continue;
211
- }
212
- const result = parseLcov(raw, file, cwd);
213
- if (result)
214
- return result;
215
- }
216
- // Fall back to cobertura XML (cargo llvm-cov --cobertura)
217
- for (const file of ['coverage.cobertura.xml', 'coverage/coverage.cobertura.xml']) {
218
- const abs = path.join(cwd, file);
219
- let raw;
220
- try {
221
- raw = fs.readFileSync(abs, 'utf-8');
222
- }
223
- catch {
224
- continue;
225
- }
226
- const result = (0, csharp_1.parseCoberturaXml)(raw, file, cwd);
227
- if (result)
228
- return result;
229
- }
230
- return null;
231
- },
232
- extractImports(content) {
233
- // Rust: `use std::io;`, `use std::collections::HashMap;`,
234
- // `use crate::module;`, `use super::sibling;`
235
- // Also block form: `use std::{io, fs};`
236
- const out = [];
237
- const re = /^\s*use\s+([a-zA-Z_][\w:]*(?:::\{[^}]+\})?)\s*;/gm;
238
- let m;
239
- while ((m = re.exec(content)) !== null) {
240
- out.push(m[1]);
241
- }
242
- return out;
243
- },
244
- // resolveImport intentionally omitted: Rust's module system uses crate/mod.rs
245
- // hierarchy which requires parsing Cargo.toml + mod declarations. Out of scope.
246
- async gatherMetrics(cwd) {
247
- const metrics = {
248
- toolsUsed: [],
249
- toolsUnavailable: [],
250
- };
251
- const clippy = (0, tool_registry_1.findTool)(tool_registry_1.TOOL_DEFS.clippy, cwd);
252
- if (clippy.available) {
253
- const raw = (0, runner_1.run)('cargo clippy --message-format json 2>/dev/null', cwd, 120000);
254
- if (raw) {
255
- // Tier by clippy lint code (clippy::*) or rustc lint name.
256
- // Collapse: critical + high → errors, medium + low → warnings.
257
- let errors = 0;
258
- let warnings = 0;
259
- for (const line of raw.split('\n')) {
260
- if (!line.trim())
261
- continue;
262
- try {
263
- const msg = JSON.parse(line);
264
- if (msg.reason !== 'compiler-message' || !msg.message)
265
- continue;
266
- // Upstream emits multiple levels (error, warning, note, help).
267
- // Skip note/help — they're context, not findings.
268
- if (msg.message.level !== 'error' && msg.message.level !== 'warning')
269
- continue;
270
- const tier = tierCargoMessage(msg.message);
271
- if (tier === 'critical' || tier === 'high')
272
- errors++;
273
- else
274
- warnings++;
275
- }
276
- catch {
277
- /* skip non-JSON lines */
278
- }
279
- }
280
- metrics.lintErrors = errors;
281
- metrics.lintWarnings = warnings;
282
- metrics.lintTool = 'clippy';
283
- metrics.toolsUsed.push('clippy');
284
- }
285
- }
286
- else {
287
- metrics.toolsUnavailable.push('clippy');
288
- }
289
- const audit = (0, tool_registry_1.findTool)(tool_registry_1.TOOL_DEFS['cargo-audit'], cwd);
290
- if (audit.available && audit.path) {
291
- const raw = (0, runner_1.run)(`${audit.path} audit --json 2>/dev/null`, cwd, 60000);
292
- if (raw) {
293
- try {
294
- const data = JSON.parse(raw);
295
- if (data.vulnerabilities) {
296
- let critical = 0;
297
- let high = 0;
298
- let medium = 0;
299
- let low = 0;
300
- for (const v of data.vulnerabilities.list || []) {
301
- const sev = v.advisory?.severity?.toLowerCase();
302
- if (sev === 'critical')
303
- critical++;
304
- else if (sev === 'high')
305
- high++;
306
- else if (sev === 'medium')
307
- medium++;
308
- else
309
- low++;
310
- }
311
- metrics.depVulnCritical = critical;
312
- metrics.depVulnHigh = high;
313
- metrics.depVulnMedium = medium;
314
- metrics.depVulnLow = low;
315
- metrics.depAuditTool = 'cargo-audit';
316
- metrics.toolsUsed.push('cargo-audit');
317
- }
318
- }
319
- catch {
320
- metrics.toolsUnavailable.push('cargo-audit (parse error)');
321
- }
322
- }
323
- }
324
- else {
325
- metrics.toolsUnavailable.push('cargo-audit');
326
- }
327
- if ((0, runner_1.fileExists)(cwd, 'Cargo.toml')) {
328
- metrics.testFramework = 'cargo-test';
329
- }
330
- return metrics;
411
+ capabilities: {
412
+ depVulns: rustDepVulnsProvider,
413
+ lint: rustLintProvider,
414
+ coverage: rustCoverageProvider,
415
+ imports: rustImportsProvider,
416
+ testFramework: rustTestFrameworkProvider,
331
417
  },
418
+ mapLintSeverity: mapClippyLintSeverity,
332
419
  };
333
420
  //# sourceMappingURL=rust.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rust.js","sourceRoot":"","sources":["../../src/languages/rust.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rust.js","sourceRoot":"","sources":["../../src/languages/rust.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,21 @@
1
- import type { Coverage } from '../analyzers/tools/coverage';
2
- import type { HealthMetrics } from '../analyzers/types';
1
+ import type { CapabilityProvider } from './capabilities/provider';
2
+ import type { CoverageResult, DepVulnResult, ImportsResult, LintResult, TestFrameworkResult } from './capabilities/types';
3
3
  export type LanguageId = 'typescript' | 'python' | 'go' | 'rust' | 'csharp';
4
4
  export type LintSeverity = 'critical' | 'high' | 'medium' | 'low';
5
5
  /**
6
- * The narrow subset of HealthMetrics fields a language pack is allowed to
7
- * produce. Every current pack only touches these widening this type
8
- * without updating the contract test means new fields slip through review.
9
- *
10
- * Keep in sync with `mergeMetrics` aggregation rules in `src/analyzers/
11
- * health.ts`: fields in AGGREGATED_VULN_FIELDS are summed across packs,
12
- * depAuditTool is joined, array fields (toolsUsed, toolsUnavailable) are
13
- * appended, all others are last-wins.
6
+ * Capability providers a language pack may expose. Every data-producing
7
+ * surface lives here after Phase 10e.C.5the legacy `gatherMetrics`
8
+ * channel is gone, and the capability dispatcher is the only route from
9
+ * a language pack to the analyzer layer. Each provider is optional so a
10
+ * pack can ship incrementally as underlying tool support lands.
14
11
  */
15
- export type LangMetrics = Pick<HealthMetrics, 'lintErrors' | 'lintWarnings' | 'lintTool' | 'depVulnCritical' | 'depVulnHigh' | 'depVulnMedium' | 'depVulnLow' | 'depAuditTool' | 'testFramework' | 'toolsUsed' | 'toolsUnavailable' | 'npmScriptsCount' | 'nodeEngineVersion'>;
12
+ export interface LanguagePackCapabilities {
13
+ depVulns?: CapabilityProvider<DepVulnResult>;
14
+ lint?: CapabilityProvider<LintResult>;
15
+ coverage?: CapabilityProvider<CoverageResult>;
16
+ testFramework?: CapabilityProvider<TestFrameworkResult>;
17
+ imports?: CapabilityProvider<ImportsResult>;
18
+ }
16
19
  /**
17
20
  * Everything dxkit needs to know about a language lives in one implementation
18
21
  * of this interface. See `src/languages/index.ts` for the registry.
@@ -29,10 +32,8 @@ export interface LanguageSupport {
29
32
  detect(cwd: string): boolean;
30
33
  tools: string[];
31
34
  semgrepRulesets: string[];
32
- parseCoverage?(cwd: string): Coverage | null;
33
- extractImports?(content: string): string[];
34
- resolveImport?(from: string, spec: string, cwd: string): string | null;
35
- gatherMetrics?(cwd: string): Promise<Partial<LangMetrics>>;
36
35
  mapLintSeverity?(code: string): LintSeverity;
36
+ /** Capability providers for the dispatcher channel. */
37
+ capabilities?: LanguagePackCapabilities;
37
38
  }
38
39
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/languages/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE5E,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAElE;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,aAAa,EACX,YAAY,GACZ,cAAc,GACd,UAAU,GACV,iBAAiB,GACjB,aAAa,GACb,eAAe,GACf,YAAY,GACZ,cAAc,GACd,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,iBAAiB,GACjB,mBAAmB,CACtB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,UAAU,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IAEpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAE1B,aAAa,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC7C,cAAc,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3C,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACvE,aAAa,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3D,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;CAC9C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/languages/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,UAAU,EACV,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE5E,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAC9C,aAAa,CAAC,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,UAAU,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IAEpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAE1B,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IAE7C,uDAAuD;IACvD,YAAY,CAAC,EAAE,wBAAwB,CAAC;CACzC"}
@@ -1,15 +1,16 @@
1
- import type { LanguageSupport, LintSeverity } from './types';
1
+ import type { LanguageSupport } from './types';
2
2
  /**
3
- * Tier an ESLint rule ID into the four-tier severity model.
4
- *
5
- * Priority is rule-name pattern first (security plugins, known-dangerous
6
- * rules), falling back to the rule's ESLint severity (2=error → high,
7
- * 1=warning → medium) for rules we don't recognize.
8
- *
9
- * Unknown rules default to 'low' so unfamiliar plugins don't inflate the
10
- * error count. Callers that also have the ESLint severity should prefer
11
- * mapLintMessageSeverity below.
3
+ * Capture raw TS/JS module specifiers from source text. The imports
4
+ * capability batch-calls this while walking the pack's source extensions;
5
+ * unit tests exercise it directly for parse-correctness cases.
12
6
  */
13
- export declare function mapEslintRuleSeverity(ruleId: string | null | undefined): LintSeverity;
7
+ export declare function extractTsImportsRaw(content: string): string[];
8
+ /**
9
+ * Resolve a TS/JS module specifier to an in-project relative file path,
10
+ * or null for external packages and unresolvable specifiers. Exported so
11
+ * unit tests can exercise resolution directly; the imports capability
12
+ * calls it while building per-file edges.
13
+ */
14
+ export declare function resolveTsImportRaw(fromFile: string, spec: string, cwd: string): string | null;
14
15
  export declare const typescript: LanguageSupport;
15
16
  //# sourceMappingURL=typescript.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/languages/typescript.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQ7D;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAsDrF;AA0HD,eAAO,MAAM,UAAU,EAAE,eAwKxB,CAAC"}
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/languages/typescript.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAqK7D;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAc7D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkB7F;AAwMD,eAAO,MAAM,UAAU,EAAE,eAoCxB,CAAC"}