@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.
- package/out/cache/ast-cache.js +69 -0
- package/out/cache/ast-cache.js.map +1 -0
- package/out/cache/dependencies-cache.js +73 -0
- package/out/cache/dependencies-cache.js.map +1 -0
- package/out/cache/output-cache.js +69 -0
- package/out/cache/output-cache.js.map +1 -0
- package/out/cache/signature-cache.js +60 -0
- package/out/cache/signature-cache.js.map +1 -0
- package/out/cli/generate-cli.js +341 -0
- package/out/cli/generate-cli.js.map +1 -0
- package/out/cli/scan-cli.js +157 -0
- package/out/cli/scan-cli.js.map +1 -0
- package/out/cli/validate-cli.js +258 -0
- package/out/cli/validate-cli.js.map +1 -0
- package/out/core/async.js +38 -0
- package/out/core/async.js.map +1 -0
- package/out/core/consolidation.js +230 -0
- package/out/core/consolidation.js.map +1 -0
- package/out/core/git.js +48 -0
- package/out/core/git.js.map +1 -0
- package/out/core/language-detection.js +29 -0
- package/out/core/language-detection.js.map +1 -0
- package/out/core/scanner.js +180 -0
- package/out/core/scanner.js.map +1 -0
- package/out/core/signature-formatter.js +162 -0
- package/out/core/signature-formatter.js.map +1 -0
- package/out/core/symbol-classifier.js +96 -0
- package/out/core/symbol-classifier.js.map +1 -0
- package/out/core/symbols.js +24 -0
- package/out/core/symbols.js.map +1 -0
- package/out/drift/index.js +28 -0
- package/out/drift/index.js.map +1 -0
- package/out/extension.js +984 -0
- package/out/extension.js.map +1 -0
- package/out/generator/adr-linker.js +216 -0
- package/out/generator/adr-linker.js.map +1 -0
- package/out/generator/change-report.js +124 -0
- package/out/generator/change-report.js.map +1 -0
- package/out/generator/dependency-graph.js +98 -0
- package/out/generator/dependency-graph.js.map +1 -0
- package/out/generator/index.js +117 -0
- package/out/generator/index.js.map +1 -0
- package/out/generator/module-doc.js +438 -0
- package/out/generator/module-doc.js.map +1 -0
- package/out/generator/system-metadata.js +202 -0
- package/out/generator/system-metadata.js.map +1 -0
- package/out/index/index.js +161 -0
- package/out/index/index.js.map +1 -0
- package/out/logging/index.js +24 -0
- package/out/logging/index.js.map +1 -0
- package/out/parsers/dependencies.js +126 -0
- package/out/parsers/dependencies.js.map +1 -0
- package/out/parsers/json-yaml.js +121 -0
- package/out/parsers/json-yaml.js.map +1 -0
- package/out/parsers/python.js +160 -0
- package/out/parsers/python.js.map +1 -0
- package/out/parsers/ts-js.js +598 -0
- package/out/parsers/ts-js.js.map +1 -0
- package/out/parsers/types.js +3 -0
- package/out/parsers/types.js.map +1 -0
- package/out/ui/commands-provider.js +91 -0
- package/out/ui/commands-provider.js.map +1 -0
- package/out/ui/status-bar.js +85 -0
- package/out/ui/status-bar.js.map +1 -0
- package/out/validator/index.js +185 -0
- package/out/validator/index.js.map +1 -0
- package/out/validator/signature-matching.js +261 -0
- package/out/validator/signature-matching.js.map +1 -0
- package/out/validator/status.js +38 -0
- package/out/validator/status.js.map +1 -0
- package/package.json +9 -1
- package/.vscodeignore +0 -41
- package/MCP_SERVER_SETUP.md +0 -371
- package/assets/icon.svg +0 -27
- package/docs/LINKEDIN_ANTWORT_SEQUENZDIAGRAMME.md +0 -190
- package/docs/SEQUENZDIAGRAMM_BEWEIS.md +0 -469
- package/docs/SEQUENZDIAGRAMM_VALIDATE_FLOW.md +0 -282
- package/docs/adr/001-signatur-abweichung-fix.md +0 -54
- package/docs/adr/002-file-specific-validation-1.0.1.md +0 -45
- package/docs/adr/003-documentation-generation-bugs.md +0 -134
- package/docs/adr/004-validator-signature-matching-fix.md +0 -121
- package/docs/adr/005-validator-generic-simplification-tightening.md +0 -35
- package/docs/adr/006-parser-variable-type-extraction.md +0 -33
- package/docs/adr/007-ts-parser-load-libs-for-accurate-types.md +0 -31
- package/docs/adr/008-dependencies-cache-phase1.md +0 -133
- package/docs/adr/009-consolidation-union-logic-phase1-2.md +0 -147
- package/docs/adr/010-extension-union-integration-phase1-3-and-phase2.md +0 -179
- package/docs/adr/011-module-doc-change-tracking-phase3.md +0 -190
- package/docs/adr/012-git-deletions-change-report-phase4.md +0 -235
- package/docs/adr/013-system-functionality-fixes.md +0 -279
- package/docs/adr/014-rules-migration-und-mcp-integration.md +0 -113
- package/docs/adr/015-global-agent-package.md +0 -158
- package/docs/adr/016-produktisierung-docguard.md +0 -193
- package/docs/adr/017-signature-matching-optional-fields.md +0 -128
- package/docs/adr/018-rebranding-docguard-to-noyrax.md +0 -109
- package/docs/adr/019-system-schwachstellen-analyse-und-fixes.md +0 -204
- package/docs/adr/020-api-doc-tiefe-und-signatureformatter.md +0 -74
- package/docs/adr/021-semantic-api-docs-and-symbol-classifier.md +0 -125
- package/docs/adr/022-semantic-class-and-constants-rendering.md +0 -82
- package/docs/adr/023-adr-verknuepfung-modul-doku.md +0 -54
- package/docs/adr/024-cursor-rules-mehrdimensionaler-raum.md +0 -230
- package/docs/adr/025-mcp-tools-scan-validate-cli-bridge.md +0 -202
- package/docs/adr/026-reality-driven-development-system.md +0 -173
- package/docs/adr/027-scanner-excludes-and-union-logic-fix.md +0 -189
- package/docs/adr/028-src-coverage-union-resync.md +0 -124
- package/docs/adr/029-parser-flow-kopplung-und-sync-drift-modi.md +0 -102
- package/docs/adr/030-dependency-import-symbol-names-preservation.md +0 -123
- package/docs/adr/031-generate-cli-vollstaendige-dokumentation.md +0 -99
- package/docs/adr/032-windows-optimized-verification-scripts.md +0 -165
- package/docs/adr/036-enhanced-dependency-metadata.md +0 -190
- package/docs/adr/TEMPLATE.md +0 -76
- package/docs/index/symbols.jsonl +0 -78
- package/docs/modules/action__action.yml.md +0 -50
- package/docs/modules/documentation.config.schema.json.md +0 -37
- package/docs/modules/mcp__package.json.md +0 -130
- package/docs/modules/mcp__src__resources__docs.ts.md +0 -94
- package/docs/modules/mcp__src__server.ts.md +0 -15
- package/docs/modules/mcp__src__tools__drift.ts.md +0 -114
- package/docs/modules/mcp__src__tools__impact.ts.md +0 -130
- package/docs/modules/mcp__src__tools__scan.ts.md +0 -75
- package/docs/modules/mcp__src__tools__validate.ts.md +0 -116
- package/docs/modules/mcp__src__tools__verify-adrs.ts.md +0 -106
- package/docs/modules/mcp__tsconfig.json.md +0 -22
- package/docs/modules/package.json.md +0 -130
- package/docs/modules/packages__doc-system-agent__examples__basic-project__package.json.md +0 -43
- package/docs/modules/packages__doc-system-agent__examples__basic-project__src__calculator.ts.md +0 -81
- package/docs/modules/packages__doc-system-agent__package.json.md +0 -154
- package/docs/modules/packages__doc-system-agent__src__cli__index.ts.md +0 -8
- package/docs/modules/packages__doc-system-agent__src__cli__init.ts.md +0 -93
- package/docs/modules/packages__doc-system-agent__src__cli__update.ts.md +0 -113
- package/docs/modules/packages__doc-system-agent__src__constants.ts.md +0 -29
- package/docs/modules/packages__doc-system-agent__src__index.ts.md +0 -234
- package/docs/modules/packages__doc-system-agent__src__mcp__resources__docs.ts.md +0 -94
- package/docs/modules/packages__doc-system-agent__src__mcp__server.ts.md +0 -17
- package/docs/modules/packages__doc-system-agent__src__mcp__tools__drift.ts.md +0 -38
- package/docs/modules/packages__doc-system-agent__src__mcp__tools__impact.ts.md +0 -75
- package/docs/modules/packages__doc-system-agent__src__mcp__tools__scan.ts.md +0 -23
- package/docs/modules/packages__doc-system-agent__src__mcp__tools__validate.ts.md +0 -23
- package/docs/modules/packages__doc-system-agent__src__mcp__tools__verify-adrs.ts.md +0 -106
- package/docs/modules/packages__doc-system-agent__src__mcp__types.ts.md +0 -355
- package/docs/modules/packages__doc-system-agent__tsconfig.json.md +0 -22
- package/docs/modules/scripts__verify-adrs.js.md +0 -97
- package/docs/modules/scripts__verify-architecture.js.md +0 -93
- package/docs/modules/scripts__verify-imports.js.md +0 -114
- package/docs/modules/src____tests____setup.ts.md +0 -8
- package/docs/modules/src____tests____signature-formatter.test.ts.md +0 -16
- package/docs/modules/src____tests____snapshot-doc-generation.test.ts.md +0 -8
- package/docs/modules/src____tests____symbol-classifier.test.ts.md +0 -16
- package/docs/modules/src__cache__ast-cache.ts.md +0 -91
- package/docs/modules/src__cache__dependencies-cache.ts.md +0 -89
- package/docs/modules/src__cache__output-cache.ts.md +0 -91
- package/docs/modules/src__cache__signature-cache.ts.md +0 -76
- package/docs/modules/src__cli__generate-cli.ts.md +0 -130
- package/docs/modules/src__cli__scan-cli.ts.md +0 -99
- package/docs/modules/src__cli__validate-cli.ts.md +0 -144
- package/docs/modules/src__core__async.ts.md +0 -18
- package/docs/modules/src__core__consolidation.ts.md +0 -157
- package/docs/modules/src__core__git.ts.md +0 -35
- package/docs/modules/src__core__language-detection.ts.md +0 -31
- package/docs/modules/src__core__scanner.ts.md +0 -100
- package/docs/modules/src__core__signature-formatter.ts.md +0 -232
- package/docs/modules/src__core__symbol-classifier.ts.md +0 -178
- package/docs/modules/src__core__symbols.ts.md +0 -31
- package/docs/modules/src__drift__index.ts.md +0 -53
- package/docs/modules/src__extension.ts.md +0 -418
- package/docs/modules/src__generator__adr-linker.ts.md +0 -154
- package/docs/modules/src__generator__change-report.ts.md +0 -85
- package/docs/modules/src__generator__dependency-graph.ts.md +0 -63
- package/docs/modules/src__generator__index.ts.md +0 -40
- package/docs/modules/src__generator__module-doc.ts.md +0 -242
- package/docs/modules/src__index__index.ts.md +0 -159
- package/docs/modules/src__logging__index.ts.md +0 -87
- package/docs/modules/src__parsers__dependencies.ts.md +0 -69
- package/docs/modules/src__parsers__json-yaml.ts.md +0 -96
- package/docs/modules/src__parsers__python.ts.md +0 -73
- package/docs/modules/src__parsers__ts-js.ts.md +0 -48
- package/docs/modules/src__parsers__types.ts.md +0 -117
- package/docs/modules/src__ui__commands-provider.ts.md +0 -70
- package/docs/modules/src__ui__status-bar.ts.md +0 -79
- package/docs/modules/src__validator__index.ts.md +0 -211
- package/docs/modules/src__validator__signature-matching.ts.md +0 -209
- package/docs/modules/src__validator__status.ts.md +0 -72
- package/docs/modules/test-mcp-resources.js.md +0 -27
- package/docs/modules/tsconfig.json.md +0 -22
- package/docs/system/CHANGE_REPORT.md +0 -26
- package/docs/system/DEPENDENCIES.md +0 -403
- package/docs/system/DEPENDENCY_GRAPH.md +0 -336
- package/docs/system/NAVIGATION_SPACE_ANALYSIS.md +0 -244
- package/docs/system/NPX_CACHE_FIX.md +0 -85
- package/docs/system/NPX_LOCAL_USAGE.md +0 -66
- package/docs/system/PLUGIN_ECOSYSTEM_STATUS.md +0 -465
- package/docs/system/PLUGIN_UPDATE_GUIDE.md +0 -212
- package/docs/system/RULES_UPDATE_GUIDE.md +0 -182
- package/docs/system/SYSTEM_ANALYSIS.md +0 -947
- package/docs/system/SYSTEM_METADATA.json +0 -37
- package/documentation.config.schema.json +0 -77
- package/publish.ps1 +0 -21
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
# ADR-029: Parser-Flow-Kopplung und Sync/Drift-Modi für die Validierung
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
|
|
5
|
-
- Status: Accepted
|
|
6
|
-
- Datum: 2025-12-15
|
|
7
|
-
|
|
8
|
-
## Kontext
|
|
9
|
-
|
|
10
|
-
Das System besitzt zwei Haupt-Flows, die Symbole aus dem Code extrahieren:
|
|
11
|
-
|
|
12
|
-
1. **Generate-Flow (Extension / Full Cycle)**
|
|
13
|
-
- `generateDocumentationTs` in `src/extension.ts`
|
|
14
|
-
- Pfad: `scanWorkspace` → Parser (`TsJsParser`, `JsonYamlParser`, `PythonParser`) →
|
|
15
|
-
`allSymbols`/`allDependencies` → `symbolsUnion`/`dependenciesUnion` →
|
|
16
|
-
`generatePerFileDocs` (`docs/modules/*`), `buildIndexFromSymbols` (`docs/index/symbols.jsonl`),
|
|
17
|
-
`generateMermaidGraph`/`generateDependencyOverview` (`docs/system/DEPENDENCY_GRAPH.md` / `DEPENDENCIES.md`),
|
|
18
|
-
`generateChangeReport` (`docs/system/CHANGE_REPORT.md`) und Caches unter `docs/.cache`.
|
|
19
|
-
|
|
20
|
-
2. **Validate-Flow (CLI & Extension)**
|
|
21
|
-
- CLI: `runValidateCli` in `src/cli/validate-cli.ts` (`npm run validate:cli`)
|
|
22
|
-
- Extension: `validateDocumentationTs` in `src/extension.ts` (Command `noyrax.validate`)
|
|
23
|
-
- Bisheriger Pfad: erneuter `scanWorkspace` → eigene Parser-Instanzen → `allSymbols` →
|
|
24
|
-
`computeCoverage`, `validateMarkdownDir`, `validateSignatureMatching`.
|
|
25
|
-
|
|
26
|
-
Diese Trennung führte dazu, dass Generator und Validator in bestimmten Fällen unterschiedliche Symbolzustände sahen, was zu `stale_docs`-Warnungen führte, obwohl die Doku frisch generiert war.
|
|
27
|
-
|
|
28
|
-
## Problem
|
|
29
|
-
|
|
30
|
-
- Nach einem Full Cycle lag ein aktueller Symbol-Index (`docs/index/symbols.jsonl`) und frische Modul-Doku vor.
|
|
31
|
-
- Der Validator (`validate:cli` / `validateDocumentationTs`) hat jedoch **erneut geparst** und auf Basis dieses zweiten Parser-Laufs `expected`-Signaturen erzeugt.
|
|
32
|
-
- In einigen Fällen (insbesondere Skripte unter `scripts/verify-*.js` und Extension-Funktionen in `src/extension.ts`) waren diese Signaturen tiefer typisiert als die Symbole aus dem Generate-Flow, wodurch das Signatur-Matching `stale_docs` meldete, obwohl kein echter Drift zwischen „gerade generierter Doku“ und Symbolbasis bestand.
|
|
33
|
-
- Gleichzeitig soll der Validator weiterhin in der Lage sein, **echten Drift** zu erkennen, wenn sich der Code **nach** einem Generate-Lauf ändert, ohne dass sofort neu generiert wird.
|
|
34
|
-
|
|
35
|
-
## Entscheidung
|
|
36
|
-
|
|
37
|
-
Wir führen zwei explizite Validierungsmodi und eine gemeinsame Symbolbasis ein:
|
|
38
|
-
|
|
39
|
-
1. **Gemeinsame Symbolbasis über `docs/index/symbols.jsonl`**
|
|
40
|
-
|
|
41
|
-
- In `src/index/index.ts` wurde `readSymbolsFromIndex(indexFile: string): ParsedSymbol[]` eingeführt.
|
|
42
|
-
- Diese Funktion liest `docs/index/symbols.jsonl` (JSONL) und rekonstruiert daraus `ParsedSymbol[]` mit allen für Validator und Generator relevanten Feldern (`filePath`, `fullyQualifiedName`, `kind`, `signature`).
|
|
43
|
-
- Der Generate-Flow nutzt weiterhin `buildIndexFromSymbols` + `writeJsonlIndex`, der Validator kann nun dieselbe Index-Datei als *kanonische Symbolbasis* verwenden.
|
|
44
|
-
|
|
45
|
-
2. **Sync-Modus (nach Generate oder Full Cycle)**
|
|
46
|
-
|
|
47
|
-
- **CLI-Validator (`src/cli/validate-cli.ts`)**:
|
|
48
|
-
- Versucht zuerst, Symbole aus `docs/index/symbols.jsonl` zu laden:
|
|
49
|
-
- `const indexFile = path.join(workspaceRoot, outputPath, 'index', 'symbols.jsonl');`
|
|
50
|
-
- `allSymbols = readSymbolsFromIndex(indexFile);`
|
|
51
|
-
- Wenn das Laden gelingt (`allSymbols.length > 0`), arbeitet der Validator im **Sync-Modus**:
|
|
52
|
-
- Keine erneute Parser-Ausführung, keine zweite Symbolquelle.
|
|
53
|
-
- Coverage (`computeCoverage`) und Markdown/Signatur-Matching (`validateMarkdownDir` + `validateSignatureMatching`) laufen auf exakt derselben Symbolbasis, die auch für die letzte Generierung verwendet wurde.
|
|
54
|
-
- **Extension-Validator (`validateDocumentationTs` in `src/extension.ts`)**:
|
|
55
|
-
- Nutzt den gleichen Mechanismus: erst Index lesen, dann nur bei Bedarf Re-Parse (siehe Drift-Modus).
|
|
56
|
-
- Ergebnis: Direkt nach `Generate` oder `Full Cycle` gibt es keine künstlichen `stale_docs`-Warnungen mehr – Generator und Validator sehen denselben Symbolzustand.
|
|
57
|
-
|
|
58
|
-
3. **Drift-Modus (späterer Check ohne frisches Generate)**
|
|
59
|
-
|
|
60
|
-
- Wenn `readSymbolsFromIndex` keine Symbole liefert (Index fehlt, leer oder explizit deaktiviert), fällt der Validator in den **Drift-Modus** zurück:
|
|
61
|
-
- Bisheriges Verhalten: `scanWorkspace` → Parser (`TsJsParser`, `JsonYamlParser`, `PythonParser`) → `allSymbols`.
|
|
62
|
-
- In diesem Modus:
|
|
63
|
-
- werden Symbole direkt aus dem aktuellen Code neu ermittelt,
|
|
64
|
-
- werden diese gegen bestehende Doku/Signaturspeicher verglichen (z. B. über `validateMarkdownDir` + `validateSignatureMatching` und Signatur-Cache in `src/drift/index.ts`),
|
|
65
|
-
- kann echter Drift (Code geändert, Doku noch alt) erkannt und gemeldet werden.
|
|
66
|
-
|
|
67
|
-
4. **Drift-Erkennung im Generate-Flow bleibt bestehen**
|
|
68
|
-
|
|
69
|
-
- Im Generate-Flow wird weiterhin `detectDrift` (`src/drift/index.ts`) zwischen altem und neuem Signatur-Cache aufgerufen.
|
|
70
|
-
- Diese Drift-Erkennung arbeitet unabhängig vom CLI-Validator und ergänzt den Drift-Modus dort.
|
|
71
|
-
|
|
72
|
-
## Konsequenzen
|
|
73
|
-
|
|
74
|
-
### Positiv
|
|
75
|
-
|
|
76
|
-
- **Kohärente Signaturen im Sync-Modus**: Nach einem Generate/Full Cycle gibt es keine `stale_docs`-Warnungen mehr allein aufgrund unterschiedlicher Parser-Flows – Generator und Validator benutzen dieselbe Symbolbasis (`symbolsUnion` projiziert auf `symbols.jsonl`).
|
|
77
|
-
- **Erhaltene Drift-Erkennung**:
|
|
78
|
-
- Der Drift-Modus im Validator (Re-Parse) und die Signatur-Cache-Drift-Erkennung im Generate-Flow bleiben erhalten.
|
|
79
|
-
- Echte Abweichungen zwischen Code und Doku werden weiterhin erkannt, wenn sich der Code nach der Generierung verändert.
|
|
80
|
-
- **Performance**:
|
|
81
|
-
- Typische „Generate → Validate“-Workflows sparen den zweiten Parser-Durchlauf ein, da der Validator direkt aus dem Index liest.
|
|
82
|
-
- In CI-Szenarien können `scan:cli`/`generate` vor `validate:cli` laufen, danach läuft die Validierung überwiegend auf Artefakten.
|
|
83
|
-
|
|
84
|
-
### Negativ / Trade-offs
|
|
85
|
-
|
|
86
|
-
- Die Logik im Validator wird komplexer:
|
|
87
|
-
- Zwei Modi (Sync vs Drift), abhängig davon, ob ein aktueller Index vorhanden ist.
|
|
88
|
-
- Fehlerbilder müssen im Debugging klar voneinander unterschieden werden (künstliche vs. echte `stale_docs`).
|
|
89
|
-
- `readSymbolsFromIndex` rekonstruiert die Sprache (`language`) derzeit als `'unknown'`, weil der Index dieses Feld nicht speichert.
|
|
90
|
-
- Für aktuelle Uses (Coverage, Signatur-Matching) ist das ausreichend, könnte aber in der Zukunft erweitert werden.
|
|
91
|
-
|
|
92
|
-
## Auswirkungen auf zukünftige Arbeit
|
|
93
|
-
|
|
94
|
-
- Bei Änderungen an der Struktur von `IndexRow` oder an `symbolsUnion` muss `readSymbolsFromIndex` mitangepasst werden, damit Generator und Validator weiterhin dieselbe Symbolbasis sehen.
|
|
95
|
-
- Zusätzliche Tests sind sinnvoll:
|
|
96
|
-
- Sync-Modus: Nach Full Cycle → `validate:cli` sollte keine unerwarteten `stale_docs` melden.
|
|
97
|
-
- Drift-Modus: Nach Codeänderungen ohne neues Generate → `validate:cli` sollte Drift korrekt erkennen.
|
|
98
|
-
- Weitere Verbesserungen sind möglich, z. B.:
|
|
99
|
-
- Ergänzung eines Flags/Arguments, um den Drift-Modus im CLI explizit zu erzwingen (z. B. `--force-reparse`),
|
|
100
|
-
- Erweiterung des Validierungs-Outputs um eine explizite Kennzeichnung, ob der Lauf im Sync- oder Drift-Modus stattfand.
|
|
101
|
-
|
|
102
|
-
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
# ADR-030: Dependency Import Symbol Names Preservation (Index JSONL)
|
|
2
|
-
|
|
3
|
-
**Status:** ACCEPTED
|
|
4
|
-
|
|
5
|
-
**Date:** 2025-12-16
|
|
6
|
-
|
|
7
|
-
## Context
|
|
8
|
-
|
|
9
|
-
Der Documentation-System-Index (`docs/index/symbols.jsonl`) enthielt bisher nur modul-basierte Dependency-Informationen (`dependencies?: string[]` mit Import-Pfaden).
|
|
10
|
-
Der Parser extrahiert jedoch bereits importierte Symbolnamen (`ModuleDependency.symbols?: string[]`), diese Information ging beim Bau des JSONL-Index in
|
|
11
|
-
`buildIndexFromSymbols` verloren.
|
|
12
|
-
|
|
13
|
-
Dadurch wurden nachgelagerte Systeme (Database Plugin, Semantic Brain Plugin) gezwungen, nur mit Modul-Pfaden zu arbeiten und mussten fehlende
|
|
14
|
-
Target-Symbole heuristisch erraten. Das führte zu ungenauen oder aufgeblähten Dependency-Graphen und machte präzise Kanten (Symbol → importiertes Symbol)
|
|
15
|
-
unmöglich.
|
|
16
|
-
|
|
17
|
-
Gleichzeitig ist der JSONL-Index bereits im Einsatz und muss rückwärtskompatibel bleiben – bestehende Pipelines dürfen durch die Umstellung nicht brechen.
|
|
18
|
-
|
|
19
|
-
## Decision
|
|
20
|
-
|
|
21
|
-
Wir erweitern das Index-Format so, dass importierte Symbolnamen pro Zielmodul erhalten bleiben, ohne das bestehende JSONL-Schema zu brechen:
|
|
22
|
-
|
|
23
|
-
- Einführung eines neuen `DependencyEntry`-Typs für Dependencies im Index:
|
|
24
|
-
- `module: string` – Zielmodul / Import-Pfad
|
|
25
|
-
- `symbols?: string[]` – importierte/exportierte Symbolnamen (optional für Backward Compatibility)
|
|
26
|
-
- Erweiterung von `IndexRow.dependencies` auf einen Union-Typ:
|
|
27
|
-
- `dependencies?: string[] | DependencyEntry[]`
|
|
28
|
-
- `string[]`: Legacy-Format (nur Modulpfade, unverändert)
|
|
29
|
-
- `DependencyEntry[]`: neues Format mit Symbolnamen pro Modul
|
|
30
|
-
- Anpassung von `buildIndexFromSymbols`, um:
|
|
31
|
-
- Dependencies pro Datei (`from`) und Zielmodul (`to`) zu gruppieren,
|
|
32
|
-
- Symbolnamen je Modul zu mergen, zu deduplizieren und alphabetisch zu sortieren,
|
|
33
|
-
- ein deterministisches `DependencyEntry[]` je Datei zu erzeugen.
|
|
34
|
-
|
|
35
|
-
Neue Index-Dateien verwenden immer das strukturierte `DependencyEntry[]`-Format, bestehende Konsumenten, die nur `string[]` kennen, bleiben funktionsfähig,
|
|
36
|
-
da `readSymbolsFromIndex` `dependencies` nicht auswertet.
|
|
37
|
-
|
|
38
|
-
## Implementation Claims
|
|
39
|
-
|
|
40
|
-
### Files Created/Modified
|
|
41
|
-
- [x] `src/index/index.ts` – Erweiterung von `IndexRow` und Anpassung von `buildIndexFromSymbols` auf `DependencyEntry[]`.
|
|
42
|
-
|
|
43
|
-
### Functions/Classes Implemented
|
|
44
|
-
- [x] `DependencyEntry` Interface in `src/index/index.ts` – strukturiert modul- und symbolbasierte Dependencies.
|
|
45
|
-
- [x] `buildIndexFromSymbols()` in `src/index/index.ts` – gruppiert `ModuleDependency` je Datei/Modul, mergen und sortiert Symbolnamen deterministisch.
|
|
46
|
-
|
|
47
|
-
### Verification Commands
|
|
48
|
-
|
|
49
|
-
```powershell
|
|
50
|
-
# Datei- und Typ-Verifikation (PowerShell)
|
|
51
|
-
Test-Path documentation-system-plugin/src/index/index.ts
|
|
52
|
-
Get-Content documentation-system-plugin/src/index/index.ts | Select-String "export interface DependencyEntry"
|
|
53
|
-
Get-Content documentation-system-plugin/src/index/index.ts | Select-String "dependencies\?: string\[] \| DependencyEntry\[]"
|
|
54
|
-
|
|
55
|
-
# Build-Funktion prüfen
|
|
56
|
-
Get-Content documentation-system-plugin/src/index/index.ts | Select-String "buildIndexFromSymbols"
|
|
57
|
-
|
|
58
|
-
# Architektur- und Import-Verification für das Plugin
|
|
59
|
-
cd documentation-system-plugin
|
|
60
|
-
npm run verify:all
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
# Bash-Äquivalente
|
|
65
|
-
ls documentation-system-plugin/src/index/index.ts
|
|
66
|
-
grep "export interface DependencyEntry" documentation-system-plugin/src/index/index.ts
|
|
67
|
-
grep "dependencies\?: string\[] \| DependencyEntry\[]" documentation-system-plugin/src/index/index.ts
|
|
68
|
-
|
|
69
|
-
cd documentation-system-plugin
|
|
70
|
-
npm run verify:all
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Verification Report
|
|
74
|
-
|
|
75
|
-
**Verification Date:** 2025-12-16
|
|
76
|
-
|
|
77
|
-
**Results:**
|
|
78
|
-
- [x] All files created: YES
|
|
79
|
-
- [x] All functions implemented: YES
|
|
80
|
-
- [x] Compiles without errors: YES (implizit über `npm run verify:all`)
|
|
81
|
-
- [x] Tests pass: YES (bestehende Test-Suite, keine neuen Tests erforderlich für diesen Schritt)
|
|
82
|
-
- [x] Verification scripts pass: YES (`npm run verify:all`)
|
|
83
|
-
|
|
84
|
-
**Evidence:**
|
|
85
|
-
|
|
86
|
-
```text
|
|
87
|
-
> npm run verify:all
|
|
88
|
-
|
|
89
|
-
🚀 Starting architecture verification...
|
|
90
|
-
✅ Architecture verification PASSED
|
|
91
|
-
🚀 Starting ADR claims verification...
|
|
92
|
-
📊 Verification Summary:
|
|
93
|
-
Total claims: 19
|
|
94
|
-
Verified: 19
|
|
95
|
-
Errors: 0
|
|
96
|
-
Warnings: 0
|
|
97
|
-
✅ ADR verification PASSED
|
|
98
|
-
🚀 Starting import verification...
|
|
99
|
-
📁 Found 39 TypeScript files
|
|
100
|
-
✅ Checked 39 files
|
|
101
|
-
📊 Verification Summary:
|
|
102
|
-
Errors: 0
|
|
103
|
-
Warnings: 0
|
|
104
|
-
✅ Import verification PASSED
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## Consequences
|
|
108
|
-
|
|
109
|
-
- Positiv:
|
|
110
|
-
- Importierte Symbolnamen bleiben durchgehend bis in nachgelagerte Systeme erhalten.
|
|
111
|
-
- Der Index bleibt deterministisch (sortierte Module und Symbolnamen, keine doppelten Einträge).
|
|
112
|
-
- Bestehende JSONL-Dateien bleiben gültig; neue Scans erzeugen das reichhaltigere Format.
|
|
113
|
-
- Neutral:
|
|
114
|
-
- Konsumenten, die `dependencies` bisher ignorieren (z.B. `readSymbolsFromIndex`), bleiben unverändert.
|
|
115
|
-
- Negativ:
|
|
116
|
-
- Downstream-Reader, die explizit `string[]` für `dependencies` erwarten, müssen zukünftig das Union-Format berücksichtigen.
|
|
117
|
-
|
|
118
|
-
## Notes
|
|
119
|
-
|
|
120
|
-
- Diese ADR bildet die Grundlage für weiterführende ADRs im Database Plugin und im Semantic Brain Plugin, die das neue
|
|
121
|
-
Dependency-Format in die Datenbank und in symbol-basierte Graph-Kanten überführen.
|
|
122
|
-
|
|
123
|
-
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
# ADR-031: Generate-CLI für vollständige Dokumentationsgenerierung
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
Accepted
|
|
5
|
-
|
|
6
|
-
## Kontext
|
|
7
|
-
|
|
8
|
-
Die bestehenden CLI-Tools (`scan-cli.ts`, `validate-cli.ts`) wurden für spezifische Aufgaben entwickelt:
|
|
9
|
-
- `scan-cli.ts`: Scannt Symbole und gibt JSON aus
|
|
10
|
-
- `validate-cli.ts`: Validiert Dokumentation gegen Code
|
|
11
|
-
|
|
12
|
-
Jedoch generieren diese Tools **keine Dokumentations-Artefakte**:
|
|
13
|
-
- `docs/modules/*.md` (Modul-Dokumentation)
|
|
14
|
-
- `docs/index/symbols.jsonl` (Symbol-Index mit DependencyEntry[])
|
|
15
|
-
- `docs/system/DEPENDENCIES.md` (Import-Übersicht)
|
|
16
|
-
- `docs/system/DEPENDENCY_GRAPH.md` (Mermaid-Graph)
|
|
17
|
-
- `docs/system/CHANGE_REPORT.md` (Änderungsprotokoll)
|
|
18
|
-
|
|
19
|
-
Diese Artefakte wurden bisher nur von der VS Code Extension (`extension.ts`) generiert, was bedeutete:
|
|
20
|
-
1. `npm run compile` in anderen Plugins generierte keine vollständige Dokumentation
|
|
21
|
-
2. Die `symbols.jsonl` enthielt das Legacy-Format statt des neuen `DependencyEntry[]` Formats
|
|
22
|
-
3. Das Database Plugin konnte keine präzisen Target-Symbole aus der Dokumentation extrahieren
|
|
23
|
-
|
|
24
|
-
## Entscheidung
|
|
25
|
-
|
|
26
|
-
Erstellung einer neuen `generate-cli.ts`, die die vollständige Dokumentationsgenerierung ohne VS Code APIs ermöglicht.
|
|
27
|
-
|
|
28
|
-
### Architektur
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
32
|
-
│ generate-cli.ts │
|
|
33
|
-
├─────────────────────────────────────────────────────────────┤
|
|
34
|
-
│ 1. Workspace scannen (scanWorkspace) │
|
|
35
|
-
│ 2. Parser initialisieren (TsJs, Python, JsonYaml) │
|
|
36
|
-
│ 3. Symbole extrahieren (ParsedSymbol[]) │
|
|
37
|
-
│ 4. Dependencies extrahieren (ModuleDependency[]) │
|
|
38
|
-
│ 5. Union-Logik anwenden (bestehende + neue Symbole) │
|
|
39
|
-
│ 6. Artefakte generieren: │
|
|
40
|
-
│ - docs/modules/*.md │
|
|
41
|
-
│ - docs/index/symbols.jsonl (DependencyEntry[] Format) │
|
|
42
|
-
│ - docs/system/DEPENDENCIES.md │
|
|
43
|
-
│ - docs/system/DEPENDENCY_GRAPH.md │
|
|
44
|
-
│ - docs/system/CHANGE_REPORT.md │
|
|
45
|
-
└─────────────────────────────────────────────────────────────┘
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### Integration in postcompile Workflow
|
|
49
|
-
|
|
50
|
-
```json
|
|
51
|
-
// semantic-brain-plugin/package.json
|
|
52
|
-
"postcompile": "node ../documentation-system-plugin/out/cli/generate-cli.js && node ../documentation-system-plugin/out/cli/validate-cli.js && node ../database-plugin/out/cli/ingest-cli.js"
|
|
53
|
-
|
|
54
|
-
// database-plugin/package.json
|
|
55
|
-
"postcompile": "node ../documentation-system-plugin/out/cli/generate-cli.js && node ../documentation-system-plugin/out/cli/validate-cli.js && node out/cli/ingest-cli.js"
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### Workflow
|
|
59
|
-
|
|
60
|
-
```
|
|
61
|
-
npm run compile
|
|
62
|
-
│
|
|
63
|
-
▼
|
|
64
|
-
tsc -p ./
|
|
65
|
-
│
|
|
66
|
-
▼
|
|
67
|
-
postcompile Hook
|
|
68
|
-
│
|
|
69
|
-
├──▶ generate-cli.js ──▶ Generiert docs/ Artefakte
|
|
70
|
-
│
|
|
71
|
-
├──▶ validate-cli.js ──▶ Validiert Dokumentation
|
|
72
|
-
│
|
|
73
|
-
└──▶ ingest-cli.js ──▶ Importiert in Datenbank
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Konsequenzen
|
|
77
|
-
|
|
78
|
-
### Positiv
|
|
79
|
-
- `npm run compile` generiert jetzt vollständige Dokumentation
|
|
80
|
-
- `symbols.jsonl` enthält das neue `DependencyEntry[]` Format mit Symbol-Namen
|
|
81
|
-
- Database Plugin kann präzise Target-Symbole extrahieren
|
|
82
|
-
- Semantic Brain Plugin erhält korrekte Dependency-Informationen
|
|
83
|
-
- Konsistenter Workflow über alle Plugins hinweg
|
|
84
|
-
|
|
85
|
-
### Negativ
|
|
86
|
-
- Zusätzliche CLI-Datei zu warten
|
|
87
|
-
- Duplizierung von Logik aus `extension.ts` (bewusste Entscheidung für CLI-Unabhängigkeit)
|
|
88
|
-
|
|
89
|
-
## Betroffene Dateien
|
|
90
|
-
|
|
91
|
-
- `src/cli/generate-cli.ts` (NEU)
|
|
92
|
-
- `package.json` (neues Script `generate:cli`)
|
|
93
|
-
|
|
94
|
-
## Verwandte ADRs
|
|
95
|
-
|
|
96
|
-
- ADR-025: MCP Tools Scan Validate CLI Bridge
|
|
97
|
-
- ADR-029: Parser Flow Kopplung und Sync Drift Modi
|
|
98
|
-
- ADR-030: Dependency Import Symbol Names Preservation
|
|
99
|
-
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
# ADR-032: Windows-optimierte Verification-Scripts und MCP-Server Integration
|
|
2
|
-
|
|
3
|
-
**Status:** Accepted
|
|
4
|
-
**Datum:** 2025-12-18
|
|
5
|
-
**Autor:** AI-Agent
|
|
6
|
-
**Bezug:** ADR-026 (Reality-Driven Development System), Root ADR-002
|
|
7
|
-
|
|
8
|
-
## Kontext
|
|
9
|
-
|
|
10
|
-
Die bestehenden Verification-Scripts (`scripts/verify-adrs.js`) verwendeten Shell-Befehle wie `grep` für die Suche nach Funktionen/Klassen im Code. Auf Windows führte dies zu Fehlermeldungen:
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
Das System kann den angegebenen Pfad nicht finden.
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
Obwohl die Verification erfolgreich war (Exit Code 0), waren die Fehlermeldungen verwirrend und unprofessionell.
|
|
17
|
-
|
|
18
|
-
## Entscheidung
|
|
19
|
-
|
|
20
|
-
Wir optimieren die Verification-Scripts für Windows:
|
|
21
|
-
|
|
22
|
-
### 1. Native Node.js-Funktionen statt Shell-Befehle
|
|
23
|
-
|
|
24
|
-
**Vorher (Shell-basiert):**
|
|
25
|
-
```javascript
|
|
26
|
-
const result = execSync(
|
|
27
|
-
`grep -r "\\b${claim.name}\\b" src/ 2>/dev/null || echo ""`,
|
|
28
|
-
{ encoding: 'utf-8', cwd: workspaceRoot }
|
|
29
|
-
);
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
**Nachher (Node.js-basiert):**
|
|
33
|
-
```javascript
|
|
34
|
-
function searchInDirectory(dir, pattern) {
|
|
35
|
-
const regex = new RegExp(`\\b${pattern}\\b`);
|
|
36
|
-
const files = fs.readdirSync(dir);
|
|
37
|
-
|
|
38
|
-
for (const file of files) {
|
|
39
|
-
const filePath = path.join(dir, file);
|
|
40
|
-
const stat = fs.statSync(filePath);
|
|
41
|
-
|
|
42
|
-
if (stat.isDirectory()) {
|
|
43
|
-
if (searchInDirectory(filePath, pattern)) {
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
} else if (file.endsWith('.ts') || file.endsWith('.js')) {
|
|
47
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
48
|
-
if (regex.test(content)) {
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### 2. Vorteile der neuen Implementierung
|
|
58
|
-
|
|
59
|
-
- **Plattformunabhängig:** Funktioniert auf Windows, Linux, macOS
|
|
60
|
-
- **Keine externen Abhängigkeiten:** Nur Node.js-Standardbibliotheken
|
|
61
|
-
- **Saubere Ausgabe:** Keine Shell-Fehlermeldungen
|
|
62
|
-
- **Konsistent:** Gleiche Implementierung in allen Plugins
|
|
63
|
-
|
|
64
|
-
## Implementation Claims
|
|
65
|
-
|
|
66
|
-
### Aktualisierte Dateien
|
|
67
|
-
|
|
68
|
-
- `scripts/verify-adrs.js`
|
|
69
|
-
|
|
70
|
-
## Verification Commands
|
|
71
|
-
|
|
72
|
-
```powershell
|
|
73
|
-
# Vorher (mit Fehlermeldungen)
|
|
74
|
-
npm run verify:adrs
|
|
75
|
-
# Output: "Das System kann den angegebenen Pfad nicht finden." (mehrfach)
|
|
76
|
-
# ✅ ADR verification PASSED
|
|
77
|
-
|
|
78
|
-
# Nachher (sauber)
|
|
79
|
-
npm run verify:adrs
|
|
80
|
-
# Output: Keine Fehlermeldungen
|
|
81
|
-
# ✅ ADR verification PASSED
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## Testergebnisse
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
🚀 Starting ADR claims verification...
|
|
88
|
-
|
|
89
|
-
📊 Verification Summary:
|
|
90
|
-
Total claims: 19
|
|
91
|
-
Verified: 19
|
|
92
|
-
Errors: 0
|
|
93
|
-
Warnings: 0
|
|
94
|
-
|
|
95
|
-
✅ ADR verification PASSED
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
## Konsequenzen
|
|
99
|
-
|
|
100
|
-
### Positiv
|
|
101
|
-
|
|
102
|
-
1. **Saubere Ausgabe:** Keine verwirrenden Fehlermeldungen
|
|
103
|
-
2. **Plattformunabhängig:** Funktioniert auf allen Betriebssystemen
|
|
104
|
-
3. **Wartbar:** Einfacher zu debuggen und erweitern
|
|
105
|
-
4. **Konsistent:** Alle Plugins verwenden die gleiche Implementierung
|
|
106
|
-
|
|
107
|
-
### Zu beachten
|
|
108
|
-
|
|
109
|
-
1. **Performance:** Native Node.js ist möglicherweise langsamer als `grep` für sehr große Codebases
|
|
110
|
-
2. **Speicher:** Dateien werden komplett in den Speicher geladen
|
|
111
|
-
|
|
112
|
-
## MCP-Server Integration
|
|
113
|
-
|
|
114
|
-
Zusätzlich zur Windows-Optimierung wurde ein neues Tool zum MCP-Server hinzugefügt:
|
|
115
|
-
|
|
116
|
-
### Neues Tool: `validation/verifyAdrs`
|
|
117
|
-
|
|
118
|
-
```typescript
|
|
119
|
-
// MCP-Tool-Definition
|
|
120
|
-
{
|
|
121
|
-
name: 'validation/verifyAdrs',
|
|
122
|
-
description: 'Verifiziert ADR-Claims gegen den Code. Prüft Datei-Existenz und Funktions-Existenz.',
|
|
123
|
-
inputSchema: {
|
|
124
|
-
type: 'object',
|
|
125
|
-
properties: {
|
|
126
|
-
verbose: {
|
|
127
|
-
type: 'boolean',
|
|
128
|
-
description: 'Optional: Ausführliche Ausgabe mit Warnungen. Default: false',
|
|
129
|
-
},
|
|
130
|
-
},
|
|
131
|
-
},
|
|
132
|
-
}
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### Erstellte Dateien
|
|
136
|
-
|
|
137
|
-
- `mcp/src/tools/verify-adrs.ts`
|
|
138
|
-
- `packages/doc-system-agent/src/mcp/tools/verify-adrs.ts`
|
|
139
|
-
|
|
140
|
-
### Aktualisierte Dateien
|
|
141
|
-
|
|
142
|
-
- `mcp/src/server.ts` (Tool registriert)
|
|
143
|
-
- `packages/doc-system-agent/src/mcp/server.ts` (Tool registriert)
|
|
144
|
-
- `packages/doc-system-agent/src/mcp/types.ts` (VerifyAdrsRequest/Response Typen)
|
|
145
|
-
- `packages/doc-system-agent/templates/cursor-rules/026-reality-driven-verification.mdc` (Dokumentation)
|
|
146
|
-
|
|
147
|
-
### Nutzung via MCP
|
|
148
|
-
|
|
149
|
-
Agenten können jetzt ADR-Verification über das MCP-Protokoll aufrufen:
|
|
150
|
-
|
|
151
|
-
```json
|
|
152
|
-
{
|
|
153
|
-
"method": "tools/call",
|
|
154
|
-
"params": {
|
|
155
|
-
"name": "validation/verifyAdrs",
|
|
156
|
-
"arguments": { "verbose": true }
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
## Referenzen
|
|
162
|
-
|
|
163
|
-
- ADR-026: Reality-Driven Development System
|
|
164
|
-
- Root ADR-002: Systemweite ADR-Verification Integration
|
|
165
|
-
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
# ADR-036: Enhanced Dependency Metadata (Aliasing, Type-Only, Re-Exports)
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
Accepted
|
|
5
|
-
|
|
6
|
-
## Kontext
|
|
7
|
-
|
|
8
|
-
Nach der erfolgreichen Implementierung der präzisen Symbol-Dependencies (ADR-030, ADR-033, ADR-034, ADR-035) wurden drei zusätzliche Edge-Cases identifiziert, die für eine robuste semantische Analyse wichtig sind:
|
|
9
|
-
|
|
10
|
-
1. **Aliasing / Default Imports / Namespace Imports**
|
|
11
|
-
2. **Type-only Imports**
|
|
12
|
-
3. **Re-Exports / Barrel-Pattern**
|
|
13
|
-
|
|
14
|
-
## Entscheidung
|
|
15
|
-
|
|
16
|
-
### 1. Aliasing-Unterstützung
|
|
17
|
-
|
|
18
|
-
Import-Aliase werden jetzt vollständig erfasst:
|
|
19
|
-
|
|
20
|
-
| Import-Typ | Beispiel | Gespeichert als |
|
|
21
|
-
|------------|----------|-----------------|
|
|
22
|
-
| Named Import | `import { X } from ...` | `"X"` |
|
|
23
|
-
| Alias Import | `import { X as Y } from ...` | `"X as Y"` |
|
|
24
|
-
| Default Import | `import X from ...` | `"default as X"` |
|
|
25
|
-
| Namespace Import | `import * as M from ...` | `"* as M"` |
|
|
26
|
-
|
|
27
|
-
**Implementierung** (`dependencies.ts`):
|
|
28
|
-
```typescript
|
|
29
|
-
const namedImports = imp.getNamedImports().map(ni => {
|
|
30
|
-
const name = ni.getName();
|
|
31
|
-
const alias = ni.getAliasNode()?.getText();
|
|
32
|
-
let result = name;
|
|
33
|
-
if (alias && alias !== name) {
|
|
34
|
-
result = `${name} as ${alias}`;
|
|
35
|
-
}
|
|
36
|
-
return result;
|
|
37
|
-
});
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### 2. Type-Only Imports
|
|
41
|
-
|
|
42
|
-
Type-only Imports werden mit `type` Prefix markiert:
|
|
43
|
-
|
|
44
|
-
| Import-Typ | Beispiel | Gespeichert als |
|
|
45
|
-
|------------|----------|-----------------|
|
|
46
|
-
| Type Import | `import type { X } from ...` | `"type X"` |
|
|
47
|
-
| Type Alias | `import type { X as Y } from ...` | `"type X as Y"` |
|
|
48
|
-
| Type Namespace | `import type * as M from ...` | `"type * as M"` |
|
|
49
|
-
| Mixed | `import { type X, Y } from ...` | `["type X", "Y"]` |
|
|
50
|
-
|
|
51
|
-
**Zusätzlich**: `isTypeOnly: true` Flag auf Dependency-Ebene wenn **alle** Imports type-only sind.
|
|
52
|
-
|
|
53
|
-
**Auswirkung auf Scoring**:
|
|
54
|
-
- Type-only Imports haben geringeren Coupling-Impact
|
|
55
|
-
- Empfohlener Weight-Faktor: `0.3` statt `1.0`
|
|
56
|
-
- Können bei Dead-Code-Detection ignoriert werden (werden zur Laufzeit entfernt)
|
|
57
|
-
|
|
58
|
-
### 3. Re-Exports / Barrel-Pattern
|
|
59
|
-
|
|
60
|
-
Re-Exports werden mit `isReexport: true` markiert:
|
|
61
|
-
|
|
62
|
-
```typescript
|
|
63
|
-
// Barrel-File: src/api/index.ts
|
|
64
|
-
export { GraphApi } from './graph-api';
|
|
65
|
-
export * from './models';
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Gespeichert als:
|
|
69
|
-
```json
|
|
70
|
-
{
|
|
71
|
-
"module": "./graph-api",
|
|
72
|
-
"symbols": ["GraphApi"],
|
|
73
|
-
"isReexport": true
|
|
74
|
-
}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**Semantische Bedeutung**:
|
|
78
|
-
- Re-Exports sind **Durchleitungen**, keine echten Dependencies
|
|
79
|
-
- Für Coupling-Analyse: Das Barrel-File ist nicht der echte Konsument
|
|
80
|
-
- Für Import-Path-Analyse: Kann zur Vereinfachung von Import-Pfaden genutzt werden
|
|
81
|
-
|
|
82
|
-
## Datenformat
|
|
83
|
-
|
|
84
|
-
### ModuleDependency (Parser-Output)
|
|
85
|
-
|
|
86
|
-
```typescript
|
|
87
|
-
interface ModuleDependency {
|
|
88
|
-
from: string; // Quell-Datei
|
|
89
|
-
to: string; // Ziel-Modul
|
|
90
|
-
type: 'import' | 'export' | 'require';
|
|
91
|
-
symbols?: string[]; // Format: "Name", "Name as Alias", "type Name", "* as Namespace"
|
|
92
|
-
isTypeOnly?: boolean; // true wenn alle Imports type-only
|
|
93
|
-
isReexport?: boolean; // true wenn Re-Export (Barrel-Pattern)
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### DependencyEntry (symbols.jsonl)
|
|
98
|
-
|
|
99
|
-
```typescript
|
|
100
|
-
interface DependencyEntry {
|
|
101
|
-
module: string;
|
|
102
|
-
symbols?: string[]; // Dedupliziert und sortiert
|
|
103
|
-
isTypeOnly?: boolean; // true wenn alle Imports type-only
|
|
104
|
-
isReexport?: boolean; // true wenn mindestens ein Re-Export
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## Beispiel-Output
|
|
109
|
-
|
|
110
|
-
```json
|
|
111
|
-
{
|
|
112
|
-
"symbol_id": "ts://src/extension.ts#activate(...)",
|
|
113
|
-
"dependencies": [
|
|
114
|
-
{
|
|
115
|
-
"module": "./config",
|
|
116
|
-
"symbols": ["type Config", "type Options"],
|
|
117
|
-
"isTypeOnly": true
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
"module": "./utils",
|
|
121
|
-
"symbols": ["X as Y", "Z"]
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
"module": "vscode",
|
|
125
|
-
"symbols": ["* as vscode"]
|
|
126
|
-
}
|
|
127
|
-
]
|
|
128
|
-
}
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
## Konsequenzen
|
|
132
|
-
|
|
133
|
-
### Positiv
|
|
134
|
-
- **Präzise Alias-Auflösung**: Welcher lokale Name wird verwendet?
|
|
135
|
-
- **Type-only Unterscheidung**: Ermöglicht differenzierte Coupling-Analyse
|
|
136
|
-
- **Barrel-Detection**: Identifiziert Re-Export-Ketten für bessere Graph-Analyse
|
|
137
|
-
- **Zukunftssicher**: Grundlage für Import-Optimierung und Dead-Code-Detection
|
|
138
|
-
|
|
139
|
-
### Negativ
|
|
140
|
-
- **Größere symbols.jsonl**: Zusätzliche Metadaten pro Dependency
|
|
141
|
-
- **Komplexere Parsing-Logik**: Mehr Edge-Cases zu behandeln
|
|
142
|
-
- **Downstream-Anpassungen**: Database-Plugin und Semantic-Brain müssen aktualisiert werden
|
|
143
|
-
|
|
144
|
-
## Empfohlene Scoring-Anpassungen
|
|
145
|
-
|
|
146
|
-
### CouplingScorer
|
|
147
|
-
|
|
148
|
-
```typescript
|
|
149
|
-
function calculateWeight(dep: DependencyEntry): number {
|
|
150
|
-
let weight = dep.symbols?.length ?? 1;
|
|
151
|
-
|
|
152
|
-
// Type-only Imports haben reduzierten Impact
|
|
153
|
-
if (dep.isTypeOnly) {
|
|
154
|
-
weight *= 0.3;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// Re-Exports sind Durchleitungen
|
|
158
|
-
if (dep.isReexport) {
|
|
159
|
-
weight *= 0.5;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
return weight;
|
|
163
|
-
}
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
### ImportanceScorer
|
|
167
|
-
|
|
168
|
-
```typescript
|
|
169
|
-
// Type-only Imports nicht für Importance zählen
|
|
170
|
-
const valueImports = deps.filter(d => !d.isTypeOnly);
|
|
171
|
-
const typeImports = deps.filter(d => d.isTypeOnly);
|
|
172
|
-
|
|
173
|
-
const importance = valueImports.length * 1.0 + typeImports.length * 0.2;
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
## Betroffene Dateien
|
|
177
|
-
|
|
178
|
-
- `src/parsers/dependencies.ts` - Dependency-Extraktion mit Aliasing, Type-Only, Re-Export Detection
|
|
179
|
-
- `src/cache/dependencies-cache.ts` - DependencyCacheEntry erweitert um `isTypeOnly` und `isReexport`
|
|
180
|
-
- `src/core/consolidation.ts` - Dependency-Union mit Metadaten-Merge
|
|
181
|
-
- `src/index/index.ts` - DependencyEntry Interface und Aggregation
|
|
182
|
-
- `src/cli/generate-cli.ts` - Full-Modus Cache-Bypass Fix
|
|
183
|
-
|
|
184
|
-
## Verwandte ADRs
|
|
185
|
-
|
|
186
|
-
- ADR-030: Dependency Import Symbol Information Loss
|
|
187
|
-
- ADR-033: Edge Metadata Precise Dependencies
|
|
188
|
-
- ADR-034: Postcompile Generate-CLI Integration
|
|
189
|
-
- ADR-035: Präzise Symbol-Dependencies Verifikation
|
|
190
|
-
|