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

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 +341 -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,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SignatureFormatter = void 0;
4
+ /**
5
+ * @public
6
+ * Zentrale Klasse für konsistente Signatur-Formatierung
7
+ *
8
+ * Diese Klasse stellt sicher, dass Generator und Validator identische
9
+ * Signatur-Darstellungen verwenden. Basierend auf ADR-004 und der
10
+ * Analyse aus agent-pre.plan.md (Abschnitt 2.6).
11
+ */
12
+ class SignatureFormatter {
13
+ /**
14
+ * Formatiert ein Symbol für die Dokumentation
15
+ * Verwendet von: Generator (renderModuleDoc) und Validator (formatSignatureForDoc)
16
+ */
17
+ static formatForDoc(symbol) {
18
+ switch (symbol.kind) {
19
+ case 'interface':
20
+ return SignatureFormatter.formatInterface(symbol);
21
+ case 'class':
22
+ return `class ${symbol.signature.name}`;
23
+ case 'type':
24
+ return `type ${symbol.signature.name}`;
25
+ case 'enum':
26
+ return `enum ${symbol.signature.name}`;
27
+ case 'function':
28
+ case 'method':
29
+ return SignatureFormatter.formatFunctionOrMethod(symbol);
30
+ case 'variable':
31
+ return SignatureFormatter.formatVariable(symbol);
32
+ case 'module':
33
+ return `module ${symbol.signature.name}`;
34
+ default:
35
+ return symbol.signature.name;
36
+ }
37
+ }
38
+ /**
39
+ * Formatiert ein Interface mit allen Properties
40
+ */
41
+ static formatInterface(symbol) {
42
+ if (symbol.signature.parameters.length > 0) {
43
+ const props = symbol.signature.parameters
44
+ .map(p => SignatureFormatter.formatInterfaceProperty(p))
45
+ .join('\n');
46
+ return 'interface ' + symbol.signature.name + ' {\n' + props + '\n}';
47
+ }
48
+ return 'interface ' + symbol.signature.name + ' {}';
49
+ }
50
+ /**
51
+ * Formatiert eine einzelne Interface-Property
52
+ */
53
+ static formatInterfaceProperty(p) {
54
+ const optionalMarker = p.optional ? '?' : '';
55
+ const typeAnnotation = p.type ? ': ' + p.type : '';
56
+ return ' ' + p.name + optionalMarker + typeAnnotation + ';';
57
+ }
58
+ /**
59
+ * Formatiert eine Funktion oder Methode mit Parametern und Rückgabetyp
60
+ */
61
+ static formatFunctionOrMethod(symbol) {
62
+ const params = symbol.signature.parameters
63
+ .map(p => SignatureFormatter.formatFunctionParameter(p))
64
+ .join(', ');
65
+ const ret = symbol.signature.returnType ? ': ' + symbol.signature.returnType : '';
66
+ return symbol.signature.name + '(' + params + ')' + ret;
67
+ }
68
+ /**
69
+ * Formatiert einen einzelnen Funktions-Parameter
70
+ */
71
+ static formatFunctionParameter(p) {
72
+ const optionalMarker = p.optional ? '?' : '';
73
+ const typeAnnotation = p.type ? ': ' + p.type : '';
74
+ const defaultMarker = p.hasDefault ? ' = …' : '';
75
+ return p.name + optionalMarker + typeAnnotation + defaultMarker;
76
+ }
77
+ /**
78
+ * Formatiert eine Variable mit Typ
79
+ */
80
+ static formatVariable(symbol) {
81
+ const varType = symbol.signature.returnType ? `: ${symbol.signature.returnType}` : '';
82
+ return `${symbol.signature.name}${varType}`;
83
+ }
84
+ /**
85
+ * Normalisiert eine Signatur für Vergleiche
86
+ * Entfernt Whitespace-Unterschiede und normalisiert Formatierung
87
+ */
88
+ static normalize(signature) {
89
+ // Using replace with /g flag (replaceAll requires ES2021+)
90
+ return signature
91
+ .replace(/\s+/g, ' ')
92
+ .replace(/\s*:\s*/g, ':')
93
+ .replace(/\s*;\s*/g, ';')
94
+ .replace(/\s*\{\s*/g, '{')
95
+ .replace(/\s*\}\s*/g, '}')
96
+ .replace(/\s*\|\s*/g, '|')
97
+ .replace(/\s*,\s*/g, ', ')
98
+ .trim();
99
+ }
100
+ /**
101
+ * Normalisiert eine SymbolSignature zu einem String für Hashing/Vergleiche
102
+ */
103
+ static normalizeSignature(sig) {
104
+ const params = sig.parameters
105
+ .map(p => {
106
+ const optMarker = p.optional ? '?' : '';
107
+ const typeStr = p.type ?? '';
108
+ const defaultMarker = p.hasDefault ? '=…' : '';
109
+ return p.name + optMarker + ':' + typeStr + defaultMarker;
110
+ })
111
+ .sort((a, b) => a.localeCompare(b))
112
+ .join(',');
113
+ const retType = sig.returnType ?? '';
114
+ return sig.name + '(' + params + '):' + retType;
115
+ }
116
+ /**
117
+ * Vergleicht zwei Signaturen mit konfigurierbarer Toleranz
118
+ */
119
+ static compare(expected, documented, options = {}) {
120
+ const expectedNorm = SignatureFormatter.normalize(expected);
121
+ const documentedNorm = SignatureFormatter.normalize(documented);
122
+ // Exakter Match
123
+ if (expectedNorm === documentedNorm) {
124
+ return { match: true, reason: 'exact' };
125
+ }
126
+ // Optional-Feld-Toleranz
127
+ if (options.tolerateOptionalFields && SignatureFormatter.isOptionalFieldCompatible(expectedNorm, documentedNorm)) {
128
+ return { match: true, reason: 'optional-fields' };
129
+ }
130
+ // Generics-Vereinfachung
131
+ if (options.tolerateGenericSimplification && SignatureFormatter.isGenericTypeSimplification(expectedNorm, documentedNorm)) {
132
+ return { match: true, reason: 'generic-simplification' };
133
+ }
134
+ return { match: false, reason: 'mismatch' };
135
+ }
136
+ /**
137
+ * Prüft ob Signaturen nur durch optionale Felder unterschiedlich sind
138
+ */
139
+ static isOptionalFieldCompatible(expected, documented) {
140
+ // Using replace with /g flag (replaceAll requires ES2021+)
141
+ const removeOptionalMarkers = (s) => s.replace(/(\w+)\?:/g, '$1:');
142
+ return removeOptionalMarkers(expected) === removeOptionalMarkers(documented);
143
+ }
144
+ /**
145
+ * Prüft ob es sich um eine Generics-Vereinfachung handelt
146
+ */
147
+ static isGenericTypeSimplification(expected, documented) {
148
+ // Using replace with /g flag (replaceAll requires ES2021+)
149
+ const simplifyTypes = (sig) => {
150
+ return sig
151
+ .replace(/\b[A-Z]\b\[\]/g, '{}')
152
+ .replace(/\b[A-Z]\b(?!\[\])/g, '{}')
153
+ .replace(/Promise<[^>]+>/g, 'Promise<{}>')
154
+ .replace(/Thenable<[^>]+>/g, 'Thenable<{}>')
155
+ .replace(/Map<([^,>]+),\s*[^>]+>/g, 'Map<$1, {}>')
156
+ .replace(/Array<([^>]+)>/g, '$1[]');
157
+ };
158
+ return simplifyTypes(expected) === simplifyTypes(documented);
159
+ }
160
+ }
161
+ exports.SignatureFormatter = SignatureFormatter;
162
+ //# sourceMappingURL=signature-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature-formatter.js","sourceRoot":"","sources":["../../src/core/signature-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.classifySymbol = void 0;
4
+ /**
5
+ * @public
6
+ * Zentrale, deterministische Klassifizierungs-API für Symbole.
7
+ *
8
+ * Arbeitet ausschließlich auf ParsedSymbol-Daten (kein I/O, keine
9
+ * Plugin-spezifischen Abhängigkeiten) und wird von Generator und
10
+ * Validator verwendet, um Doku-Tiefe und Prüfstrenge zu steuern.
11
+ */
12
+ function classifySymbol(symbol) {
13
+ const visibility = classifyVisibility(symbol);
14
+ const role = classifyRole(symbol);
15
+ const priority = classifyPriority(role, visibility);
16
+ return { visibility, role, priority };
17
+ }
18
+ exports.classifySymbol = classifySymbol;
19
+ function classifyVisibility(symbol) {
20
+ // Wenn der Parser explizite Sichtbarkeit liefert, respektieren
21
+ // wir diese. Fallback ist „public“, um sich konservativ zu verhalten.
22
+ const v = symbol.signature.visibility;
23
+ if (v === 'private' || v === 'protected') {
24
+ return 'internal';
25
+ }
26
+ return 'public';
27
+ }
28
+ function classifyRole(symbol) {
29
+ const kind = symbol.kind;
30
+ const name = symbol.signature.name;
31
+ const fqn = symbol.fullyQualifiedName;
32
+ const filePath = normalizePath(symbol.filePath);
33
+ // Service-APIs: Funktionen/Methoden/Klassen mit typischen Suffixen
34
+ if (kind === 'function' || kind === 'method' || kind === 'class') {
35
+ if (hasAnySuffix(name, ['Api', 'API', 'Service', 'Manager', 'Controller'])) {
36
+ return 'service-api';
37
+ }
38
+ if (filePathIncludes(filePath, ['api', 'service', 'services', 'controller'])) {
39
+ return 'service-api';
40
+ }
41
+ }
42
+ // Domain-Modelle: Interfaces/Klassen mit typischen Namensmustern
43
+ if (kind === 'interface' || kind === 'class' || kind === 'type') {
44
+ if (hasAnySuffix(name, ['Entity', 'Model', 'Record', 'Result', 'Request', 'Response', 'Stats'])) {
45
+ return 'domain-model';
46
+ }
47
+ if (filePathIncludes(filePath, ['models', 'entities', 'domain'])) {
48
+ return 'domain-model';
49
+ }
50
+ }
51
+ // Konfigurationen: Typen mit „Config“/„Options“ oder in *config*-Pfaden
52
+ if (kind === 'interface' || kind === 'type' || kind === 'variable') {
53
+ if (hasAnySuffix(name, ['Config', 'Options', 'Settings'])) {
54
+ return 'config';
55
+ }
56
+ if (filePathIncludes(filePath, ['config', 'configs'])) {
57
+ return 'config';
58
+ }
59
+ }
60
+ // Infrastruktur / technische Typen (Cache, Validator, Repository, Query, Migration, Snapshot etc.)
61
+ if (hasAnySubstring(name, ['Cache', 'Validator', 'Repository', 'Query', 'Migration', 'Snapshot']) ||
62
+ filePathIncludes(filePath, ['cache', 'validator', 'validators', 'repository', 'repositories', 'migrations'])) {
63
+ return 'infra';
64
+ }
65
+ return 'other';
66
+ }
67
+ function classifyPriority(role, visibility) {
68
+ if (visibility === 'public') {
69
+ if (role === 'service-api' || role === 'domain-model') {
70
+ return 'high';
71
+ }
72
+ if (role === 'config') {
73
+ return 'normal';
74
+ }
75
+ }
76
+ // Interne oder rein infrastrukturelle Symbole sind niedriger priorisiert
77
+ if (role === 'infra' || visibility === 'internal') {
78
+ return 'low';
79
+ }
80
+ return 'normal';
81
+ }
82
+ function normalizePath(p) {
83
+ return p.replace(/\\/g, '/').toLowerCase();
84
+ }
85
+ function hasAnySuffix(name, suffixes) {
86
+ return suffixes.some(s => name.endsWith(s));
87
+ }
88
+ function hasAnySubstring(name, parts) {
89
+ const lower = name.toLowerCase();
90
+ return parts.some(p => lower.includes(p.toLowerCase()));
91
+ }
92
+ function filePathIncludes(path, segments) {
93
+ const lower = path.toLowerCase();
94
+ return segments.some(seg => lower.includes(`/${seg.toLowerCase()}/`) || lower.endsWith(`/${seg.toLowerCase()}.ts`));
95
+ }
96
+ //# sourceMappingURL=symbol-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-classifier.js","sourceRoot":"","sources":["../../src/core/symbol-classifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeStableSymbolId = exports.computeSignatureHash = void 0;
4
+ const crypto_1 = require("crypto");
5
+ /**
6
+ * @public
7
+ * Compute hash for symbol signature
8
+ */
9
+ function computeSignatureHash(symbol) {
10
+ const base = [
11
+ symbol.signature.name,
12
+ symbol.signature.parameters.map(p => `${p.name}:${p.type ?? ''}:${p.hasDefault ? '1' : '0'}`).join('|'),
13
+ symbol.signature.returnType ?? '',
14
+ symbol.signature.visibility ?? 'public',
15
+ ].join('::');
16
+ return (0, crypto_1.createHash)('sha256').update(base).digest('hex').slice(0, 16);
17
+ }
18
+ exports.computeSignatureHash = computeSignatureHash;
19
+ function makeStableSymbolId(symbol) {
20
+ const hash = computeSignatureHash(symbol);
21
+ return `${symbol.language}://${symbol.filePath}#${symbol.fullyQualifiedName}(${hash})`;
22
+ }
23
+ exports.makeStableSymbolId = makeStableSymbolId;
24
+ //# sourceMappingURL=symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../src/core/symbols.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAGpC;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,MAAoB;IACrD,MAAM,IAAI,GAAG;QACT,MAAM,CAAC,SAAS,CAAC,IAAI;QACrB,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACvG,MAAM,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE;QACjC,MAAM,CAAC,SAAS,CAAC,UAAU,IAAI,QAAQ;KAC1C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC;AARD,oDAQC;AAED,SAAgB,kBAAkB,CAAC,MAAoB;IACnD,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,GAAG,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,kBAAkB,IAAI,IAAI,GAAG,CAAC;AAC3F,CAAC;AAHD,gDAGC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectDrift = exports.computeCacheEntries = void 0;
4
+ const symbols_1 = require("../core/symbols");
5
+ function computeCacheEntries(symbols) {
6
+ return symbols.map(s => {
7
+ const id = (0, symbols_1.makeStableSymbolId)(s);
8
+ const baseId = id.replace(/\([^)]*\)$/, ''); // ohne hash
9
+ const signatureHash = (0, symbols_1.computeSignatureHash)(s);
10
+ return { baseId, signatureHash };
11
+ }).sort((a, b) => a.baseId.localeCompare(b.baseId));
12
+ }
13
+ exports.computeCacheEntries = computeCacheEntries;
14
+ function detectDrift(previous, current) {
15
+ if (!previous)
16
+ return { staleSymbols: [] };
17
+ const prevMap = new Map(previous.entries.map(e => [e.baseId, e.signatureHash]));
18
+ const stale = [];
19
+ for (const now of current) {
20
+ const before = prevMap.get(now.baseId);
21
+ if (before && before !== now.signatureHash) {
22
+ stale.push(now.baseId);
23
+ }
24
+ }
25
+ return { staleSymbols: stale };
26
+ }
27
+ exports.detectDrift = detectDrift;
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drift/index.ts"],"names":[],"mappings":";;;AACA,6CAA2E;AAO3E,SAAgB,mBAAmB,CAAC,OAAuB;IACvD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACnB,MAAM,EAAE,GAAG,IAAA,4BAAkB,EAAC,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY;QACzD,MAAM,aAAa,GAAG,IAAA,8BAAoB,EAAC,CAAC,CAAC,CAAC;QAC9C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,CAAC;AAPD,kDAOC;AAED,SAAgB,WAAW,CAAC,QAAmC,EAAE,OAAqB;IAClF,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAU,CAAC,CAAC,CAAC;IACzF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,MAAM,IAAI,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE;YACxC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SAC1B;KACJ;IACD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC;AAXD,kCAWC"}