@vyuhlabs/dxkit 2.5.2 → 2.7.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 (264) hide show
  1. package/CHANGELOG.md +218 -13
  2. package/README.md +220 -369
  3. package/dist/allowlist/categories.d.ts +120 -0
  4. package/dist/allowlist/categories.d.ts.map +1 -0
  5. package/dist/allowlist/categories.js +194 -0
  6. package/dist/allowlist/categories.js.map +1 -0
  7. package/dist/allowlist/cli.d.ts +95 -0
  8. package/dist/allowlist/cli.d.ts.map +1 -0
  9. package/dist/allowlist/cli.js +454 -0
  10. package/dist/allowlist/cli.js.map +1 -0
  11. package/dist/allowlist/diff.d.ts +67 -0
  12. package/dist/allowlist/diff.d.ts.map +1 -0
  13. package/dist/allowlist/diff.js +147 -0
  14. package/dist/allowlist/diff.js.map +1 -0
  15. package/dist/allowlist/file.d.ts +249 -0
  16. package/dist/allowlist/file.d.ts.map +1 -0
  17. package/dist/allowlist/file.js +497 -0
  18. package/dist/allowlist/file.js.map +1 -0
  19. package/dist/allowlist/gather.d.ts +61 -0
  20. package/dist/allowlist/gather.d.ts.map +1 -0
  21. package/dist/allowlist/gather.js +143 -0
  22. package/dist/allowlist/gather.js.map +1 -0
  23. package/dist/allowlist/hint.d.ts +80 -0
  24. package/dist/allowlist/hint.d.ts.map +1 -0
  25. package/dist/allowlist/hint.js +271 -0
  26. package/dist/allowlist/hint.js.map +1 -0
  27. package/dist/allowlist/inline.d.ts +149 -0
  28. package/dist/allowlist/inline.d.ts.map +1 -0
  29. package/dist/allowlist/inline.js +306 -0
  30. package/dist/allowlist/inline.js.map +1 -0
  31. package/dist/analyzers/bom/discovery.d.ts +3 -4
  32. package/dist/analyzers/bom/discovery.d.ts.map +1 -1
  33. package/dist/analyzers/bom/discovery.js +3 -4
  34. package/dist/analyzers/bom/discovery.js.map +1 -1
  35. package/dist/analyzers/bom/types.d.ts +1 -1
  36. package/dist/analyzers/dashboard/index.d.ts.map +1 -1
  37. package/dist/analyzers/dashboard/index.js +42 -5
  38. package/dist/analyzers/dashboard/index.js.map +1 -1
  39. package/dist/analyzers/quality/detailed.d.ts +8 -1
  40. package/dist/analyzers/quality/detailed.d.ts.map +1 -1
  41. package/dist/analyzers/quality/detailed.js +43 -10
  42. package/dist/analyzers/quality/detailed.js.map +1 -1
  43. package/dist/analyzers/security/detailed.d.ts +8 -1
  44. package/dist/analyzers/security/detailed.d.ts.map +1 -1
  45. package/dist/analyzers/security/detailed.js +14 -1
  46. package/dist/analyzers/security/detailed.js.map +1 -1
  47. package/dist/analyzers/tests/detailed.d.ts +8 -1
  48. package/dist/analyzers/tests/detailed.d.ts.map +1 -1
  49. package/dist/analyzers/tests/detailed.js +26 -7
  50. package/dist/analyzers/tests/detailed.js.map +1 -1
  51. package/dist/analyzers/tools/cloc.js +3 -3
  52. package/dist/analyzers/tools/cloc.js.map +1 -1
  53. package/dist/analyzers/tools/exclusions.d.ts +12 -12
  54. package/dist/analyzers/tools/exclusions.d.ts.map +1 -1
  55. package/dist/analyzers/tools/exclusions.js +27 -13
  56. package/dist/analyzers/tools/exclusions.js.map +1 -1
  57. package/dist/analyzers/tools/graphify.d.ts +39 -5
  58. package/dist/analyzers/tools/graphify.d.ts.map +1 -1
  59. package/dist/analyzers/tools/graphify.js +609 -45
  60. package/dist/analyzers/tools/graphify.js.map +1 -1
  61. package/dist/analyzers/tools/nuget-package-reference.d.ts +4 -4
  62. package/dist/analyzers/tools/nuget-package-reference.js +4 -4
  63. package/dist/analyzers/tools/osv-scanner-fix.d.ts +4 -5
  64. package/dist/analyzers/tools/osv-scanner-fix.d.ts.map +1 -1
  65. package/dist/analyzers/tools/osv-scanner-fix.js +4 -5
  66. package/dist/analyzers/tools/osv-scanner-fix.js.map +1 -1
  67. package/dist/analyzers/tools/parallel.d.ts.map +1 -1
  68. package/dist/analyzers/tools/parallel.js +7 -0
  69. package/dist/analyzers/tools/parallel.js.map +1 -1
  70. package/dist/analyzers/tools/vendored-advisor.d.ts.map +1 -1
  71. package/dist/analyzers/tools/vendored-advisor.js +3 -4
  72. package/dist/analyzers/tools/vendored-advisor.js.map +1 -1
  73. package/dist/analyzers/xlsx/licenses.d.ts +7 -7
  74. package/dist/analyzers/xlsx/licenses.js +7 -7
  75. package/dist/baseline/baseline-file.d.ts +7 -0
  76. package/dist/baseline/baseline-file.d.ts.map +1 -1
  77. package/dist/baseline/baseline-file.js +22 -1
  78. package/dist/baseline/baseline-file.js.map +1 -1
  79. package/dist/baseline/check-renderers.d.ts +13 -1
  80. package/dist/baseline/check-renderers.d.ts.map +1 -1
  81. package/dist/baseline/check-renderers.js +67 -1
  82. package/dist/baseline/check-renderers.js.map +1 -1
  83. package/dist/baseline/check.d.ts +33 -7
  84. package/dist/baseline/check.d.ts.map +1 -1
  85. package/dist/baseline/check.js +90 -64
  86. package/dist/baseline/check.js.map +1 -1
  87. package/dist/baseline/create.d.ts +35 -7
  88. package/dist/baseline/create.d.ts.map +1 -1
  89. package/dist/baseline/create.js +43 -5
  90. package/dist/baseline/create.js.map +1 -1
  91. package/dist/baseline/entry-to-located.d.ts +6 -1
  92. package/dist/baseline/entry-to-located.d.ts.map +1 -1
  93. package/dist/baseline/entry-to-located.js +20 -2
  94. package/dist/baseline/entry-to-located.js.map +1 -1
  95. package/dist/baseline/finding-identity.d.ts.map +1 -1
  96. package/dist/baseline/finding-identity.js +15 -13
  97. package/dist/baseline/finding-identity.js.map +1 -1
  98. package/dist/baseline/modes.d.ts +140 -0
  99. package/dist/baseline/modes.d.ts.map +1 -0
  100. package/dist/baseline/modes.js +179 -0
  101. package/dist/baseline/modes.js.map +1 -0
  102. package/dist/baseline/policy.d.ts +64 -0
  103. package/dist/baseline/policy.d.ts.map +1 -1
  104. package/dist/baseline/policy.js +102 -1
  105. package/dist/baseline/policy.js.map +1 -1
  106. package/dist/baseline/producers/health.d.ts +2 -2
  107. package/dist/baseline/producers/health.d.ts.map +1 -1
  108. package/dist/baseline/producers/health.js.map +1 -1
  109. package/dist/baseline/producers/index.d.ts +11 -5
  110. package/dist/baseline/producers/index.d.ts.map +1 -1
  111. package/dist/baseline/producers/index.js +12 -9
  112. package/dist/baseline/producers/index.js.map +1 -1
  113. package/dist/baseline/producers/quality.d.ts +3 -3
  114. package/dist/baseline/producers/quality.d.ts.map +1 -1
  115. package/dist/baseline/producers/quality.js.map +1 -1
  116. package/dist/baseline/producers/secret-hmac.d.ts +2 -2
  117. package/dist/baseline/producers/secret-hmac.d.ts.map +1 -1
  118. package/dist/baseline/producers/secret-hmac.js.map +1 -1
  119. package/dist/baseline/producers/security.d.ts +2 -2
  120. package/dist/baseline/producers/security.d.ts.map +1 -1
  121. package/dist/baseline/producers/security.js.map +1 -1
  122. package/dist/baseline/producers/stale-allow.d.ts +70 -0
  123. package/dist/baseline/producers/stale-allow.d.ts.map +1 -0
  124. package/dist/baseline/producers/stale-allow.js +111 -0
  125. package/dist/baseline/producers/stale-allow.js.map +1 -0
  126. package/dist/baseline/producers/tests.d.ts +2 -2
  127. package/dist/baseline/producers/tests.d.ts.map +1 -1
  128. package/dist/baseline/producers/tests.js.map +1 -1
  129. package/dist/baseline/ref-baseline.d.ts +114 -0
  130. package/dist/baseline/ref-baseline.d.ts.map +1 -0
  131. package/dist/baseline/ref-baseline.js +260 -0
  132. package/dist/baseline/ref-baseline.js.map +1 -0
  133. package/dist/baseline/sanitize.d.ts +80 -0
  134. package/dist/baseline/sanitize.d.ts.map +1 -0
  135. package/dist/baseline/sanitize.js +91 -0
  136. package/dist/baseline/sanitize.js.map +1 -0
  137. package/dist/baseline/show.d.ts.map +1 -1
  138. package/dist/baseline/show.js +9 -3
  139. package/dist/baseline/show.js.map +1 -1
  140. package/dist/baseline/types.d.ts +73 -26
  141. package/dist/baseline/types.d.ts.map +1 -1
  142. package/dist/baseline/types.js +7 -1
  143. package/dist/baseline/types.js.map +1 -1
  144. package/dist/baseline/visibility.d.ts +61 -0
  145. package/dist/baseline/visibility.d.ts.map +1 -0
  146. package/dist/baseline/visibility.js +121 -0
  147. package/dist/baseline/visibility.js.map +1 -0
  148. package/dist/cli.d.ts.map +1 -1
  149. package/dist/cli.js +168 -6
  150. package/dist/cli.js.map +1 -1
  151. package/dist/dashboard/graph-adapter.d.ts +151 -0
  152. package/dist/dashboard/graph-adapter.d.ts.map +1 -0
  153. package/dist/dashboard/graph-adapter.js +415 -0
  154. package/dist/dashboard/graph-adapter.js.map +1 -0
  155. package/dist/dashboard/graph-tab.d.ts +109 -0
  156. package/dist/dashboard/graph-tab.d.ts.map +1 -0
  157. package/dist/dashboard/graph-tab.js +297 -0
  158. package/dist/dashboard/graph-tab.js.map +1 -0
  159. package/dist/dashboard/vendor/vis-network.min.js +34 -0
  160. package/dist/doctor.d.ts.map +1 -1
  161. package/dist/doctor.js +106 -16
  162. package/dist/doctor.js.map +1 -1
  163. package/dist/explore/cli/api-surface.d.ts +12 -0
  164. package/dist/explore/cli/api-surface.d.ts.map +1 -0
  165. package/dist/explore/cli/api-surface.js +57 -0
  166. package/dist/explore/cli/api-surface.js.map +1 -0
  167. package/dist/explore/cli/communities.d.ts +10 -0
  168. package/dist/explore/cli/communities.d.ts.map +1 -0
  169. package/dist/explore/cli/communities.js +47 -0
  170. package/dist/explore/cli/communities.js.map +1 -0
  171. package/dist/explore/cli/context.d.ts +16 -0
  172. package/dist/explore/cli/context.d.ts.map +1 -0
  173. package/dist/explore/cli/context.js +118 -0
  174. package/dist/explore/cli/context.js.map +1 -0
  175. package/dist/explore/cli/entry-points.d.ts +12 -0
  176. package/dist/explore/cli/entry-points.d.ts.map +1 -0
  177. package/dist/explore/cli/entry-points.js +85 -0
  178. package/dist/explore/cli/entry-points.js.map +1 -0
  179. package/dist/explore/cli/feature.d.ts +16 -0
  180. package/dist/explore/cli/feature.d.ts.map +1 -0
  181. package/dist/explore/cli/feature.js +89 -0
  182. package/dist/explore/cli/feature.js.map +1 -0
  183. package/dist/explore/cli/file.d.ts +12 -0
  184. package/dist/explore/cli/file.d.ts.map +1 -0
  185. package/dist/explore/cli/file.js +139 -0
  186. package/dist/explore/cli/file.js.map +1 -0
  187. package/dist/explore/cli/hot-files.d.ts +11 -0
  188. package/dist/explore/cli/hot-files.d.ts.map +1 -0
  189. package/dist/explore/cli/hot-files.js +63 -0
  190. package/dist/explore/cli/hot-files.js.map +1 -0
  191. package/dist/explore/context-hook.d.ts +42 -0
  192. package/dist/explore/context-hook.d.ts.map +1 -0
  193. package/dist/explore/context-hook.js +131 -0
  194. package/dist/explore/context-hook.js.map +1 -0
  195. package/dist/explore/finding-context.d.ts +69 -0
  196. package/dist/explore/finding-context.d.ts.map +1 -0
  197. package/dist/explore/finding-context.js +102 -0
  198. package/dist/explore/finding-context.js.map +1 -0
  199. package/dist/explore/format.d.ts +64 -0
  200. package/dist/explore/format.d.ts.map +1 -0
  201. package/dist/explore/format.js +99 -0
  202. package/dist/explore/format.js.map +1 -0
  203. package/dist/explore/load.d.ts +50 -0
  204. package/dist/explore/load.d.ts.map +1 -0
  205. package/dist/explore/load.js +197 -0
  206. package/dist/explore/load.js.map +1 -0
  207. package/dist/explore/queries.d.ts +413 -0
  208. package/dist/explore/queries.d.ts.map +1 -0
  209. package/dist/explore/queries.js +855 -0
  210. package/dist/explore/queries.js.map +1 -0
  211. package/dist/explore/types.d.ts +130 -0
  212. package/dist/explore/types.d.ts.map +1 -0
  213. package/dist/explore/types.js +28 -0
  214. package/dist/explore/types.js.map +1 -0
  215. package/dist/explore-cli.d.ts +45 -0
  216. package/dist/explore-cli.d.ts.map +1 -0
  217. package/dist/explore-cli.js +213 -0
  218. package/dist/explore-cli.js.map +1 -0
  219. package/dist/generator.d.ts.map +1 -1
  220. package/dist/generator.js +19 -0
  221. package/dist/generator.js.map +1 -1
  222. package/dist/issue-cli.d.ts +62 -0
  223. package/dist/issue-cli.d.ts.map +1 -0
  224. package/dist/issue-cli.js +252 -0
  225. package/dist/issue-cli.js.map +1 -0
  226. package/dist/languages/csharp.d.ts.map +1 -1
  227. package/dist/languages/csharp.js +32 -11
  228. package/dist/languages/csharp.js.map +1 -1
  229. package/dist/languages/go.d.ts.map +1 -1
  230. package/dist/languages/go.js +5 -0
  231. package/dist/languages/go.js.map +1 -1
  232. package/dist/languages/index.d.ts +27 -0
  233. package/dist/languages/index.d.ts.map +1 -1
  234. package/dist/languages/index.js +35 -0
  235. package/dist/languages/index.js.map +1 -1
  236. package/dist/languages/java.d.ts.map +1 -1
  237. package/dist/languages/java.js +5 -0
  238. package/dist/languages/java.js.map +1 -1
  239. package/dist/languages/kotlin.d.ts.map +1 -1
  240. package/dist/languages/kotlin.js +5 -0
  241. package/dist/languages/kotlin.js.map +1 -1
  242. package/dist/languages/python.d.ts.map +1 -1
  243. package/dist/languages/python.js +5 -0
  244. package/dist/languages/python.js.map +1 -1
  245. package/dist/languages/ruby.d.ts.map +1 -1
  246. package/dist/languages/ruby.js +5 -0
  247. package/dist/languages/ruby.js.map +1 -1
  248. package/dist/languages/rust.d.ts.map +1 -1
  249. package/dist/languages/rust.js +5 -0
  250. package/dist/languages/rust.js.map +1 -1
  251. package/dist/languages/types.d.ts +79 -0
  252. package/dist/languages/types.d.ts.map +1 -1
  253. package/dist/languages/typescript.d.ts.map +1 -1
  254. package/dist/languages/typescript.js +6 -1
  255. package/dist/languages/typescript.js.map +1 -1
  256. package/package.json +2 -1
  257. package/templates/.claude/skills/dxkit-action/SKILL.md +126 -12
  258. package/templates/.claude/skills/dxkit-onboard/SKILL.md +31 -3
  259. package/templates/.claude/skills/dxkit-reports/SKILL.md +3 -1
  260. package/templates/AGENTS.md.template +8 -1
  261. package/dist/baseline/producers/licenses.d.ts +0 -23
  262. package/dist/baseline/producers/licenses.d.ts.map +0 -1
  263. package/dist/baseline/producers/licenses.js +0 -46
  264. package/dist/baseline/producers/licenses.js.map +0 -1
@@ -0,0 +1,306 @@
1
+ "use strict";
2
+ /**
3
+ * Inline allowlist annotations.
4
+ *
5
+ * Grammar:
6
+ *
7
+ * <lineComment> dxkit-allow:<category> reason="<text>"
8
+ *
9
+ * Examples:
10
+ *
11
+ * # dxkit-allow:test-fixture reason="placeholder in unit test"
12
+ * // dxkit-allow:false-positive reason="regex matches our intentional placeholder"
13
+ *
14
+ * Two positions:
15
+ *
16
+ * - **Same-line** — annotation appears on the same source line as
17
+ * the finding, separated by at least one space:
18
+ *
19
+ * api_key = "sk_test_xxxx" # dxkit-allow:test-fixture reason="..."
20
+ *
21
+ * - **Above-line** — annotation occupies its own line, immediately
22
+ * preceding the finding (matching its indentation):
23
+ *
24
+ * # dxkit-allow:test-fixture reason="..."
25
+ * api_key = "sk_test_xxxx"
26
+ *
27
+ * The position is chosen at insert time by `insertAnnotation`: short
28
+ * source lines (under the configurable threshold) get same-line
29
+ * annotation; longer lines get above-line so the result stays
30
+ * readable.
31
+ *
32
+ * The grammar applies uniformly across every language; only the
33
+ * `<lineComment>` token varies (`#` for python/ruby, `//` for
34
+ * typescript/go/rust/csharp/kotlin/java). Each language pack
35
+ * declares its token via `LanguageSupport.commentSyntax`.
36
+ *
37
+ * # Quoting + escaping
38
+ *
39
+ * The reason is a JSON-style string. To embed a literal `"`, escape
40
+ * as `\"`; to embed a literal `\`, escape as `\\`. The parser
41
+ * un-escapes both on read; the writer escapes both on insert. No
42
+ * other escape sequences are supported (no `\n`, `\t`, etc.) — keep
43
+ * the reason single-line for human review.
44
+ */
45
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
46
+ if (k2 === undefined) k2 = k;
47
+ var desc = Object.getOwnPropertyDescriptor(m, k);
48
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
49
+ desc = { enumerable: true, get: function() { return m[k]; } };
50
+ }
51
+ Object.defineProperty(o, k2, desc);
52
+ }) : (function(o, m, k, k2) {
53
+ if (k2 === undefined) k2 = k;
54
+ o[k2] = m[k];
55
+ }));
56
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
57
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
58
+ }) : function(o, v) {
59
+ o["default"] = v;
60
+ });
61
+ var __importStar = (this && this.__importStar) || (function () {
62
+ var ownKeys = function(o) {
63
+ ownKeys = Object.getOwnPropertyNames || function (o) {
64
+ var ar = [];
65
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
66
+ return ar;
67
+ };
68
+ return ownKeys(o);
69
+ };
70
+ return function (mod) {
71
+ if (mod && mod.__esModule) return mod;
72
+ var result = {};
73
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
74
+ __setModuleDefault(result, mod);
75
+ return result;
76
+ };
77
+ })();
78
+ Object.defineProperty(exports, "__esModule", { value: true });
79
+ exports.renderAnnotation = renderAnnotation;
80
+ exports.parseAnnotation = parseAnnotation;
81
+ exports.findAnnotationAt = findAnnotationAt;
82
+ exports.insertAnnotation = insertAnnotation;
83
+ exports.isStandaloneAnnotationLine = isStandaloneAnnotationLine;
84
+ const fs = __importStar(require("fs"));
85
+ const categories_1 = require("./categories");
86
+ /**
87
+ * Annotation prefix. Single source of truth — every consumer
88
+ * (renderer, parser, standalone-line detector) reads from here so
89
+ * changing the convention is a one-line edit.
90
+ */
91
+ const ANNOTATION_PREFIX = 'dxkit-allow:';
92
+ const DEFAULT_SAME_LINE_THRESHOLD = 60;
93
+ /**
94
+ * Build the annotation comment body (no leading whitespace, no
95
+ * comment marker). The caller composes the full comment by
96
+ * prepending the language's `lineComment` token.
97
+ */
98
+ function annotationBody(annotation) {
99
+ let body = `${ANNOTATION_PREFIX}${annotation.category}`;
100
+ if (annotation.reason !== undefined) {
101
+ body += ` reason="${escapeReason(annotation.reason)}"`;
102
+ }
103
+ return body;
104
+ }
105
+ /**
106
+ * Render a complete annotation comment for a given language.
107
+ * Exposed so callers (the CLI, the block-time hint formatter) can
108
+ * surface the exact string a developer would paste, without going
109
+ * through the file-mutation path.
110
+ */
111
+ function renderAnnotation(annotation, lang) {
112
+ const marker = lang.commentSyntax?.lineComment;
113
+ if (!marker) {
114
+ throw new Error(`language ${lang.id} has no commentSyntax.lineComment; inline annotations unsupported`);
115
+ }
116
+ return `${marker} ${annotationBody(annotation)}`;
117
+ }
118
+ /**
119
+ * Parse a single line for an allowlist annotation. Returns `null`
120
+ * when no annotation marker is found OR when the category isn't
121
+ * one of the canonical values.
122
+ *
123
+ * Tolerates the `reason="..."` clause being absent — callers decide
124
+ * whether a missing reason invalidates the suppression.
125
+ *
126
+ * False-positive surface: a string literal containing the literal
127
+ * substring `<lineComment> dxkit-allow:<category>` would match.
128
+ * Discriminating "is this inside a string" requires real language
129
+ * parsing and isn't worth the complexity — the worst case is a
130
+ * legitimate finding gets suppressed when a developer wrote the
131
+ * grammar literally inside a string. Vanishingly rare in practice.
132
+ */
133
+ function parseAnnotation(line, lang) {
134
+ const marker = lang.commentSyntax?.lineComment;
135
+ if (!marker)
136
+ return null;
137
+ const escapedMarker = escapeForRegex(marker);
138
+ const escapedPrefix = escapeForRegex(ANNOTATION_PREFIX);
139
+ // The annotation prefix may appear at the start of the line
140
+ // (above-line case) or after at least one whitespace following
141
+ // the source code (same-line case). Trailing whitespace after the
142
+ // prefix is tolerated.
143
+ const re = new RegExp(`(?:^|\\s)${escapedMarker}\\s*${escapedPrefix}(\\S+?)(?:\\s+reason="((?:[^"\\\\]|\\\\.)*)")?(?:\\s|$)`);
144
+ const match = re.exec(line);
145
+ if (!match)
146
+ return null;
147
+ const category = match[1];
148
+ if (!isCanonicalCategory(category))
149
+ return null;
150
+ const reasonRaw = match[2];
151
+ return {
152
+ category: category,
153
+ reason: reasonRaw !== undefined ? unescapeReason(reasonRaw) : undefined,
154
+ };
155
+ }
156
+ /**
157
+ * Look for an annotation matching a finding at `filePath:lineNumber`
158
+ * (1-indexed). Checks two positions:
159
+ *
160
+ * 1. Same-line: the finding's line itself carries the annotation.
161
+ * 2. Above-line: the immediately-preceding line is a standalone
162
+ * annotation comment.
163
+ *
164
+ * Returns `null` when neither position has a parseable annotation.
165
+ * Throws when the file doesn't exist or `lineNumber` is out of
166
+ * range — callers are typically operating on findings whose line
167
+ * numbers came from a fresh scan, so an out-of-range value
168
+ * indicates a bug worth surfacing.
169
+ */
170
+ function findAnnotationAt(filePath, lineNumber, lang) {
171
+ if (lineNumber < 1) {
172
+ throw new Error(`lineNumber must be >= 1, got ${lineNumber}`);
173
+ }
174
+ const content = fs.readFileSync(filePath, 'utf8');
175
+ const lines = content.split('\n');
176
+ if (lineNumber > lines.length) {
177
+ throw new Error(`lineNumber ${lineNumber} exceeds file length ${lines.length} (${filePath})`);
178
+ }
179
+ // 1. Same-line check
180
+ const targetLine = lines[lineNumber - 1];
181
+ const sameLine = parseAnnotation(targetLine, lang);
182
+ if (sameLine) {
183
+ return { annotation: sameLine, position: 'same-line', annotationLine: lineNumber };
184
+ }
185
+ // 2. Above-line check — only when a previous line exists
186
+ if (lineNumber > 1) {
187
+ const prev = lines[lineNumber - 2];
188
+ if (isStandaloneAnnotationLine(prev, lang)) {
189
+ const above = parseAnnotation(prev, lang);
190
+ if (above) {
191
+ return { annotation: above, position: 'above', annotationLine: lineNumber - 1 };
192
+ }
193
+ }
194
+ }
195
+ return null;
196
+ }
197
+ /**
198
+ * Insert an allowlist annotation at `filePath:lineNumber`. Chooses
199
+ * same-line vs above-line based on the target line's length:
200
+ *
201
+ * - Target shorter than `sameLineThreshold` → append to target.
202
+ * - Target longer than threshold → prepend a new comment line
203
+ * above target, copying its indentation.
204
+ *
205
+ * Returns the chosen position + the 1-indexed line where the
206
+ * annotation comment ended up (useful for the CLI to print "added
207
+ * at file:line").
208
+ *
209
+ * Refuses to insert when the category is not inline-compatible —
210
+ * the caller should route accepted-risk + deferred suppressions
211
+ * through the file-level allowlist instead.
212
+ *
213
+ * Preserves CRLF vs LF line endings: the file is read, split, and
214
+ * re-joined using the detected style. Files without a trailing
215
+ * newline keep that property.
216
+ */
217
+ function insertAnnotation(filePath, lineNumber, annotation, lang, options = {}) {
218
+ if (!categories_1.INLINE_COMPATIBLE_CATEGORIES.has(annotation.category)) {
219
+ throw new Error(`category ${JSON.stringify(annotation.category)} is file-only — ` +
220
+ `use the file-level allowlist via 'vyuh-dxkit allowlist add'`);
221
+ }
222
+ const marker = lang.commentSyntax?.lineComment;
223
+ if (!marker) {
224
+ throw new Error(`language ${lang.id} has no commentSyntax.lineComment; cannot render inline annotation`);
225
+ }
226
+ if (lineNumber < 1) {
227
+ throw new Error(`lineNumber must be >= 1, got ${lineNumber}`);
228
+ }
229
+ const raw = fs.readFileSync(filePath, 'utf8');
230
+ const eol = raw.includes('\r\n') ? '\r\n' : '\n';
231
+ const hadTrailingNewline = raw.endsWith(eol);
232
+ const lines = raw.split(/\r?\n/);
233
+ // `split('\n')` on a trailing newline produces an empty final
234
+ // element; track and preserve it.
235
+ if (hadTrailingNewline && lines[lines.length - 1] === '') {
236
+ lines.pop();
237
+ }
238
+ if (lineNumber > lines.length) {
239
+ throw new Error(`lineNumber ${lineNumber} exceeds file length ${lines.length} (${filePath})`);
240
+ }
241
+ const threshold = options.sameLineThreshold ?? DEFAULT_SAME_LINE_THRESHOLD;
242
+ const targetLine = lines[lineNumber - 1];
243
+ const commentText = `${marker} ${annotationBody(annotation)}`;
244
+ let position;
245
+ let resultLine;
246
+ if (targetLine.length < threshold) {
247
+ // Same-line: append with two-space separator
248
+ lines[lineNumber - 1] = `${targetLine} ${commentText}`;
249
+ position = 'same-line';
250
+ resultLine = lineNumber;
251
+ }
252
+ else {
253
+ // Above-line: insert a new line BEFORE target with matching indent
254
+ const indent = (targetLine.match(/^[\t ]*/) ?? [''])[0];
255
+ lines.splice(lineNumber - 1, 0, `${indent}${commentText}`);
256
+ position = 'above';
257
+ resultLine = lineNumber;
258
+ }
259
+ const out = lines.join(eol) + (hadTrailingNewline ? eol : '');
260
+ fs.writeFileSync(filePath, out, 'utf8');
261
+ return { position, annotationLine: resultLine };
262
+ }
263
+ // ─── Internals ───────────────────────────────────────────────────────────
264
+ function isCanonicalCategory(category) {
265
+ return categories_1.ALL_CATEGORIES.includes(category);
266
+ }
267
+ /**
268
+ * Whether a line is a "standalone annotation comment" — meaning it
269
+ * contains nothing but leading whitespace + the comment marker +
270
+ * the annotation body. Used to distinguish an above-line annotation
271
+ * from a same-line annotation on a different finding's line.
272
+ *
273
+ * Exported because the gather pass (`src/allowlist/gather.ts`) needs
274
+ * the same predicate to label per-occurrence `position`. Single
275
+ * source of truth for the "what counts as standalone" rule.
276
+ *
277
+ * Example (python):
278
+ * ` # dxkit-allow:test-fixture reason="..."` ← standalone
279
+ * `x = 1 # dxkit-allow:test-fixture reason="..."` ← NOT standalone
280
+ */
281
+ function isStandaloneAnnotationLine(line, lang) {
282
+ const marker = lang.commentSyntax?.lineComment;
283
+ if (!marker)
284
+ return false;
285
+ const escapedMarker = escapeForRegex(marker);
286
+ const escapedPrefix = escapeForRegex(ANNOTATION_PREFIX);
287
+ const re = new RegExp(`^\\s*${escapedMarker}\\s*${escapedPrefix}`);
288
+ return re.test(line);
289
+ }
290
+ /**
291
+ * Escape regex metacharacters in a string so it can be embedded
292
+ * literally inside a `RegExp` source. Shared helper so the
293
+ * escape pattern lives in one place — changing it (e.g., to handle
294
+ * a new metacharacter class) is a one-line edit.
295
+ */
296
+ function escapeForRegex(s) {
297
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
298
+ }
299
+ function escapeReason(text) {
300
+ return text.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
301
+ }
302
+ function unescapeReason(text) {
303
+ // Process left-to-right: each `\<x>` collapses to `<x>`.
304
+ return text.replace(/\\(.)/g, '$1');
305
+ }
306
+ //# sourceMappingURL=inline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline.js","sourceRoot":"","sources":["../../src/allowlist/inline.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,10 @@
2
2
  * Project-root discovery for nested BOM aggregation.
3
3
  *
4
4
  * `vyuh-dxkit bom <path>` historically scanned `<path>` as a single
5
- * project root. Repos like `vyuhlabs-platform/` (root devtools +
6
- * `userserver/` product) fell through the cracks — the scanner saw
5
+ * project root. Monorepos with root devtools plus a product
6
+ * subdirectory fell through the cracks — the scanner saw
7
7
  * only whichever `package.json`/lockfile lived at `<path>`, missing
8
- * every sibling or nested sub-project. See D001a in the internal
9
- * defect log for the incident write-up.
8
+ * every sibling or nested sub-project.
10
9
  *
11
10
  * This module walks the filesystem starting at cwd and returns every
12
11
  * directory that looks like an independent project root (i.e. has any
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/analyzers/bom/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA2DH;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAA0B,GAAG,MAAM,EAAE,CAIhG"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/analyzers/bom/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AA2DH;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAA0B,GAAG,MAAM,EAAE,CAIhG"}
@@ -3,11 +3,10 @@
3
3
  * Project-root discovery for nested BOM aggregation.
4
4
  *
5
5
  * `vyuh-dxkit bom <path>` historically scanned `<path>` as a single
6
- * project root. Repos like `vyuhlabs-platform/` (root devtools +
7
- * `userserver/` product) fell through the cracks — the scanner saw
6
+ * project root. Monorepos with root devtools plus a product
7
+ * subdirectory fell through the cracks — the scanner saw
8
8
  * only whichever `package.json`/lockfile lived at `<path>`, missing
9
- * every sibling or nested sub-project. See D001a in the internal
10
- * defect log for the incident write-up.
9
+ * every sibling or nested sub-project.
11
10
  *
12
11
  * This module walks the filesystem starting at cwd and returns every
13
12
  * directory that looks like an independent project root (i.e. has any
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/analyzers/bom/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/analyzers/bom/discovery.ts"],"names":[],"mappings":"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"}
@@ -107,7 +107,7 @@ export interface BomReport {
107
107
  * (filter=top-level)." */
108
108
  unfilteredTotalPackages: number;
109
109
  /** Cwd-relative paths of every project root discovered under the
110
- * scan target (e.g. `["."]` or `[".", "userserver"]`). Sorted,
110
+ * scan target (e.g. `["."]` or `[".", "api-server"]`). Sorted,
111
111
  * distinct. Always at least `["."]` so consumers can treat it
112
112
  * uniformly. Informational only — the package universe comes
113
113
  * from the canonical cached license inventory regardless of how
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/analyzers/dashboard/index.ts"],"names":[],"mappings":"AAwDA,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2EAA2E;IAC3E,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;CACH;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,eAAe,CA8R7F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/analyzers/dashboard/index.ts"],"names":[],"mappings":"AAsEA,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2EAA2E;IAC3E,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;CACH;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,eAAe,CA0S7F"}
@@ -60,6 +60,7 @@ exports.analyzeDashboard = analyzeDashboard;
60
60
  const fs = __importStar(require("fs"));
61
61
  const path = __importStar(require("path"));
62
62
  const report_date_1 = require("../tools/report-date");
63
+ const graph_tab_1 = require("../../dashboard/graph-tab");
63
64
  /** Known report stems → display config. Order here = sidebar order. */
64
65
  const REPORT_STEMS = [
65
66
  { key: 'health', stem: 'health-audit', icon: '🏥', label: 'Health Audit', color: '#3fb950' },
@@ -82,6 +83,18 @@ const REPORT_STEMS = [
82
83
  { key: 'licenses', stem: 'licenses', icon: '📜', label: 'Licenses', color: '#39d2c0' },
83
84
  { key: 'bom', stem: 'bom', icon: '📦', label: 'Bill of Materials', color: '#39d2c0' },
84
85
  ];
86
+ /**
87
+ * Graph tab nav config. Always rendered (even when graph data is
88
+ * missing — the tab's empty-state explains the regeneration command),
89
+ * so the feature is discoverable without prior knowledge.
90
+ */
91
+ const GRAPH_NAV_CONFIG = {
92
+ key: 'graph',
93
+ reportKey: 'graph',
94
+ icon: '🗺️',
95
+ label: 'Graph',
96
+ color: '#58a6ff',
97
+ };
85
98
  function analyzeDashboard(cwd, options = {}) {
86
99
  const reportsDir = options.reportsDir ?? path.join(cwd, '.dxkit', 'reports');
87
100
  const jsonDir = options.jsonDir ?? reportsDir;
@@ -259,6 +272,16 @@ function analyzeDashboard(cwd, options = {}) {
259
272
  }
260
273
  const overviewBadge = healthScore !== null ? `${healthScore}/100 (${healthGrade ?? '?'})` : '';
261
274
  const generationDate = (0, report_date_1.getReportDate)();
275
+ // Graph viz tab. The renderer is best-effort — missing graph
276
+ // artifact + missing vendor bundle each surface a distinct
277
+ // empty-state inside the tab without blocking the rest of the
278
+ // dashboard. Rule 12 compliance lives inside renderGraphTab itself
279
+ // (it routes through loadGraph for the existence check).
280
+ const graphTab = (0, graph_tab_1.renderGraphTab)({ cwd });
281
+ navEntries.push({
282
+ ...GRAPH_NAV_CONFIG,
283
+ badge: graphTab.navBadge,
284
+ });
262
285
  const html = renderHtml({
263
286
  projectName,
264
287
  generationDate,
@@ -283,6 +306,7 @@ function analyzeDashboard(cwd, options = {}) {
283
306
  criticalIssuesTotal,
284
307
  reports,
285
308
  navEntries,
309
+ graphTabHtml: graphTab.html,
286
310
  });
287
311
  return {
288
312
  html,
@@ -506,6 +530,7 @@ function renderHtml(a) {
506
530
  ::-webkit-scrollbar-thumb:hover { background: var(--border); }
507
531
  .main-inner { animation: fadeIn 0.2s ease; }
508
532
  @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
533
+ ${graph_tab_1.GRAPH_TAB_CSS}
509
534
  </style>
510
535
  </head>
511
536
  <body>
@@ -626,6 +651,8 @@ function renderHtml(a) {
626
651
  </div>
627
652
  </main>
628
653
 
654
+ ${a.graphTabHtml}
655
+
629
656
  <script id="reports-data" type="application/json">${reportsJson.replace(/</g, '\\u003c')}</script>
630
657
  <script id="nav-data" type="application/json">${navJson.replace(/</g, '\\u003c')}</script>
631
658
  <script>
@@ -633,6 +660,8 @@ function renderHtml(a) {
633
660
  const navEntries = JSON.parse(document.getElementById('nav-data').textContent);
634
661
  const nav = document.getElementById('nav');
635
662
  const content = document.getElementById('content');
663
+ const mainEl = document.querySelector('.main');
664
+ const graphPane = document.getElementById('graph-tab-pane');
636
665
  const overviewHtml = document.getElementById('overview-content').outerHTML;
637
666
 
638
667
  navEntries.forEach((cfg) => {
@@ -647,11 +676,19 @@ function renderHtml(a) {
647
676
  document.querySelectorAll('.nav-item').forEach((b) => b.classList.remove('active'));
648
677
  const btn = document.querySelector('[data-target="' + target + '"]');
649
678
  if (btn) btn.classList.add('active');
650
- if (target === 'overview') {
651
- content.innerHTML = overviewHtml;
652
- } else if (reports[target]) {
653
- const md = typeof marked !== 'undefined' ? marked.parse(reports[target]) : '<pre>' + reports[target].replace(/</g, '&lt;') + '</pre>';
654
- content.innerHTML = '<div class="main-inner" style="animation:fadeIn 0.2s ease">' + md + '</div>';
679
+
680
+ if (target === 'graph') {
681
+ if (mainEl) mainEl.style.display = 'none';
682
+ if (graphPane) graphPane.style.display = 'flex';
683
+ } else {
684
+ if (graphPane) graphPane.style.display = 'none';
685
+ if (mainEl) mainEl.style.display = '';
686
+ if (target === 'overview') {
687
+ content.innerHTML = overviewHtml;
688
+ } else if (reports[target]) {
689
+ const md = typeof marked !== 'undefined' ? marked.parse(reports[target]) : '<pre>' + reports[target].replace(/</g, '&lt;') + '</pre>';
690
+ content.innerHTML = '<div class="main-inner" style="animation:fadeIn 0.2s ease">' + md + '</div>';
691
+ }
655
692
  }
656
693
  document.querySelector('.sidebar').classList.remove('open');
657
694
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyzers/dashboard/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyzers/dashboard/index.ts"],"names":[],"mappings":"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"}
@@ -6,12 +6,19 @@
6
6
  */
7
7
  import { QualityReport, QualityMetrics } from './types';
8
8
  import { RankedAction } from '../remediation';
9
+ import { type DetailedGraphContext } from '../../explore/finding-context';
9
10
  export interface QualityDetailedReport extends QualityReport {
10
11
  /** Schema version for agent consumers. Bump on breaking shape changes. */
11
12
  schemaVersion: string;
12
13
  /** Ranked remediation actions with simulated score deltas. */
13
14
  actions: Array<RankedAction<QualityMetrics>>;
15
+ /**
16
+ * Per-offender-file graph context (module + blast radius), keyed by
17
+ * file path. Present only when `--graph-context` ran AND a graph
18
+ * loaded.
19
+ */
20
+ graphContext?: DetailedGraphContext;
14
21
  }
15
- export declare function buildQualityDetailed(report: QualityReport): QualityDetailedReport;
22
+ export declare function buildQualityDetailed(report: QualityReport, graphContext?: DetailedGraphContext): QualityDetailedReport;
16
23
  export declare function formatQualityDetailedMarkdown(detailed: QualityDetailedReport, elapsed: string): string;
17
24
  //# sourceMappingURL=detailed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detailed.d.ts","sourceRoot":"","sources":["../../../src/analyzers/quality/detailed.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,YAAY,EAAQ,MAAM,gBAAgB,CAAC;AAMpD,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;CAC9C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,qBAAqB,CASjF;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,MAAM,GACd,MAAM,CA+GR"}
1
+ {"version":3,"file":"detailed.d.ts","sourceRoot":"","sources":["../../../src/analyzers/quality/detailed.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,YAAY,EAAQ,MAAM,gBAAgB,CAAC;AAKpD,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;IAC7C;;;;OAIG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,YAAY,CAAC,EAAE,oBAAoB,GAClC,qBAAqB,CAUvB;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,MAAM,GACd,MAAM,CAiJR"}