@noyrax/documentation-system-plugin 1.0.4-beta.3 → 1.0.4-beta.5

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 (197) hide show
  1. package/out/cache/ast-cache.js +69 -0
  2. package/out/cache/ast-cache.js.map +1 -0
  3. package/out/cache/dependencies-cache.js +73 -0
  4. package/out/cache/dependencies-cache.js.map +1 -0
  5. package/out/cache/output-cache.js +69 -0
  6. package/out/cache/output-cache.js.map +1 -0
  7. package/out/cache/signature-cache.js +60 -0
  8. package/out/cache/signature-cache.js.map +1 -0
  9. package/out/cli/generate-cli.js +345 -0
  10. package/out/cli/generate-cli.js.map +1 -0
  11. package/out/cli/scan-cli.js +157 -0
  12. package/out/cli/scan-cli.js.map +1 -0
  13. package/out/cli/validate-cli.js +258 -0
  14. package/out/cli/validate-cli.js.map +1 -0
  15. package/out/core/async.js +38 -0
  16. package/out/core/async.js.map +1 -0
  17. package/out/core/consolidation.js +230 -0
  18. package/out/core/consolidation.js.map +1 -0
  19. package/out/core/git.js +48 -0
  20. package/out/core/git.js.map +1 -0
  21. package/out/core/language-detection.js +29 -0
  22. package/out/core/language-detection.js.map +1 -0
  23. package/out/core/scanner.js +180 -0
  24. package/out/core/scanner.js.map +1 -0
  25. package/out/core/signature-formatter.js +162 -0
  26. package/out/core/signature-formatter.js.map +1 -0
  27. package/out/core/symbol-classifier.js +96 -0
  28. package/out/core/symbol-classifier.js.map +1 -0
  29. package/out/core/symbols.js +24 -0
  30. package/out/core/symbols.js.map +1 -0
  31. package/out/drift/index.js +28 -0
  32. package/out/drift/index.js.map +1 -0
  33. package/out/extension.js +984 -0
  34. package/out/extension.js.map +1 -0
  35. package/out/generator/adr-linker.js +216 -0
  36. package/out/generator/adr-linker.js.map +1 -0
  37. package/out/generator/change-report.js +124 -0
  38. package/out/generator/change-report.js.map +1 -0
  39. package/out/generator/dependency-graph.js +98 -0
  40. package/out/generator/dependency-graph.js.map +1 -0
  41. package/out/generator/index.js +117 -0
  42. package/out/generator/index.js.map +1 -0
  43. package/out/generator/module-doc.js +438 -0
  44. package/out/generator/module-doc.js.map +1 -0
  45. package/out/generator/system-metadata.js +202 -0
  46. package/out/generator/system-metadata.js.map +1 -0
  47. package/out/index/index.js +161 -0
  48. package/out/index/index.js.map +1 -0
  49. package/out/logging/index.js +24 -0
  50. package/out/logging/index.js.map +1 -0
  51. package/out/parsers/dependencies.js +126 -0
  52. package/out/parsers/dependencies.js.map +1 -0
  53. package/out/parsers/json-yaml.js +121 -0
  54. package/out/parsers/json-yaml.js.map +1 -0
  55. package/out/parsers/python.js +160 -0
  56. package/out/parsers/python.js.map +1 -0
  57. package/out/parsers/ts-js.js +598 -0
  58. package/out/parsers/ts-js.js.map +1 -0
  59. package/out/parsers/types.js +3 -0
  60. package/out/parsers/types.js.map +1 -0
  61. package/out/ui/commands-provider.js +91 -0
  62. package/out/ui/commands-provider.js.map +1 -0
  63. package/out/ui/status-bar.js +85 -0
  64. package/out/ui/status-bar.js.map +1 -0
  65. package/out/validator/index.js +185 -0
  66. package/out/validator/index.js.map +1 -0
  67. package/out/validator/signature-matching.js +261 -0
  68. package/out/validator/signature-matching.js.map +1 -0
  69. package/out/validator/status.js +38 -0
  70. package/out/validator/status.js.map +1 -0
  71. package/package.json +9 -1
  72. package/.vscodeignore +0 -41
  73. package/MCP_SERVER_SETUP.md +0 -371
  74. package/assets/icon.svg +0 -27
  75. package/docs/LINKEDIN_ANTWORT_SEQUENZDIAGRAMME.md +0 -190
  76. package/docs/SEQUENZDIAGRAMM_BEWEIS.md +0 -469
  77. package/docs/SEQUENZDIAGRAMM_VALIDATE_FLOW.md +0 -282
  78. package/docs/adr/001-signatur-abweichung-fix.md +0 -54
  79. package/docs/adr/002-file-specific-validation-1.0.1.md +0 -45
  80. package/docs/adr/003-documentation-generation-bugs.md +0 -134
  81. package/docs/adr/004-validator-signature-matching-fix.md +0 -121
  82. package/docs/adr/005-validator-generic-simplification-tightening.md +0 -35
  83. package/docs/adr/006-parser-variable-type-extraction.md +0 -33
  84. package/docs/adr/007-ts-parser-load-libs-for-accurate-types.md +0 -31
  85. package/docs/adr/008-dependencies-cache-phase1.md +0 -133
  86. package/docs/adr/009-consolidation-union-logic-phase1-2.md +0 -147
  87. package/docs/adr/010-extension-union-integration-phase1-3-and-phase2.md +0 -179
  88. package/docs/adr/011-module-doc-change-tracking-phase3.md +0 -190
  89. package/docs/adr/012-git-deletions-change-report-phase4.md +0 -235
  90. package/docs/adr/013-system-functionality-fixes.md +0 -279
  91. package/docs/adr/014-rules-migration-und-mcp-integration.md +0 -113
  92. package/docs/adr/015-global-agent-package.md +0 -158
  93. package/docs/adr/016-produktisierung-docguard.md +0 -193
  94. package/docs/adr/017-signature-matching-optional-fields.md +0 -128
  95. package/docs/adr/018-rebranding-docguard-to-noyrax.md +0 -109
  96. package/docs/adr/019-system-schwachstellen-analyse-und-fixes.md +0 -204
  97. package/docs/adr/020-api-doc-tiefe-und-signatureformatter.md +0 -74
  98. package/docs/adr/021-semantic-api-docs-and-symbol-classifier.md +0 -125
  99. package/docs/adr/022-semantic-class-and-constants-rendering.md +0 -82
  100. package/docs/adr/023-adr-verknuepfung-modul-doku.md +0 -54
  101. package/docs/adr/024-cursor-rules-mehrdimensionaler-raum.md +0 -230
  102. package/docs/adr/025-mcp-tools-scan-validate-cli-bridge.md +0 -202
  103. package/docs/adr/026-reality-driven-development-system.md +0 -173
  104. package/docs/adr/027-scanner-excludes-and-union-logic-fix.md +0 -189
  105. package/docs/adr/028-src-coverage-union-resync.md +0 -124
  106. package/docs/adr/029-parser-flow-kopplung-und-sync-drift-modi.md +0 -102
  107. package/docs/adr/030-dependency-import-symbol-names-preservation.md +0 -123
  108. package/docs/adr/031-generate-cli-vollstaendige-dokumentation.md +0 -99
  109. package/docs/adr/032-windows-optimized-verification-scripts.md +0 -165
  110. package/docs/adr/036-enhanced-dependency-metadata.md +0 -190
  111. package/docs/adr/TEMPLATE.md +0 -76
  112. package/docs/index/symbols.jsonl +0 -78
  113. package/docs/modules/action__action.yml.md +0 -50
  114. package/docs/modules/documentation.config.schema.json.md +0 -37
  115. package/docs/modules/mcp__package.json.md +0 -130
  116. package/docs/modules/mcp__src__resources__docs.ts.md +0 -94
  117. package/docs/modules/mcp__src__server.ts.md +0 -15
  118. package/docs/modules/mcp__src__tools__drift.ts.md +0 -114
  119. package/docs/modules/mcp__src__tools__impact.ts.md +0 -130
  120. package/docs/modules/mcp__src__tools__scan.ts.md +0 -75
  121. package/docs/modules/mcp__src__tools__validate.ts.md +0 -116
  122. package/docs/modules/mcp__src__tools__verify-adrs.ts.md +0 -106
  123. package/docs/modules/mcp__tsconfig.json.md +0 -22
  124. package/docs/modules/package.json.md +0 -130
  125. package/docs/modules/packages__doc-system-agent__examples__basic-project__package.json.md +0 -43
  126. package/docs/modules/packages__doc-system-agent__examples__basic-project__src__calculator.ts.md +0 -81
  127. package/docs/modules/packages__doc-system-agent__package.json.md +0 -154
  128. package/docs/modules/packages__doc-system-agent__src__cli__index.ts.md +0 -8
  129. package/docs/modules/packages__doc-system-agent__src__cli__init.ts.md +0 -93
  130. package/docs/modules/packages__doc-system-agent__src__cli__update.ts.md +0 -113
  131. package/docs/modules/packages__doc-system-agent__src__constants.ts.md +0 -29
  132. package/docs/modules/packages__doc-system-agent__src__index.ts.md +0 -234
  133. package/docs/modules/packages__doc-system-agent__src__mcp__resources__docs.ts.md +0 -94
  134. package/docs/modules/packages__doc-system-agent__src__mcp__server.ts.md +0 -17
  135. package/docs/modules/packages__doc-system-agent__src__mcp__tools__drift.ts.md +0 -38
  136. package/docs/modules/packages__doc-system-agent__src__mcp__tools__impact.ts.md +0 -75
  137. package/docs/modules/packages__doc-system-agent__src__mcp__tools__scan.ts.md +0 -23
  138. package/docs/modules/packages__doc-system-agent__src__mcp__tools__validate.ts.md +0 -23
  139. package/docs/modules/packages__doc-system-agent__src__mcp__tools__verify-adrs.ts.md +0 -106
  140. package/docs/modules/packages__doc-system-agent__src__mcp__types.ts.md +0 -355
  141. package/docs/modules/packages__doc-system-agent__tsconfig.json.md +0 -22
  142. package/docs/modules/scripts__verify-adrs.js.md +0 -97
  143. package/docs/modules/scripts__verify-architecture.js.md +0 -93
  144. package/docs/modules/scripts__verify-imports.js.md +0 -114
  145. package/docs/modules/src____tests____setup.ts.md +0 -8
  146. package/docs/modules/src____tests____signature-formatter.test.ts.md +0 -16
  147. package/docs/modules/src____tests____snapshot-doc-generation.test.ts.md +0 -8
  148. package/docs/modules/src____tests____symbol-classifier.test.ts.md +0 -16
  149. package/docs/modules/src__cache__ast-cache.ts.md +0 -91
  150. package/docs/modules/src__cache__dependencies-cache.ts.md +0 -89
  151. package/docs/modules/src__cache__output-cache.ts.md +0 -91
  152. package/docs/modules/src__cache__signature-cache.ts.md +0 -76
  153. package/docs/modules/src__cli__generate-cli.ts.md +0 -130
  154. package/docs/modules/src__cli__scan-cli.ts.md +0 -99
  155. package/docs/modules/src__cli__validate-cli.ts.md +0 -144
  156. package/docs/modules/src__core__async.ts.md +0 -18
  157. package/docs/modules/src__core__consolidation.ts.md +0 -157
  158. package/docs/modules/src__core__git.ts.md +0 -35
  159. package/docs/modules/src__core__language-detection.ts.md +0 -31
  160. package/docs/modules/src__core__scanner.ts.md +0 -100
  161. package/docs/modules/src__core__signature-formatter.ts.md +0 -232
  162. package/docs/modules/src__core__symbol-classifier.ts.md +0 -178
  163. package/docs/modules/src__core__symbols.ts.md +0 -31
  164. package/docs/modules/src__drift__index.ts.md +0 -53
  165. package/docs/modules/src__extension.ts.md +0 -418
  166. package/docs/modules/src__generator__adr-linker.ts.md +0 -154
  167. package/docs/modules/src__generator__change-report.ts.md +0 -85
  168. package/docs/modules/src__generator__dependency-graph.ts.md +0 -63
  169. package/docs/modules/src__generator__index.ts.md +0 -40
  170. package/docs/modules/src__generator__module-doc.ts.md +0 -242
  171. package/docs/modules/src__index__index.ts.md +0 -159
  172. package/docs/modules/src__logging__index.ts.md +0 -87
  173. package/docs/modules/src__parsers__dependencies.ts.md +0 -69
  174. package/docs/modules/src__parsers__json-yaml.ts.md +0 -96
  175. package/docs/modules/src__parsers__python.ts.md +0 -73
  176. package/docs/modules/src__parsers__ts-js.ts.md +0 -48
  177. package/docs/modules/src__parsers__types.ts.md +0 -117
  178. package/docs/modules/src__ui__commands-provider.ts.md +0 -70
  179. package/docs/modules/src__ui__status-bar.ts.md +0 -79
  180. package/docs/modules/src__validator__index.ts.md +0 -211
  181. package/docs/modules/src__validator__signature-matching.ts.md +0 -209
  182. package/docs/modules/src__validator__status.ts.md +0 -72
  183. package/docs/modules/test-mcp-resources.js.md +0 -27
  184. package/docs/modules/tsconfig.json.md +0 -22
  185. package/docs/system/CHANGE_REPORT.md +0 -26
  186. package/docs/system/DEPENDENCIES.md +0 -403
  187. package/docs/system/DEPENDENCY_GRAPH.md +0 -336
  188. package/docs/system/NAVIGATION_SPACE_ANALYSIS.md +0 -244
  189. package/docs/system/NPX_CACHE_FIX.md +0 -85
  190. package/docs/system/NPX_LOCAL_USAGE.md +0 -66
  191. package/docs/system/PLUGIN_ECOSYSTEM_STATUS.md +0 -465
  192. package/docs/system/PLUGIN_UPDATE_GUIDE.md +0 -212
  193. package/docs/system/RULES_UPDATE_GUIDE.md +0 -182
  194. package/docs/system/SYSTEM_ANALYSIS.md +0 -947
  195. package/docs/system/SYSTEM_METADATA.json +0 -37
  196. package/documentation.config.schema.json +0 -77
  197. package/publish.ps1 +0 -21
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildSymbolsUnion = exports.buildDependenciesUnionWithDebug = exports.buildDependenciesUnion = void 0;
4
+ const symbols_1 = require("./symbols");
5
+ function buildDependenciesUnion(dependenciesNew, dependenciesCachePrev, parsedFiles, deletedFiles) {
6
+ const depMapPrev = buildPreviousDependenciesMap(dependenciesCachePrev);
7
+ const { union, debug } = buildUnionMap(dependenciesNew, depMapPrev, parsedFiles, deletedFiles);
8
+ // Setze Debug-Info auf globalThis (für Logging in extension.ts)
9
+ try {
10
+ globalThis.__unionDebug = debug;
11
+ }
12
+ catch (e) {
13
+ // Fallback: ignoriere Fehler
14
+ }
15
+ return deduplicateAndSortDependencies(union);
16
+ }
17
+ exports.buildDependenciesUnion = buildDependenciesUnion;
18
+ function buildDependenciesUnionWithDebug(dependenciesNew, dependenciesCachePrev, parsedFiles, deletedFiles) {
19
+ const depMapPrev = buildPreviousDependenciesMap(dependenciesCachePrev);
20
+ const { union, debug } = buildUnionMap(dependenciesNew, depMapPrev, parsedFiles, deletedFiles);
21
+ return {
22
+ dependencies: deduplicateAndSortDependencies(union),
23
+ debug
24
+ };
25
+ }
26
+ exports.buildDependenciesUnionWithDebug = buildDependenciesUnionWithDebug;
27
+ /**
28
+ * @private
29
+ * Build map from previous cache entries
30
+ */
31
+ function buildPreviousDependenciesMap(entries) {
32
+ const depMapPrev = new Map();
33
+ for (const entry of entries) {
34
+ if (!depMapPrev.has(entry.from))
35
+ depMapPrev.set(entry.from, []);
36
+ depMapPrev.get(entry.from).push(entry);
37
+ }
38
+ return depMapPrev;
39
+ }
40
+ /**
41
+ * @private
42
+ * Build union map from new dependencies and previous cache
43
+ */
44
+ function buildUnionMap(dependenciesNew, depMapPrev, parsedFiles, deletedFiles) {
45
+ const depMapUnion = new Map();
46
+ // 1. For all parsed files: take new dependencies
47
+ for (const dep of dependenciesNew) {
48
+ if (!depMapUnion.has(dep.from))
49
+ depMapUnion.set(dep.from, []);
50
+ depMapUnion.get(dep.from).push({
51
+ from: dep.from,
52
+ to: dep.to,
53
+ type: dep.type,
54
+ symbols: dep.symbols && dep.symbols.length > 0 ? dep.symbols : undefined,
55
+ isTypeOnly: dep.isTypeOnly,
56
+ isReexport: dep.isReexport,
57
+ });
58
+ }
59
+ // 2. For unparsed, non-deleted files: keep old dependencies
60
+ let keptFromUnparsed = 0;
61
+ let skippedFromParsed = 0;
62
+ let skippedFromDeleted = 0;
63
+ const debugFiles = [];
64
+ for (const [from, deps] of depMapPrev.entries()) {
65
+ if (parsedFiles.has(from)) {
66
+ skippedFromParsed += deps.length;
67
+ if (debugFiles.length < 5)
68
+ debugFiles.push(`parsed: ${from} (${deps.length} deps)`);
69
+ }
70
+ else if (deletedFiles.has(from)) {
71
+ skippedFromDeleted += deps.length;
72
+ if (debugFiles.length < 5)
73
+ debugFiles.push(`deleted: ${from} (${deps.length} deps)`);
74
+ }
75
+ else {
76
+ if (!depMapUnion.has(from))
77
+ depMapUnion.set(from, []);
78
+ depMapUnion.get(from).push(...deps);
79
+ keptFromUnparsed += deps.length;
80
+ if (debugFiles.length < 5)
81
+ debugFiles.push(`kept: ${from} (${deps.length} deps)`);
82
+ }
83
+ }
84
+ const debugInfo = {
85
+ keptFromUnparsed,
86
+ skippedFromParsed,
87
+ skippedFromDeleted,
88
+ newDeps: dependenciesNew.length
89
+ };
90
+ // Debug-Logging direkt hier (für sofortige Sichtbarkeit)
91
+ if (typeof console !== 'undefined' && console.log) {
92
+ console.log('[buildUnionMap]', {
93
+ parsedFilesCount: parsedFiles.size,
94
+ deletedFilesCount: deletedFiles.size,
95
+ prevDepsCount: Array.from(depMapPrev.values()).reduce((sum, deps) => sum + deps.length, 0),
96
+ newDepsCount: dependenciesNew.length,
97
+ debugInfo,
98
+ sampleFiles: debugFiles.slice(0, 3)
99
+ });
100
+ }
101
+ return {
102
+ union: depMapUnion,
103
+ debug: debugInfo
104
+ };
105
+ }
106
+ /**
107
+ * @public
108
+ * Build symbols union from new symbols and previous index
109
+ *
110
+ * Algorithm (ADDITIVE_DOCUMENTATION_PLAN.md, Section 6.3):
111
+ * 1. For parsed files: use new symbols
112
+ * 2. For unparsed, non-deleted files: keep old symbols from index
113
+ *
114
+ * IMPORTANT: Only keeps symbols from files that were scanned in the current run.
115
+ * Files that are no longer scanned (e.g., excluded directories) are treated as deleted.
116
+ */
117
+ function buildSymbolsUnion(symbolsNew, symbolsPrev, parsedFiles, deletedFiles, scannedFiles // Optional: files that were scanned in this run
118
+ ) {
119
+ // Build map from previous symbols
120
+ const symbolMapPrev = new Map();
121
+ for (const sym of symbolsPrev) {
122
+ const key = (0, symbols_1.makeStableSymbolId)(sym);
123
+ symbolMapPrev.set(key, sym);
124
+ }
125
+ // Union map
126
+ const symbolMapUnion = new Map();
127
+ // 1. For all parsed files: take new symbols
128
+ for (const sym of symbolsNew) {
129
+ const key = (0, symbols_1.makeStableSymbolId)(sym);
130
+ symbolMapUnion.set(key, sym);
131
+ }
132
+ // 2. For unparsed, non-deleted files: keep old symbols
133
+ // IMPORTANT: Only keep symbols from files that were scanned in this run
134
+ // This ensures that files excluded from scanning (e.g., demo/, website/) are removed
135
+ for (const [key, sym] of symbolMapPrev.entries()) {
136
+ // Skip if file was parsed (new symbols already added above)
137
+ if (parsedFiles.has(sym.filePath))
138
+ continue;
139
+ // Skip if file was deleted
140
+ if (deletedFiles.has(sym.filePath))
141
+ continue;
142
+ // Skip if file was not scanned in this run (excluded directories)
143
+ if (scannedFiles && !scannedFiles.has(sym.filePath))
144
+ continue;
145
+ // Keep old symbol
146
+ if (!symbolMapUnion.has(key)) {
147
+ symbolMapUnion.set(key, sym);
148
+ }
149
+ }
150
+ return Array.from(symbolMapUnion.values());
151
+ }
152
+ exports.buildSymbolsUnion = buildSymbolsUnion;
153
+ /**
154
+ * @private
155
+ * Deduplicate and sort dependencies
156
+ *
157
+ * Key: (from, to, type) - symbols, isTypeOnly, isReexport werden gemerged
158
+ * Sort: from asc → to asc → type asc → symbols asc
159
+ */
160
+ function deduplicateAndSortDependencies(depMap) {
161
+ const allDeps = [];
162
+ for (const deps of depMap.values()) {
163
+ allDeps.push(...deps);
164
+ }
165
+ // Deduplicate and merge by (from, to, type)
166
+ const uniqueMap = new Map();
167
+ for (const dep of allDeps) {
168
+ const key = `${dep.from}::${dep.to}::${dep.type}`;
169
+ const existing = uniqueMap.get(key);
170
+ if (existing) {
171
+ // Merge symbols
172
+ if (dep.symbols && dep.symbols.length > 0) {
173
+ existing.symbols = existing.symbols ?? [];
174
+ existing.symbols.push(...dep.symbols);
175
+ }
176
+ // isTypeOnly bleibt nur true, wenn ALLE Einträge type-only sind
177
+ if (!dep.isTypeOnly) {
178
+ existing.isTypeOnly = false;
179
+ }
180
+ // isReexport wird true, wenn mindestens ein Eintrag ein Re-Export ist
181
+ if (dep.isReexport) {
182
+ existing.isReexport = true;
183
+ }
184
+ }
185
+ else {
186
+ uniqueMap.set(key, {
187
+ from: dep.from,
188
+ to: dep.to,
189
+ type: dep.type,
190
+ symbols: dep.symbols ? [...dep.symbols] : undefined,
191
+ isTypeOnly: dep.isTypeOnly,
192
+ isReexport: dep.isReexport,
193
+ });
194
+ }
195
+ }
196
+ // Finalize: deduplicate and sort symbols, remove undefined flags
197
+ const finalized = [];
198
+ for (const dep of uniqueMap.values()) {
199
+ const entry = {
200
+ from: dep.from,
201
+ to: dep.to,
202
+ type: dep.type,
203
+ };
204
+ if (dep.symbols && dep.symbols.length > 0) {
205
+ entry.symbols = Array.from(new Set(dep.symbols)).sort((a, b) => a.localeCompare(b));
206
+ }
207
+ // Nur hinzufügen wenn true (spart Platz im JSON)
208
+ if (dep.isTypeOnly) {
209
+ entry.isTypeOnly = true;
210
+ }
211
+ if (dep.isReexport) {
212
+ entry.isReexport = true;
213
+ }
214
+ finalized.push(entry);
215
+ }
216
+ // Sort
217
+ const sorted = finalized.sort((a, b) => {
218
+ if (a.from !== b.from)
219
+ return a.from.localeCompare(b.from);
220
+ if (a.to !== b.to)
221
+ return a.to.localeCompare(b.to);
222
+ if (a.type !== b.type)
223
+ return a.type.localeCompare(b.type);
224
+ const aSymbols = (a.symbols || []).join(',');
225
+ const bSymbols = (b.symbols || []).join(',');
226
+ return aSymbols.localeCompare(bSymbols);
227
+ });
228
+ return sorted;
229
+ }
230
+ //# sourceMappingURL=consolidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidation.js","sourceRoot":"","sources":["../../src/core/consolidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDeletedFiles = exports.getChangedFiles = void 0;
4
+ const child_process_1 = require("child_process");
5
+ /**
6
+ * @public
7
+ * Get changed files from git diff
8
+ */
9
+ function getChangedFiles(repoRoot) {
10
+ try {
11
+ const res = (0, child_process_1.spawnSync)('git', ['diff', '--name-only'], { cwd: repoRoot, encoding: 'utf8' });
12
+ if (res.status !== 0)
13
+ return null;
14
+ const files = res.stdout.split(/\r?\n/).filter(Boolean).map(s => s.replace(/\\/g, '/'));
15
+ return new Set(files);
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ }
21
+ exports.getChangedFiles = getChangedFiles;
22
+ /**
23
+ * @public
24
+ * Get deleted files from git status
25
+ */
26
+ function getDeletedFiles(repoRoot) {
27
+ try {
28
+ // Get deleted files from git status
29
+ const res = (0, child_process_1.spawnSync)('git', ['status', '--porcelain'], { cwd: repoRoot, encoding: 'utf8' });
30
+ if (res.status !== 0)
31
+ return null;
32
+ const deleted = [];
33
+ const lines = res.stdout.split(/\r?\n/).filter(Boolean);
34
+ for (const line of lines) {
35
+ // Git status format: " D filename" or "D filename" (deleted)
36
+ if (line.match(/^\s*D\s+/)) {
37
+ const file = line.replace(/^\s*D\s+/, '').replace(/\\/g, '/');
38
+ deleted.push(file);
39
+ }
40
+ }
41
+ return new Set(deleted);
42
+ }
43
+ catch {
44
+ return null;
45
+ }
46
+ }
47
+ exports.getDeletedFiles = getDeletedFiles;
48
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":";;;AAAA,iDAA0C;AAE1C;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC5C,IAAI;QACA,MAAM,GAAG,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3F,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACxF,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;KACzB;IAAC,MAAM;QACJ,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AATD,0CASC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC5C,IAAI;QACA,oCAAoC;QACpC,MAAM,GAAG,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7F,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,8DAA8D;YAC9D,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtB;SACJ;QACD,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;KAC3B;IAAC,MAAM;QACJ,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AAlBD,0CAkBC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.guessLanguageByShebang = exports.normalizeLineEndings = void 0;
4
+ /**
5
+ * @public
6
+ * Normalize line endings to LF
7
+ */
8
+ function normalizeLineEndings(content) {
9
+ return content.replace(/\r\n?/g, '\n');
10
+ }
11
+ exports.normalizeLineEndings = normalizeLineEndings;
12
+ /**
13
+ * @public
14
+ * Guess language from shebang line
15
+ */
16
+ function guessLanguageByShebang(firstLine) {
17
+ if (!firstLine)
18
+ return null;
19
+ if (!firstLine.startsWith('#!'))
20
+ return null;
21
+ const lower = firstLine.toLowerCase();
22
+ if (lower.includes('python'))
23
+ return 'python';
24
+ if (lower.includes('node') || lower.includes('deno'))
25
+ return 'js';
26
+ return null;
27
+ }
28
+ exports.guessLanguageByShebang = guessLanguageByShebang;
29
+ //# sourceMappingURL=language-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-detection.js","sourceRoot":"","sources":["../../src/core/language-detection.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,OAAe;IAChD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAFD,oDAEC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,SAAwB;IAC3D,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,OAAO,IAAI,CAAC;AAChB,CAAC;AAPD,wDAOC"}
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.scanWorkspace = void 0;
30
+ const fs = __importStar(require("node:fs"));
31
+ const path = __importStar(require("node:path"));
32
+ const ignore_1 = __importDefault(require("ignore"));
33
+ const language_detection_1 = require("./language-detection");
34
+ const index_1 = require("../logging/index");
35
+ const DEFAULT_EXCLUDES = new Set([
36
+ 'node_modules',
37
+ '.git', '.svn', '.hg',
38
+ 'dist', 'out', 'build',
39
+ '__pycache__', '.mypy_cache', '.venv', '.cache',
40
+ 'docs',
41
+ 'coverage',
42
+ '.database-plugin',
43
+ '.database',
44
+ '.ai-agent-context',
45
+ '.vscode',
46
+ '.cursor',
47
+ 'vscode-extension',
48
+ 'demo',
49
+ 'website', // Website-Projekt (laut .gitignore)
50
+ ]);
51
+ // Hard-Exclude File Patterns (systemweit verbindlich)
52
+ // Diese Dateien werden NIE gescannt, unabhängig von .gitignore
53
+ const EXCLUDE_FILE_PATTERNS = [
54
+ /\.d\.ts$/,
55
+ /\.schema\.json$/,
56
+ /\.min\.js$/,
57
+ /\.map$/, // Source Maps
58
+ ];
59
+ const BACKUP_DIR_NAMES = new Set(['backup', 'backups', 'archive', 'archives']);
60
+ const BACKUP_FILE_SUFFIXES = ['.bak', '.old', '.tmp', '.swp', '.swo'];
61
+ /**
62
+ * @public
63
+ * Scan workspace for source files
64
+ */
65
+ function scanWorkspace(options, includeBackups = false) {
66
+ const root = path.resolve(options.workspaceRoot);
67
+ const results = [];
68
+ const logger = new index_1.Logger({ component: 'scanner' });
69
+ const ig = (0, ignore_1.default)();
70
+ const gitignorePath = path.join(root, '.gitignore');
71
+ if (fs.existsSync(gitignorePath)) {
72
+ try {
73
+ ig.add(fs.readFileSync(gitignorePath, 'utf8'));
74
+ }
75
+ catch (e) {
76
+ const errorMsg = e instanceof Error ? e.message : String(e);
77
+ logger.warn(`Konnte .gitignore nicht lesen: ${errorMsg}`);
78
+ }
79
+ }
80
+ function isBinaryFile(filePath) {
81
+ try {
82
+ const fd = fs.openSync(filePath, 'r');
83
+ const buffer = Buffer.allocUnsafe(512);
84
+ const bytes = fs.readSync(fd, buffer, 0, 512, 0);
85
+ fs.closeSync(fd);
86
+ for (let i = 0; i < bytes; i++) {
87
+ const charCode = buffer[i];
88
+ if (charCode === 0)
89
+ return true; // NUL byte
90
+ }
91
+ return false;
92
+ }
93
+ catch {
94
+ return false;
95
+ }
96
+ }
97
+ function detectLanguageByExtension(filePath) {
98
+ const ext = path.extname(filePath).toLowerCase();
99
+ switch (ext) {
100
+ case '.ts':
101
+ case '.tsx':
102
+ return 'ts';
103
+ case '.js':
104
+ case '.jsx':
105
+ return 'js';
106
+ case '.json':
107
+ return 'json';
108
+ case '.yaml':
109
+ case '.yml':
110
+ return 'yaml';
111
+ case '.py':
112
+ return 'python';
113
+ case '.md':
114
+ return 'markdown';
115
+ default:
116
+ return null;
117
+ }
118
+ }
119
+ function walk(currentDir) {
120
+ const entries = fs.readdirSync(currentDir, { withFileTypes: true });
121
+ // Deterministische Reihenfolge
122
+ entries.sort((a, b) => a.name.localeCompare(b.name));
123
+ for (const entry of entries) {
124
+ if (entry.name.startsWith('.git'))
125
+ continue;
126
+ if (DEFAULT_EXCLUDES.has(entry.name))
127
+ continue;
128
+ const fullPath = path.join(currentDir, entry.name);
129
+ const repoRel = path.relative(root, fullPath).split(path.sep).join('/');
130
+ // Generierte Dokumentation ausschließen (docs/ Verzeichnis)
131
+ if (repoRel.startsWith('docs/'))
132
+ continue;
133
+ if (ig.ignores(repoRel))
134
+ continue;
135
+ if (entry.isDirectory()) {
136
+ if (!includeBackups && BACKUP_DIR_NAMES.has(entry.name.toLowerCase()))
137
+ continue;
138
+ walk(fullPath);
139
+ }
140
+ else if (entry.isFile()) {
141
+ if (isBinaryFile(fullPath))
142
+ continue;
143
+ // Hard-Exclude File Patterns (systemweit verbindlich)
144
+ if (EXCLUDE_FILE_PATTERNS.some(pattern => pattern.test(entry.name))) {
145
+ continue;
146
+ }
147
+ let language = detectLanguageByExtension(fullPath);
148
+ if (!language) {
149
+ try {
150
+ const fd = fs.openSync(fullPath, 'r');
151
+ const buffer = Buffer.allocUnsafe(128);
152
+ const bytes = fs.readSync(fd, buffer, 0, 128, 0);
153
+ fs.closeSync(fd);
154
+ const firstLine = buffer.slice(0, bytes).toString('utf8').split(/\r?\n/)[0] || '';
155
+ language = (0, language_detection_1.guessLanguageByShebang)(firstLine);
156
+ }
157
+ catch (e) {
158
+ const errorMsg = e instanceof Error ? e.message : String(e);
159
+ logger.warn(`Shebang-Erkennung fehlgeschlagen für ${repoRel}: ${errorMsg}`);
160
+ }
161
+ }
162
+ // Backup- und temporäre Dateien überspringen (außer explizit gewünscht)
163
+ if (!includeBackups) {
164
+ const lower = entry.name.toLowerCase();
165
+ if (BACKUP_FILE_SUFFIXES.some(s => lower.endsWith(s)))
166
+ continue;
167
+ if (repoRel.includes('/backups/') || repoRel.includes('/backup/') || repoRel.includes('/archives/'))
168
+ continue;
169
+ }
170
+ results.push({ absolutePath: fullPath, repositoryRelativePath: repoRel, language });
171
+ }
172
+ }
173
+ }
174
+ walk(root);
175
+ // Endgültig deterministisch sortieren
176
+ results.sort((a, b) => a.repositoryRelativePath.localeCompare(b.repositoryRelativePath));
177
+ return results;
178
+ }
179
+ exports.scanWorkspace = scanWorkspace;
180
+ //# sourceMappingURL=scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/core/scanner.ts"],"names":[],"mappings":"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"}