@grafema/util 0.3.0-beta

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 (324) hide show
  1. package/LICENSE +190 -0
  2. package/dist/api/GraphAPI.d.ts +87 -0
  3. package/dist/api/GraphAPI.d.ts.map +1 -0
  4. package/dist/api/GraphAPI.js +212 -0
  5. package/dist/api/GraphAPI.js.map +1 -0
  6. package/dist/api/GuaranteeAPI.d.ts +147 -0
  7. package/dist/api/GuaranteeAPI.d.ts.map +1 -0
  8. package/dist/api/GuaranteeAPI.js +290 -0
  9. package/dist/api/GuaranteeAPI.js.map +1 -0
  10. package/dist/config/ConfigLoader.d.ts +214 -0
  11. package/dist/config/ConfigLoader.d.ts.map +1 -0
  12. package/dist/config/ConfigLoader.js +441 -0
  13. package/dist/config/ConfigLoader.js.map +1 -0
  14. package/dist/config/index.d.ts +6 -0
  15. package/dist/config/index.d.ts.map +1 -0
  16. package/dist/config/index.js +5 -0
  17. package/dist/config/index.js.map +1 -0
  18. package/dist/core/CoverageAnalyzer.d.ts +65 -0
  19. package/dist/core/CoverageAnalyzer.d.ts.map +1 -0
  20. package/dist/core/CoverageAnalyzer.js +199 -0
  21. package/dist/core/CoverageAnalyzer.js.map +1 -0
  22. package/dist/core/FileExplainer.d.ts +101 -0
  23. package/dist/core/FileExplainer.d.ts.map +1 -0
  24. package/dist/core/FileExplainer.js +140 -0
  25. package/dist/core/FileExplainer.js.map +1 -0
  26. package/dist/core/FileOverview.d.ts +124 -0
  27. package/dist/core/FileOverview.d.ts.map +1 -0
  28. package/dist/core/FileOverview.js +279 -0
  29. package/dist/core/FileOverview.js.map +1 -0
  30. package/dist/core/GrafemaUri.d.ts +66 -0
  31. package/dist/core/GrafemaUri.d.ts.map +1 -0
  32. package/dist/core/GrafemaUri.js +191 -0
  33. package/dist/core/GrafemaUri.js.map +1 -0
  34. package/dist/core/GraphBackend.d.ts +158 -0
  35. package/dist/core/GraphBackend.d.ts.map +1 -0
  36. package/dist/core/GraphBackend.js +85 -0
  37. package/dist/core/GraphBackend.js.map +1 -0
  38. package/dist/core/GraphFreshnessChecker.d.ts +33 -0
  39. package/dist/core/GraphFreshnessChecker.d.ts.map +1 -0
  40. package/dist/core/GraphFreshnessChecker.js +104 -0
  41. package/dist/core/GraphFreshnessChecker.js.map +1 -0
  42. package/dist/core/GuaranteeManager.d.ts +254 -0
  43. package/dist/core/GuaranteeManager.d.ts.map +1 -0
  44. package/dist/core/GuaranteeManager.js +447 -0
  45. package/dist/core/GuaranteeManager.js.map +1 -0
  46. package/dist/core/HashUtils.d.ts +24 -0
  47. package/dist/core/HashUtils.d.ts.map +1 -0
  48. package/dist/core/HashUtils.js +46 -0
  49. package/dist/core/HashUtils.js.map +1 -0
  50. package/dist/core/IncrementalReanalyzer.d.ts +33 -0
  51. package/dist/core/IncrementalReanalyzer.d.ts.map +1 -0
  52. package/dist/core/IncrementalReanalyzer.js +67 -0
  53. package/dist/core/IncrementalReanalyzer.js.map +1 -0
  54. package/dist/core/ResourceRegistry.d.ts +17 -0
  55. package/dist/core/ResourceRegistry.d.ts.map +1 -0
  56. package/dist/core/ResourceRegistry.js +32 -0
  57. package/dist/core/ResourceRegistry.js.map +1 -0
  58. package/dist/core/SemanticId.d.ts +159 -0
  59. package/dist/core/SemanticId.d.ts.map +1 -0
  60. package/dist/core/SemanticId.js +291 -0
  61. package/dist/core/SemanticId.js.map +1 -0
  62. package/dist/core/VersionManager.d.ts +166 -0
  63. package/dist/core/VersionManager.d.ts.map +1 -0
  64. package/dist/core/VersionManager.js +239 -0
  65. package/dist/core/VersionManager.js.map +1 -0
  66. package/dist/core/brandNodeInternal.d.ts +14 -0
  67. package/dist/core/brandNodeInternal.d.ts.map +1 -0
  68. package/dist/core/brandNodeInternal.js +4 -0
  69. package/dist/core/brandNodeInternal.js.map +1 -0
  70. package/dist/core/nodes/GuaranteeNode.d.ts +76 -0
  71. package/dist/core/nodes/GuaranteeNode.d.ts.map +1 -0
  72. package/dist/core/nodes/GuaranteeNode.js +118 -0
  73. package/dist/core/nodes/GuaranteeNode.js.map +1 -0
  74. package/dist/core/nodes/IssueNode.d.ts +73 -0
  75. package/dist/core/nodes/IssueNode.d.ts.map +1 -0
  76. package/dist/core/nodes/IssueNode.js +130 -0
  77. package/dist/core/nodes/IssueNode.js.map +1 -0
  78. package/dist/core/nodes/NodeKind.d.ts +104 -0
  79. package/dist/core/nodes/NodeKind.d.ts.map +1 -0
  80. package/dist/core/nodes/NodeKind.js +166 -0
  81. package/dist/core/nodes/NodeKind.js.map +1 -0
  82. package/dist/diagnostics/DiagnosticCollector.d.ts +103 -0
  83. package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -0
  84. package/dist/diagnostics/DiagnosticCollector.js +133 -0
  85. package/dist/diagnostics/DiagnosticCollector.js.map +1 -0
  86. package/dist/diagnostics/DiagnosticReporter.d.ts +122 -0
  87. package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -0
  88. package/dist/diagnostics/DiagnosticReporter.js +300 -0
  89. package/dist/diagnostics/DiagnosticReporter.js.map +1 -0
  90. package/dist/diagnostics/DiagnosticWriter.d.ts +31 -0
  91. package/dist/diagnostics/DiagnosticWriter.d.ts.map +1 -0
  92. package/dist/diagnostics/DiagnosticWriter.js +44 -0
  93. package/dist/diagnostics/DiagnosticWriter.js.map +1 -0
  94. package/dist/diagnostics/categories.d.ts +57 -0
  95. package/dist/diagnostics/categories.d.ts.map +1 -0
  96. package/dist/diagnostics/categories.js +71 -0
  97. package/dist/diagnostics/categories.js.map +1 -0
  98. package/dist/diagnostics/index.d.ts +17 -0
  99. package/dist/diagnostics/index.d.ts.map +1 -0
  100. package/dist/diagnostics/index.js +15 -0
  101. package/dist/diagnostics/index.js.map +1 -0
  102. package/dist/errors/GrafemaError.d.ts +200 -0
  103. package/dist/errors/GrafemaError.d.ts.map +1 -0
  104. package/dist/errors/GrafemaError.js +209 -0
  105. package/dist/errors/GrafemaError.js.map +1 -0
  106. package/dist/index.d.ts +75 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +76 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/instructions/index.d.ts +8 -0
  111. package/dist/instructions/index.d.ts.map +1 -0
  112. package/dist/instructions/index.js +20 -0
  113. package/dist/instructions/index.js.map +1 -0
  114. package/dist/instructions/onboarding.md +133 -0
  115. package/dist/knowledge/KnowledgeBase.d.ts +113 -0
  116. package/dist/knowledge/KnowledgeBase.d.ts.map +1 -0
  117. package/dist/knowledge/KnowledgeBase.js +420 -0
  118. package/dist/knowledge/KnowledgeBase.js.map +1 -0
  119. package/dist/knowledge/SemanticAddressResolver.d.ts +59 -0
  120. package/dist/knowledge/SemanticAddressResolver.d.ts.map +1 -0
  121. package/dist/knowledge/SemanticAddressResolver.js +160 -0
  122. package/dist/knowledge/SemanticAddressResolver.js.map +1 -0
  123. package/dist/knowledge/git-ingest.d.ts +58 -0
  124. package/dist/knowledge/git-ingest.d.ts.map +1 -0
  125. package/dist/knowledge/git-ingest.js +301 -0
  126. package/dist/knowledge/git-ingest.js.map +1 -0
  127. package/dist/knowledge/git-queries.d.ts +86 -0
  128. package/dist/knowledge/git-queries.d.ts.map +1 -0
  129. package/dist/knowledge/git-queries.js +177 -0
  130. package/dist/knowledge/git-queries.js.map +1 -0
  131. package/dist/knowledge/index.d.ts +14 -0
  132. package/dist/knowledge/index.d.ts.map +1 -0
  133. package/dist/knowledge/index.js +10 -0
  134. package/dist/knowledge/index.js.map +1 -0
  135. package/dist/knowledge/parser.d.ts +39 -0
  136. package/dist/knowledge/parser.d.ts.map +1 -0
  137. package/dist/knowledge/parser.js +292 -0
  138. package/dist/knowledge/parser.js.map +1 -0
  139. package/dist/knowledge/types.d.ts +133 -0
  140. package/dist/knowledge/types.d.ts.map +1 -0
  141. package/dist/knowledge/types.js +8 -0
  142. package/dist/knowledge/types.js.map +1 -0
  143. package/dist/logging/Logger.d.ts +98 -0
  144. package/dist/logging/Logger.d.ts.map +1 -0
  145. package/dist/logging/Logger.js +274 -0
  146. package/dist/logging/Logger.js.map +1 -0
  147. package/dist/notation/archetypes.d.ts +36 -0
  148. package/dist/notation/archetypes.d.ts.map +1 -0
  149. package/dist/notation/archetypes.js +173 -0
  150. package/dist/notation/archetypes.js.map +1 -0
  151. package/dist/notation/fold.d.ts +25 -0
  152. package/dist/notation/fold.d.ts.map +1 -0
  153. package/dist/notation/fold.js +598 -0
  154. package/dist/notation/fold.js.map +1 -0
  155. package/dist/notation/index.d.ts +18 -0
  156. package/dist/notation/index.d.ts.map +1 -0
  157. package/dist/notation/index.js +16 -0
  158. package/dist/notation/index.js.map +1 -0
  159. package/dist/notation/lodExtractor.d.ts +32 -0
  160. package/dist/notation/lodExtractor.d.ts.map +1 -0
  161. package/dist/notation/lodExtractor.js +149 -0
  162. package/dist/notation/lodExtractor.js.map +1 -0
  163. package/dist/notation/nameShortener.d.ts +22 -0
  164. package/dist/notation/nameShortener.d.ts.map +1 -0
  165. package/dist/notation/nameShortener.js +24 -0
  166. package/dist/notation/nameShortener.js.map +1 -0
  167. package/dist/notation/perspectives.d.ts +11 -0
  168. package/dist/notation/perspectives.d.ts.map +1 -0
  169. package/dist/notation/perspectives.js +16 -0
  170. package/dist/notation/perspectives.js.map +1 -0
  171. package/dist/notation/renderer.d.ts +31 -0
  172. package/dist/notation/renderer.d.ts.map +1 -0
  173. package/dist/notation/renderer.js +315 -0
  174. package/dist/notation/renderer.js.map +1 -0
  175. package/dist/notation/traceRenderer.d.ts +39 -0
  176. package/dist/notation/traceRenderer.d.ts.map +1 -0
  177. package/dist/notation/traceRenderer.js +358 -0
  178. package/dist/notation/traceRenderer.js.map +1 -0
  179. package/dist/notation/types.d.ts +66 -0
  180. package/dist/notation/types.d.ts.map +1 -0
  181. package/dist/notation/types.js +10 -0
  182. package/dist/notation/types.js.map +1 -0
  183. package/dist/queries/NodeContext.d.ts +81 -0
  184. package/dist/queries/NodeContext.d.ts.map +1 -0
  185. package/dist/queries/NodeContext.js +196 -0
  186. package/dist/queries/NodeContext.js.map +1 -0
  187. package/dist/queries/findCallsInFunction.d.ts +62 -0
  188. package/dist/queries/findCallsInFunction.d.ts.map +1 -0
  189. package/dist/queries/findCallsInFunction.js +169 -0
  190. package/dist/queries/findCallsInFunction.js.map +1 -0
  191. package/dist/queries/findContainingFunction.d.ts +57 -0
  192. package/dist/queries/findContainingFunction.d.ts.map +1 -0
  193. package/dist/queries/findContainingFunction.js +91 -0
  194. package/dist/queries/findContainingFunction.js.map +1 -0
  195. package/dist/queries/index.d.ts +18 -0
  196. package/dist/queries/index.d.ts.map +1 -0
  197. package/dist/queries/index.js +14 -0
  198. package/dist/queries/index.js.map +1 -0
  199. package/dist/queries/traceDataflow.d.ts +65 -0
  200. package/dist/queries/traceDataflow.d.ts.map +1 -0
  201. package/dist/queries/traceDataflow.js +754 -0
  202. package/dist/queries/traceDataflow.js.map +1 -0
  203. package/dist/queries/traceValues.d.ts +70 -0
  204. package/dist/queries/traceValues.d.ts.map +1 -0
  205. package/dist/queries/traceValues.js +373 -0
  206. package/dist/queries/traceValues.js.map +1 -0
  207. package/dist/queries/types.d.ts +166 -0
  208. package/dist/queries/types.d.ts.map +1 -0
  209. package/dist/queries/types.js +10 -0
  210. package/dist/queries/types.js.map +1 -0
  211. package/dist/schema/GraphSchemaExtractor.d.ts +53 -0
  212. package/dist/schema/GraphSchemaExtractor.d.ts.map +1 -0
  213. package/dist/schema/GraphSchemaExtractor.js +125 -0
  214. package/dist/schema/GraphSchemaExtractor.js.map +1 -0
  215. package/dist/schema/InterfaceSchemaExtractor.d.ts +73 -0
  216. package/dist/schema/InterfaceSchemaExtractor.d.ts.map +1 -0
  217. package/dist/schema/InterfaceSchemaExtractor.js +113 -0
  218. package/dist/schema/InterfaceSchemaExtractor.js.map +1 -0
  219. package/dist/schema/index.d.ts +5 -0
  220. package/dist/schema/index.d.ts.map +1 -0
  221. package/dist/schema/index.js +3 -0
  222. package/dist/schema/index.js.map +1 -0
  223. package/dist/storage/backends/RFDBServerBackend.d.ts +356 -0
  224. package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -0
  225. package/dist/storage/backends/RFDBServerBackend.js +748 -0
  226. package/dist/storage/backends/RFDBServerBackend.js.map +1 -0
  227. package/dist/storage/backends/typeValidation.d.ts +47 -0
  228. package/dist/storage/backends/typeValidation.d.ts.map +1 -0
  229. package/dist/storage/backends/typeValidation.js +141 -0
  230. package/dist/storage/backends/typeValidation.js.map +1 -0
  231. package/dist/utils/findRfdbBinary.d.ts +67 -0
  232. package/dist/utils/findRfdbBinary.d.ts.map +1 -0
  233. package/dist/utils/findRfdbBinary.js +261 -0
  234. package/dist/utils/findRfdbBinary.js.map +1 -0
  235. package/dist/utils/lazyDownload.d.ts +43 -0
  236. package/dist/utils/lazyDownload.d.ts.map +1 -0
  237. package/dist/utils/lazyDownload.js +175 -0
  238. package/dist/utils/lazyDownload.js.map +1 -0
  239. package/dist/utils/moduleResolution.d.ts +134 -0
  240. package/dist/utils/moduleResolution.d.ts.map +1 -0
  241. package/dist/utils/moduleResolution.js +189 -0
  242. package/dist/utils/moduleResolution.js.map +1 -0
  243. package/dist/utils/resolveNodeFile.d.ts +13 -0
  244. package/dist/utils/resolveNodeFile.d.ts.map +1 -0
  245. package/dist/utils/resolveNodeFile.js +18 -0
  246. package/dist/utils/resolveNodeFile.js.map +1 -0
  247. package/dist/utils/startRfdbServer.d.ts +63 -0
  248. package/dist/utils/startRfdbServer.d.ts.map +1 -0
  249. package/dist/utils/startRfdbServer.js +142 -0
  250. package/dist/utils/startRfdbServer.js.map +1 -0
  251. package/dist/validation/PathValidator.d.ts +80 -0
  252. package/dist/validation/PathValidator.d.ts.map +1 -0
  253. package/dist/validation/PathValidator.js +252 -0
  254. package/dist/validation/PathValidator.js.map +1 -0
  255. package/dist/version.d.ts +11 -0
  256. package/dist/version.d.ts.map +1 -0
  257. package/dist/version.js +26 -0
  258. package/dist/version.js.map +1 -0
  259. package/package.json +50 -0
  260. package/src/api/GraphAPI.ts +307 -0
  261. package/src/api/GuaranteeAPI.ts +402 -0
  262. package/src/config/ConfigLoader.ts +653 -0
  263. package/src/config/index.ts +13 -0
  264. package/src/core/CoverageAnalyzer.ts +243 -0
  265. package/src/core/FileExplainer.ts +179 -0
  266. package/src/core/FileOverview.ts +397 -0
  267. package/src/core/GrafemaUri.ts +216 -0
  268. package/src/core/GraphBackend.ts +266 -0
  269. package/src/core/GraphFreshnessChecker.ts +145 -0
  270. package/src/core/GuaranteeManager.ts +684 -0
  271. package/src/core/HashUtils.ts +48 -0
  272. package/src/core/IncrementalReanalyzer.ts +106 -0
  273. package/src/core/ResourceRegistry.ts +39 -0
  274. package/src/core/SemanticId.ts +423 -0
  275. package/src/core/VersionManager.ts +405 -0
  276. package/src/core/brandNodeInternal.ts +16 -0
  277. package/src/core/nodes/GuaranteeNode.ts +162 -0
  278. package/src/core/nodes/IssueNode.ts +177 -0
  279. package/src/core/nodes/NodeKind.ts +192 -0
  280. package/src/diagnostics/DiagnosticCollector.ts +170 -0
  281. package/src/diagnostics/DiagnosticReporter.ts +395 -0
  282. package/src/diagnostics/DiagnosticWriter.ts +50 -0
  283. package/src/diagnostics/categories.ts +104 -0
  284. package/src/diagnostics/index.ts +30 -0
  285. package/src/errors/GrafemaError.ts +297 -0
  286. package/src/index.ts +261 -0
  287. package/src/instructions/index.ts +21 -0
  288. package/src/instructions/onboarding.md +133 -0
  289. package/src/knowledge/KnowledgeBase.ts +486 -0
  290. package/src/knowledge/SemanticAddressResolver.ts +191 -0
  291. package/src/knowledge/git-ingest.ts +402 -0
  292. package/src/knowledge/git-queries.ts +269 -0
  293. package/src/knowledge/index.ts +29 -0
  294. package/src/knowledge/parser.ts +294 -0
  295. package/src/knowledge/types.ts +146 -0
  296. package/src/logging/Logger.ts +303 -0
  297. package/src/notation/archetypes.ts +189 -0
  298. package/src/notation/fold.ts +696 -0
  299. package/src/notation/index.ts +27 -0
  300. package/src/notation/lodExtractor.ts +177 -0
  301. package/src/notation/nameShortener.ts +24 -0
  302. package/src/notation/perspectives.ts +18 -0
  303. package/src/notation/renderer.ts +394 -0
  304. package/src/notation/traceRenderer.ts +458 -0
  305. package/src/notation/types.ts +79 -0
  306. package/src/queries/NodeContext.ts +280 -0
  307. package/src/queries/findCallsInFunction.ts +249 -0
  308. package/src/queries/findContainingFunction.ts +124 -0
  309. package/src/queries/index.ts +44 -0
  310. package/src/queries/traceDataflow.ts +838 -0
  311. package/src/queries/traceValues.ts +531 -0
  312. package/src/queries/types.ts +191 -0
  313. package/src/schema/GraphSchemaExtractor.ts +177 -0
  314. package/src/schema/InterfaceSchemaExtractor.ts +173 -0
  315. package/src/schema/index.ts +5 -0
  316. package/src/storage/backends/RFDBServerBackend.ts +895 -0
  317. package/src/storage/backends/typeValidation.ts +154 -0
  318. package/src/utils/findRfdbBinary.ts +288 -0
  319. package/src/utils/lazyDownload.ts +206 -0
  320. package/src/utils/moduleResolution.ts +271 -0
  321. package/src/utils/resolveNodeFile.ts +18 -0
  322. package/src/utils/startRfdbServer.ts +197 -0
  323. package/src/validation/PathValidator.ts +334 -0
  324. package/src/version.ts +28 -0
@@ -0,0 +1,133 @@
1
+ /**
2
+ * DiagnosticCollector - Collects and filters diagnostics from plugin execution
3
+ *
4
+ * The DiagnosticCollector aggregates errors from PluginResult.errors[],
5
+ * converting both GrafemaError instances (with rich info) and plain Error
6
+ * instances (treated as generic errors) into unified Diagnostic entries.
7
+ *
8
+ * Usage:
9
+ * const collector = new DiagnosticCollector();
10
+ * collector.addFromPluginResult('INDEXING', 'JSModuleIndexer', result);
11
+ *
12
+ * if (collector.hasFatal()) {
13
+ * throw new Error('Fatal error detected');
14
+ * }
15
+ *
16
+ * console.log(collector.toDiagnosticsLog());
17
+ */
18
+ import { GrafemaError } from '../errors/GrafemaError.js';
19
+ /**
20
+ * DiagnosticCollector - collects, filters, and formats diagnostics
21
+ */
22
+ export class DiagnosticCollector {
23
+ diagnostics = [];
24
+ /**
25
+ * Extract errors from PluginResult and add as diagnostics.
26
+ *
27
+ * GrafemaError instances provide rich info (code, severity, context, suggestion).
28
+ * Plain Error instances are treated as generic errors with code 'ERR_UNKNOWN'.
29
+ */
30
+ addFromPluginResult(phase, plugin, result) {
31
+ for (const error of result.errors) {
32
+ if (error instanceof GrafemaError) {
33
+ this.add({
34
+ code: error.code,
35
+ severity: error.severity,
36
+ message: error.message,
37
+ file: error.context.filePath,
38
+ line: error.context.lineNumber,
39
+ phase,
40
+ plugin,
41
+ suggestion: error.suggestion,
42
+ // REG-332: Pass through resolution context
43
+ resolutionChain: error.context.resolutionChain,
44
+ failureReason: error.context.failureReason,
45
+ });
46
+ }
47
+ else {
48
+ // Plain Error - treat as generic error
49
+ this.add({
50
+ code: 'ERR_UNKNOWN',
51
+ severity: 'error',
52
+ message: error.message,
53
+ phase,
54
+ plugin,
55
+ });
56
+ }
57
+ }
58
+ }
59
+ /**
60
+ * Add a diagnostic directly.
61
+ * Timestamp is set automatically.
62
+ */
63
+ add(diagnostic) {
64
+ this.diagnostics.push({
65
+ ...diagnostic,
66
+ timestamp: Date.now(),
67
+ });
68
+ }
69
+ /**
70
+ * Get all diagnostics.
71
+ * Returns a copy to prevent external modification.
72
+ */
73
+ getAll() {
74
+ return [...this.diagnostics];
75
+ }
76
+ /**
77
+ * Get diagnostics filtered by phase.
78
+ */
79
+ getByPhase(phase) {
80
+ return this.diagnostics.filter(d => d.phase === phase);
81
+ }
82
+ /**
83
+ * Get diagnostics filtered by plugin name (case-sensitive).
84
+ */
85
+ getByPlugin(plugin) {
86
+ return this.diagnostics.filter(d => d.plugin === plugin);
87
+ }
88
+ /**
89
+ * Get diagnostics filtered by error code.
90
+ */
91
+ getByCode(code) {
92
+ return this.diagnostics.filter(d => d.code === code);
93
+ }
94
+ /**
95
+ * Check if any fatal diagnostic exists.
96
+ * Fatal errors require immediate stop of analysis.
97
+ */
98
+ hasFatal() {
99
+ return this.diagnostics.some(d => d.severity === 'fatal');
100
+ }
101
+ /**
102
+ * Check if any error (including fatal) exists.
103
+ */
104
+ hasErrors() {
105
+ return this.diagnostics.some(d => d.severity === 'error' || d.severity === 'fatal');
106
+ }
107
+ /**
108
+ * Check if any warning exists.
109
+ */
110
+ hasWarnings() {
111
+ return this.diagnostics.some(d => d.severity === 'warning');
112
+ }
113
+ /**
114
+ * Get total count of diagnostics.
115
+ */
116
+ count() {
117
+ return this.diagnostics.length;
118
+ }
119
+ /**
120
+ * Format diagnostics as JSON lines (one JSON object per line).
121
+ * Suitable for .grafema/diagnostics.log file.
122
+ */
123
+ toDiagnosticsLog() {
124
+ return this.diagnostics.map(d => JSON.stringify(d)).join('\n');
125
+ }
126
+ /**
127
+ * Clear all diagnostics.
128
+ */
129
+ clear() {
130
+ this.diagnostics = [];
131
+ }
132
+ }
133
+ //# sourceMappingURL=DiagnosticCollector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticCollector.js","sourceRoot":"","sources":["../../src/diagnostics/DiagnosticCollector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * DiagnosticReporter - Formats diagnostics for output
3
+ *
4
+ * Supports multiple output formats:
5
+ * - text: Human-readable format with severity indicators
6
+ * - json: Machine-readable JSON format for CI integration
7
+ * - csv: Spreadsheet-compatible format
8
+ *
9
+ * Usage:
10
+ * const reporter = new DiagnosticReporter(collector);
11
+ * console.log(reporter.report({ format: 'text', includeSummary: true }));
12
+ * console.log(reporter.summary());
13
+ */
14
+ import type { Diagnostic, DiagnosticCollector } from './DiagnosticCollector.js';
15
+ /**
16
+ * Report output options
17
+ */
18
+ export interface ReportOptions {
19
+ format: 'text' | 'json' | 'csv';
20
+ includeSummary?: boolean;
21
+ includeTrace?: boolean;
22
+ }
23
+ /**
24
+ * Options for strict mode formatting (REG-332)
25
+ */
26
+ export interface StrictFormatOptions {
27
+ /** Show resolution chain (hybrid: auto-show for ≤3 errors, hide for more) */
28
+ verbose?: boolean;
29
+ /** REG-332: Number of errors suppressed by grafema-ignore comments */
30
+ suppressedCount?: number;
31
+ }
32
+ /**
33
+ * Summary statistics
34
+ */
35
+ export interface SummaryStats {
36
+ total: number;
37
+ fatal: number;
38
+ errors: number;
39
+ warnings: number;
40
+ info: number;
41
+ }
42
+ /**
43
+ * Category count with metadata
44
+ */
45
+ export interface CategoryCount {
46
+ code: string;
47
+ count: number;
48
+ name: string;
49
+ checkCommand: string;
50
+ }
51
+ /**
52
+ * Summary statistics with category breakdown
53
+ */
54
+ export interface CategorizedSummaryStats extends SummaryStats {
55
+ byCode: CategoryCount[];
56
+ }
57
+ /**
58
+ * DiagnosticReporter - formats diagnostics for different output formats
59
+ */
60
+ export declare class DiagnosticReporter {
61
+ private collector;
62
+ constructor(collector: DiagnosticCollector);
63
+ /**
64
+ * Generate a formatted report of all diagnostics.
65
+ */
66
+ report(options: ReportOptions): string;
67
+ /**
68
+ * Generate a human-readable summary of diagnostic counts.
69
+ */
70
+ summary(): string;
71
+ /**
72
+ * Generate a categorized summary with actionable commands.
73
+ */
74
+ categorizedSummary(): string;
75
+ /**
76
+ * Get diagnostic statistics by severity.
77
+ */
78
+ getStats(): SummaryStats;
79
+ /**
80
+ * Get diagnostic statistics grouped by category.
81
+ */
82
+ getCategorizedStats(): CategorizedSummaryStats;
83
+ /**
84
+ * Format strict mode errors with enhanced context (REG-332).
85
+ * Shows resolution chain and context-aware suggestions.
86
+ *
87
+ * Uses hybrid progressive disclosure:
88
+ * - ≤3 errors: show chain by default
89
+ * - >3 errors: hide chain unless verbose=true
90
+ *
91
+ * @param diagnostics - The fatal diagnostics from strict mode
92
+ * @param options - Formatting options
93
+ * @returns Formatted string for CLI output
94
+ */
95
+ formatStrict(diagnostics: Diagnostic[], options?: StrictFormatOptions): string;
96
+ /**
97
+ * Generate human-readable text report.
98
+ */
99
+ private textReport;
100
+ /**
101
+ * Generate JSON report.
102
+ */
103
+ private jsonReport;
104
+ /**
105
+ * Generate CSV report.
106
+ */
107
+ private csvReport;
108
+ /**
109
+ * Get severity indicator for text output.
110
+ */
111
+ private getSeverityIcon;
112
+ /**
113
+ * Format file location for display.
114
+ */
115
+ private formatLocation;
116
+ /**
117
+ * Escape a value for CSV output.
118
+ * Wraps in quotes and escapes internal quotes.
119
+ */
120
+ private csvEscape;
121
+ }
122
+ //# sourceMappingURL=DiagnosticReporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticReporter.d.ts","sourceRoot":"","sources":["../../src/diagnostics/DiagnosticReporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGhF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,mBAAmB;IAElD;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM;IAYtC;;OAEG;IACH,OAAO,IAAI,MAAM;IAsBjB;;OAEG;IACH,kBAAkB,IAAI,MAAM;IA0C5B;;OAEG;IACH,QAAQ,IAAI,YAAY;IAWxB;;OAEG;IACH,mBAAmB,IAAI,uBAAuB;IAwC9C;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM;IA+DlF;;OAEG;IACH,OAAO,CAAC,UAAU;IA0BlB;;OAEG;IACH,OAAO,CAAC,UAAU;IAelB;;OAEG;IACH,OAAO,CAAC,SAAS;IAiBjB;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;;OAGG;IACH,OAAO,CAAC,SAAS;CAKlB"}
@@ -0,0 +1,300 @@
1
+ /**
2
+ * DiagnosticReporter - Formats diagnostics for output
3
+ *
4
+ * Supports multiple output formats:
5
+ * - text: Human-readable format with severity indicators
6
+ * - json: Machine-readable JSON format for CI integration
7
+ * - csv: Spreadsheet-compatible format
8
+ *
9
+ * Usage:
10
+ * const reporter = new DiagnosticReporter(collector);
11
+ * console.log(reporter.report({ format: 'text', includeSummary: true }));
12
+ * console.log(reporter.summary());
13
+ */
14
+ import { CODE_TO_CATEGORY } from './categories.js';
15
+ /**
16
+ * DiagnosticReporter - formats diagnostics for different output formats
17
+ */
18
+ export class DiagnosticReporter {
19
+ collector;
20
+ constructor(collector) {
21
+ this.collector = collector;
22
+ }
23
+ /**
24
+ * Generate a formatted report of all diagnostics.
25
+ */
26
+ report(options) {
27
+ const diagnostics = this.collector.getAll();
28
+ if (options.format === 'json') {
29
+ return this.jsonReport(diagnostics, options);
30
+ }
31
+ else if (options.format === 'csv') {
32
+ return this.csvReport(diagnostics);
33
+ }
34
+ else {
35
+ return this.textReport(diagnostics, options);
36
+ }
37
+ }
38
+ /**
39
+ * Generate a human-readable summary of diagnostic counts.
40
+ */
41
+ summary() {
42
+ const stats = this.getStats();
43
+ if (stats.total === 0) {
44
+ return 'No issues found.';
45
+ }
46
+ const parts = [];
47
+ if (stats.fatal > 0) {
48
+ parts.push(`Fatal: ${stats.fatal}`);
49
+ }
50
+ if (stats.errors > 0) {
51
+ parts.push(`Errors: ${stats.errors}`);
52
+ }
53
+ if (stats.warnings > 0) {
54
+ parts.push(`Warnings: ${stats.warnings}`);
55
+ }
56
+ return parts.join(', ');
57
+ }
58
+ /**
59
+ * Generate a categorized summary with actionable commands.
60
+ */
61
+ categorizedSummary() {
62
+ const stats = this.getCategorizedStats();
63
+ if (stats.total === 0) {
64
+ return 'No issues found.';
65
+ }
66
+ const lines = [];
67
+ // Severity totals (same format as summary())
68
+ const severityParts = [];
69
+ if (stats.fatal > 0) {
70
+ severityParts.push(`Fatal: ${stats.fatal}`);
71
+ }
72
+ if (stats.errors > 0) {
73
+ severityParts.push(`Errors: ${stats.errors}`);
74
+ }
75
+ if (stats.warnings > 0) {
76
+ severityParts.push(`Warnings: ${stats.warnings}`);
77
+ }
78
+ lines.push(severityParts.join(', '));
79
+ // Top 5 categories
80
+ const topCategories = stats.byCode.slice(0, 5);
81
+ for (const category of topCategories) {
82
+ lines.push(` - ${category.count} ${category.name} (run \`${category.checkCommand}\`)`);
83
+ }
84
+ // "Other issues" if more than 5 categories
85
+ if (stats.byCode.length > 5) {
86
+ const remainingCount = stats.byCode.slice(5).reduce((sum, cat) => sum + cat.count, 0);
87
+ const issueWord = remainingCount === 1 ? 'other issue' : 'other issues';
88
+ lines.push(` - ${remainingCount} ${issueWord}`);
89
+ }
90
+ // Footer
91
+ lines.push('');
92
+ lines.push('Run `grafema check --all` for full diagnostics.');
93
+ return lines.join('\n');
94
+ }
95
+ /**
96
+ * Get diagnostic statistics by severity.
97
+ */
98
+ getStats() {
99
+ const diagnostics = this.collector.getAll();
100
+ return {
101
+ total: diagnostics.length,
102
+ fatal: diagnostics.filter(d => d.severity === 'fatal').length,
103
+ errors: diagnostics.filter(d => d.severity === 'error').length,
104
+ warnings: diagnostics.filter(d => d.severity === 'warning').length,
105
+ info: diagnostics.filter(d => d.severity === 'info').length,
106
+ };
107
+ }
108
+ /**
109
+ * Get diagnostic statistics grouped by category.
110
+ */
111
+ getCategorizedStats() {
112
+ const diagnostics = this.collector.getAll();
113
+ // Get severity stats
114
+ const severityStats = {
115
+ total: diagnostics.length,
116
+ fatal: diagnostics.filter(d => d.severity === 'fatal').length,
117
+ errors: diagnostics.filter(d => d.severity === 'error').length,
118
+ warnings: diagnostics.filter(d => d.severity === 'warning').length,
119
+ info: diagnostics.filter(d => d.severity === 'info').length,
120
+ };
121
+ // Group by code
122
+ const codeMap = new Map();
123
+ for (const diag of diagnostics) {
124
+ const count = codeMap.get(diag.code) || 0;
125
+ codeMap.set(diag.code, count + 1);
126
+ }
127
+ // Convert to CategoryCount array with metadata
128
+ const byCode = [];
129
+ for (const [code, count] of codeMap.entries()) {
130
+ const category = CODE_TO_CATEGORY[code];
131
+ byCode.push({
132
+ code,
133
+ count,
134
+ name: category?.name || code,
135
+ checkCommand: category?.checkCommand || 'grafema check --all',
136
+ });
137
+ }
138
+ // Sort by count descending
139
+ byCode.sort((a, b) => b.count - a.count);
140
+ return {
141
+ ...severityStats,
142
+ byCode,
143
+ };
144
+ }
145
+ /**
146
+ * Format strict mode errors with enhanced context (REG-332).
147
+ * Shows resolution chain and context-aware suggestions.
148
+ *
149
+ * Uses hybrid progressive disclosure:
150
+ * - ≤3 errors: show chain by default
151
+ * - >3 errors: hide chain unless verbose=true
152
+ *
153
+ * @param diagnostics - The fatal diagnostics from strict mode
154
+ * @param options - Formatting options
155
+ * @returns Formatted string for CLI output
156
+ */
157
+ formatStrict(diagnostics, options = {}) {
158
+ const lines = [];
159
+ // Hybrid: show chain for ≤3 errors unless explicitly set
160
+ const showChain = options.verbose ?? diagnostics.length <= 3;
161
+ for (const diag of diagnostics) {
162
+ // Header: CODE file:line
163
+ const location = diag.file
164
+ ? diag.line
165
+ ? `${diag.file}:${diag.line}`
166
+ : diag.file
167
+ : '';
168
+ lines.push(`${diag.code} ${location}`);
169
+ lines.push('');
170
+ // Message
171
+ lines.push(` ${diag.message}`);
172
+ // Resolution chain (if showing and present)
173
+ if (showChain && diag.resolutionChain && diag.resolutionChain.length > 0) {
174
+ lines.push('');
175
+ lines.push(' Resolution chain:');
176
+ for (const step of diag.resolutionChain) {
177
+ const stepLocation = step.file
178
+ ? step.line
179
+ ? ` (${step.file}:${step.line})`
180
+ : ` (${step.file})`
181
+ : '';
182
+ lines.push(` ${step.step} -> ${step.result}${stepLocation}`);
183
+ }
184
+ }
185
+ // Suggestion (if present)
186
+ if (diag.suggestion) {
187
+ lines.push('');
188
+ lines.push(` Suggestion: ${diag.suggestion}`);
189
+ }
190
+ lines.push('');
191
+ lines.push('---');
192
+ lines.push('');
193
+ }
194
+ // Remove trailing separator
195
+ if (lines.length > 0) {
196
+ lines.splice(-3);
197
+ }
198
+ // Add hint about verbose mode if chain hidden
199
+ if (!showChain && diagnostics.some(d => d.resolutionChain && d.resolutionChain.length > 0)) {
200
+ lines.push('');
201
+ lines.push(' Run with --verbose to see resolution chains.');
202
+ }
203
+ // REG-332: Show suppression summary if any errors were suppressed
204
+ if (options.suppressedCount && options.suppressedCount > 0) {
205
+ lines.push('');
206
+ lines.push(` ${options.suppressedCount} error(s) suppressed by grafema-ignore comments.`);
207
+ }
208
+ return lines.join('\n');
209
+ }
210
+ /**
211
+ * Generate human-readable text report.
212
+ */
213
+ textReport(diagnostics, options) {
214
+ if (diagnostics.length === 0) {
215
+ return 'No issues found.';
216
+ }
217
+ const lines = [];
218
+ for (const diag of diagnostics) {
219
+ const icon = this.getSeverityIcon(diag.severity);
220
+ const location = this.formatLocation(diag);
221
+ lines.push(`${icon} ${diag.code} ${location} ${diag.message}`);
222
+ if (diag.suggestion) {
223
+ lines.push(` Suggestion: ${diag.suggestion}`);
224
+ }
225
+ }
226
+ if (options.includeSummary) {
227
+ lines.push('');
228
+ lines.push(this.summary());
229
+ }
230
+ return lines.join('\n');
231
+ }
232
+ /**
233
+ * Generate JSON report.
234
+ */
235
+ jsonReport(diagnostics, options) {
236
+ const result = {
237
+ diagnostics,
238
+ };
239
+ if (options.includeSummary) {
240
+ result.summary = this.getStats();
241
+ }
242
+ return JSON.stringify(result, null, 2);
243
+ }
244
+ /**
245
+ * Generate CSV report.
246
+ */
247
+ csvReport(diagnostics) {
248
+ const header = 'severity,code,file,line,message,plugin,phase,suggestion';
249
+ const rows = diagnostics.map(d => [
250
+ d.severity,
251
+ d.code,
252
+ d.file || '',
253
+ d.line || '',
254
+ this.csvEscape(d.message),
255
+ d.plugin,
256
+ d.phase,
257
+ d.suggestion ? this.csvEscape(d.suggestion) : '',
258
+ ].join(','));
259
+ return [header, ...rows].join('\n');
260
+ }
261
+ /**
262
+ * Get severity indicator for text output.
263
+ */
264
+ getSeverityIcon(severity) {
265
+ switch (severity) {
266
+ case 'fatal':
267
+ return '[FATAL]';
268
+ case 'error':
269
+ return '[ERROR]';
270
+ case 'warning':
271
+ return '[WARN]';
272
+ case 'info':
273
+ return '[INFO]';
274
+ default:
275
+ return '[?]';
276
+ }
277
+ }
278
+ /**
279
+ * Format file location for display.
280
+ */
281
+ formatLocation(diag) {
282
+ if (!diag.file) {
283
+ return '';
284
+ }
285
+ if (diag.line) {
286
+ return `(${diag.file}:${diag.line})`;
287
+ }
288
+ return `(${diag.file})`;
289
+ }
290
+ /**
291
+ * Escape a value for CSV output.
292
+ * Wraps in quotes and escapes internal quotes.
293
+ */
294
+ csvEscape(value) {
295
+ // Always quote to handle commas and special characters
296
+ const escaped = value.replace(/"/g, '""');
297
+ return `"${escaped}"`;
298
+ }
299
+ }
300
+ //# sourceMappingURL=DiagnosticReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticReporter.js","sourceRoot":"","sources":["../../src/diagnostics/DiagnosticReporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAiDnD;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,SAA8B;QAA9B,cAAS,GAAT,SAAS,CAAqB;IAAG,CAAC;IAEtD;;OAEG;IACH,MAAM,CAAC,OAAsB;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAE5C,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9B,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEzC,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,6CAA6C;QAC7C,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,aAAa,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACvB,aAAa,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAErC,mBAAmB;QACnB,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,WAAW,QAAQ,CAAC,YAAY,KAAK,CAAC,CAAC;QAC1F,CAAC;QAED,2CAA2C;QAC3C,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtF,MAAM,SAAS,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC;YACxE,KAAK,CAAC,IAAI,CAAC,OAAO,cAAc,IAAI,SAAS,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,SAAS;QACT,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAE9D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO;YACL,KAAK,EAAE,WAAW,CAAC,MAAM;YACzB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM;YAC7D,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM;YAC9D,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM;YAClE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;SAC5D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAE5C,qBAAqB;QACrB,MAAM,aAAa,GAAiB;YAClC,KAAK,EAAE,WAAW,CAAC,MAAM;YACzB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM;YAC7D,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM;YAC9D,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM;YAClE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;SAC5D,CAAC;QAEF,gBAAgB;QAChB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;QAED,+CAA+C;QAC/C,MAAM,MAAM,GAAoB,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI;gBACJ,KAAK;gBACL,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,IAAI;gBAC5B,YAAY,EAAE,QAAQ,EAAE,YAAY,IAAI,qBAAqB;aAC9D,CAAC,CAAC;QACL,CAAC;QAED,2BAA2B;QAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzC,OAAO;YACL,GAAG,aAAa;YAChB,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,WAAyB,EAAE,UAA+B,EAAE;QACvE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,yDAAyD;QACzD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC;QAE7D,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,yBAAyB;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;gBACxB,CAAC,CAAC,IAAI,CAAC,IAAI;oBACT,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;oBAC7B,CAAC,CAAC,IAAI,CAAC,IAAI;gBACb,CAAC,CAAC,EAAE,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEf,UAAU;YACV,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAEhC,4CAA4C;YAC5C,IAAI,SAAS,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAClC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBACxC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI;wBAC5B,CAAC,CAAC,IAAI,CAAC,IAAI;4BACT,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG;4BAChC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG;wBACrB,CAAC,CAAC,EAAE,CAAC;oBACP,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAED,0BAA0B;YAC1B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,4BAA4B;QAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YAC3F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC/D,CAAC;QAED,kEAAkE;QAClE,IAAI,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,eAAe,kDAAkD,CAAC,CAAC;QAC7F,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,WAAyB,EAAE,OAAsB;QAClE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAE3C,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAE/D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,WAAyB,EAAE,OAAsB;QAClE,MAAM,MAAM,GAGR;YACF,WAAW;SACZ,CAAC;QAEF,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,WAAyB;QACzC,MAAM,MAAM,GAAG,yDAAyD,CAAC;QACzE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC/B;YACE,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,IAAI,EAAE;YACZ,CAAC,CAAC,IAAI,IAAI,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACzB,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;SACjD,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;QACF,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,QAAgC;QACtD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,OAAO;gBACV,OAAO,SAAS,CAAC;YACnB,KAAK,OAAO;gBACV,OAAO,SAAS,CAAC;YACnB,KAAK,SAAS;gBACZ,OAAO,QAAQ,CAAC;YAClB,KAAK,MAAM;gBACT,OAAO,QAAQ,CAAC;YAClB;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAgB;QACrC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACK,SAAS,CAAC,KAAa;QAC7B,uDAAuD;QACvD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,OAAO,IAAI,OAAO,GAAG,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * DiagnosticWriter - Writes diagnostics to .grafema/diagnostics.log
3
+ *
4
+ * Writes diagnostics in JSON lines format (one JSON object per line).
5
+ * This format is:
6
+ * - Easy to parse line-by-line
7
+ * - Appendable without reading entire file
8
+ * - Compatible with streaming tools (grep, jq, etc.)
9
+ *
10
+ * Usage:
11
+ * const writer = new DiagnosticWriter();
12
+ * await writer.write(collector, '/project/.grafema');
13
+ */
14
+ import type { DiagnosticCollector } from './DiagnosticCollector.js';
15
+ /**
16
+ * DiagnosticWriter - writes diagnostics.log file
17
+ */
18
+ export declare class DiagnosticWriter {
19
+ /**
20
+ * Write all diagnostics to .grafema/diagnostics.log
21
+ *
22
+ * Creates the directory if it doesn't exist.
23
+ * Overwrites existing file.
24
+ */
25
+ write(collector: DiagnosticCollector, grafemaDir: string): Promise<void>;
26
+ /**
27
+ * Get the path to the diagnostics.log file
28
+ */
29
+ getLogPath(grafemaDir: string): string;
30
+ }
31
+ //# sourceMappingURL=DiagnosticWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticWriter.d.ts","sourceRoot":"","sources":["../../src/diagnostics/DiagnosticWriter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;;;OAKG;IACG,KAAK,CAAC,SAAS,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9E;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;CAGvC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * DiagnosticWriter - Writes diagnostics to .grafema/diagnostics.log
3
+ *
4
+ * Writes diagnostics in JSON lines format (one JSON object per line).
5
+ * This format is:
6
+ * - Easy to parse line-by-line
7
+ * - Appendable without reading entire file
8
+ * - Compatible with streaming tools (grep, jq, etc.)
9
+ *
10
+ * Usage:
11
+ * const writer = new DiagnosticWriter();
12
+ * await writer.write(collector, '/project/.grafema');
13
+ */
14
+ import { writeFileSync, existsSync, mkdirSync } from 'fs';
15
+ import { join, dirname } from 'path';
16
+ /**
17
+ * DiagnosticWriter - writes diagnostics.log file
18
+ */
19
+ export class DiagnosticWriter {
20
+ /**
21
+ * Write all diagnostics to .grafema/diagnostics.log
22
+ *
23
+ * Creates the directory if it doesn't exist.
24
+ * Overwrites existing file.
25
+ */
26
+ async write(collector, grafemaDir) {
27
+ const logPath = this.getLogPath(grafemaDir);
28
+ // Create directory if it doesn't exist
29
+ const dir = dirname(logPath);
30
+ if (!existsSync(dir)) {
31
+ mkdirSync(dir, { recursive: true });
32
+ }
33
+ // Write diagnostics as JSON lines
34
+ const content = collector.toDiagnosticsLog();
35
+ writeFileSync(logPath, content, 'utf-8');
36
+ }
37
+ /**
38
+ * Get the path to the diagnostics.log file
39
+ */
40
+ getLogPath(grafemaDir) {
41
+ return join(grafemaDir, 'diagnostics.log');
42
+ }
43
+ }
44
+ //# sourceMappingURL=DiagnosticWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticWriter.js","sourceRoot":"","sources":["../../src/diagnostics/DiagnosticWriter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIrC;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,SAA8B,EAAE,UAAkB;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE5C,uCAAuC;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,kCAAkC;QAClC,MAAM,OAAO,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAC7C,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,UAAkB;QAC3B,OAAO,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAC7C,CAAC;CACF"}