@noyrax/documentation-system-plugin 1.0.4-beta.2 → 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/cli/generate-cli.js +11 -0
- package/out/cli/generate-cli.js.map +1 -1
- package/out/cli/scan-cli.js +6 -0
- package/out/cli/scan-cli.js.map +1 -1
- package/out/core/scanner.js +1 -0
- package/out/core/scanner.js.map +1 -1
- package/out/generator/system-metadata.js +202 -0
- package/out/generator/system-metadata.js.map +1 -0
- package/out/index/index.js +14 -0
- package/out/index/index.js.map +1 -1
- package/out/parsers/ts-js.js +208 -7
- package/out/parsers/ts-js.js.map +1 -1
- package/package.json +9 -2
- 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 -40
- 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 -110
- package/docs/modules/mcp__src__tools__impact.ts.md +0 -127
- 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 -131
- 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 -101
- 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 -141
- 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 -97
- 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 -99
- 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 -29
- 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/documentation.config.schema.json +0 -77
- package/noyrax-5d-database-plugin-0.1.8.tgz +0 -0
- package/noyrax-documentation-system-plugin-1.0.4-beta.2.tgz +0 -0
- package/publish.ps1 +0 -21
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# 006 – Parser: Präzisere Typableitung für Variablen (v1.0.3)
|
|
2
|
-
|
|
3
|
-
- Status: Accepted
|
|
4
|
-
- Datum: 2025-10-02
|
|
5
|
-
- Version: 1.0.3
|
|
6
|
-
|
|
7
|
-
## Kontext
|
|
8
|
-
In generierten Modul-Dokumentationen wurden Variablen-Typen teils als `any` oder `{}` ausgewiesen, obwohl der Code präzisere Typen wie `Set<string>` oder `string[]` definiert (z.B. in `src/core/scanner.ts`: `DEFAULT_EXCLUDES`, `BACKUP_DIR_NAMES`, `BACKUP_FILE_SUFFIXES`).
|
|
9
|
-
|
|
10
|
-
## Entscheidung
|
|
11
|
-
Der TypeScript-Parser (`TsJsParser`) liest Variablen-Typen nun bevorzugt aus dem `TypeNode` und fällt nur bei Bedarf auf `getType()` zurück. Der Typstring wird deterministisch normalisiert.
|
|
12
|
-
|
|
13
|
-
## Änderungen
|
|
14
|
-
- Datei `src/parsers/ts-js.ts`:
|
|
15
|
-
- Für Top-Level-Variablen: `decl.getTypeNode()?.getText()` → Normalisierung → Fallback `decl.getType().getText()`.
|
|
16
|
-
- Einheitliche Normalisierung von Typstrings (Whitespace, import("...").-Präfixe).
|
|
17
|
-
|
|
18
|
-
## Auswirkungen
|
|
19
|
-
- Doku zeigt korrekte Typen, z.B.:
|
|
20
|
-
- `BACKUP_DIR_NAMES: Set<string>`
|
|
21
|
-
- `BACKUP_FILE_SUFFIXES: string[]`
|
|
22
|
-
- `DEFAULT_EXCLUDES: Set<string>`
|
|
23
|
-
- Erhöhte Qualität und Nachvollziehbarkeit der generierten Dokumentation.
|
|
24
|
-
|
|
25
|
-
## Rollout
|
|
26
|
-
- Bestandteil der Version 1.0.3 (VSIX).
|
|
27
|
-
- Nach Update: „Docs: Generate Documentation“ ausführen.
|
|
28
|
-
|
|
29
|
-
## Risiken
|
|
30
|
-
- Keine funktionalen Risiken. Minimal erhöhte String-Sensitivität bei exotischen Typen.
|
|
31
|
-
|
|
32
|
-
## Alternativen
|
|
33
|
-
- Beibehalten der bisherigen (ungenaueren) Typableitung: verworfen zugunsten präziser Doku.
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# 007 – TS-Parser lädt Standard-Libs für präzise Typinferenz (v1.0.2)
|
|
2
|
-
|
|
3
|
-
- Status: Accepted
|
|
4
|
-
- Datum: 2025-10-02
|
|
5
|
-
- Version: 1.0.2
|
|
6
|
-
|
|
7
|
-
## Kontext
|
|
8
|
-
Variablen-Typen wurden in der Doku teils als `any` oder `{}` dargestellt, obwohl der Code präzise Typen nutzt (z.B. `Set<string>`, `string[]`). Ohne geladene Standard-Libs war die Typinferenz des TypeScript-Checkers unvollständig.
|
|
9
|
-
|
|
10
|
-
## Entscheidung
|
|
11
|
-
Der `TsJsParser` lädt nun Standardbibliotheken und führt keine Dependency-Resolution-Skippings mehr durch. Das aktiviert eine vollständige Typinferenz für JS/TS (inkl. `Set`, `Map`, Promise, Arrays).
|
|
12
|
-
|
|
13
|
-
## Änderungen
|
|
14
|
-
- `src/parsers/ts-js.ts` (Projekt-Setup):
|
|
15
|
-
- `skipFileDependencyResolution: false`
|
|
16
|
-
- `skipLoadingLibFiles: false`
|
|
17
|
-
- `compilerOptions.lib: ["ES2020"]`
|
|
18
|
-
|
|
19
|
-
## Auswirkungen
|
|
20
|
-
- Doku spiegelt exakte Variablen-Typen wider (z.B. `Set<string>`, `string[]`).
|
|
21
|
-
- Validator kann Variablen-Signaturen belastbar abgleichen.
|
|
22
|
-
|
|
23
|
-
## Rollout
|
|
24
|
-
- Bestandteil der v1.0.2 VSIX-Neuinstallation.
|
|
25
|
-
- Nach Installation: „Docs: Generate Documentation“, dann „Docs: Validate Documentation“.
|
|
26
|
-
|
|
27
|
-
## Risiken
|
|
28
|
-
- Leicht längere Parse-Zeit durch geladene Libs; im MVP tolerierbar.
|
|
29
|
-
|
|
30
|
-
## Alternativen
|
|
31
|
-
- Heuristische Ableitung aus Initializern: verworfen zugunsten Checker-basierter, robuster Typen.
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
# ADR 008: Dependencies-Cache für additive Generierung (Phase 1.1)
|
|
2
|
-
|
|
3
|
-
**Status:** Implementiert
|
|
4
|
-
**Datum:** 2025-10-06
|
|
5
|
-
**Kontext:** ADDITIVE_DOCUMENTATION_PLAN.md, Abschnitt 7, Phase 1
|
|
6
|
-
|
|
7
|
-
## Kontext und Problemstellung
|
|
8
|
-
|
|
9
|
-
Beim zweiten Generierungslauf werden unveränderte Dateien durch AST-Cache und Git-Diff-Optimierung übersprungen. Diese Dateien liefern keine Dependencies im aktuellen Lauf, wodurch `allDependencies` nur die Dependencies der aktuell geparsten Dateien enthält.
|
|
10
|
-
|
|
11
|
-
**Resultat:**
|
|
12
|
-
- `docs/system/DEPENDENCY_GRAPH.md` wird aus reduziertem Snapshot neu geschrieben
|
|
13
|
-
- `docs/system/DEPENDENCIES.md` wird aus reduziertem Snapshot neu geschrieben
|
|
14
|
-
- Artefakte "schrumpfen" zwischen Läufen
|
|
15
|
-
|
|
16
|
-
**Betroffene Code-Stelle:**
|
|
17
|
-
```typescript
|
|
18
|
-
// src/extension.ts:139-174
|
|
19
|
-
const unchanged = astMap.get(f.repositoryRelativePath) === fileHash;
|
|
20
|
-
if (unchanged) {
|
|
21
|
-
return { symbols: [], dependencies: [] }; // ⚠️ Dependencies fehlen!
|
|
22
|
-
}
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Entscheidung
|
|
26
|
-
|
|
27
|
-
Einführung eines persistenten **Dependencies-Cache** analog zu den bestehenden Cache-Modulen (`ast-cache.ts`, `signature-cache.ts`, `output-cache.ts`).
|
|
28
|
-
|
|
29
|
-
### Neues Modul: `src/cache/dependencies-cache.ts`
|
|
30
|
-
|
|
31
|
-
**Schema:**
|
|
32
|
-
```typescript
|
|
33
|
-
interface DependenciesCacheData {
|
|
34
|
-
version: 1;
|
|
35
|
-
entries: DependencyCacheEntry[];
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
interface DependencyCacheEntry {
|
|
39
|
-
from: string; // repo-relative path
|
|
40
|
-
to: string; // import path
|
|
41
|
-
type: 'import' | 'export' | 'require';
|
|
42
|
-
symbols?: string[]; // sorted
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**Funktionen:**
|
|
47
|
-
- `loadDependenciesCache(file: string): DependenciesCacheData | null`
|
|
48
|
-
- `saveDependenciesCache(dir: string, data: DependenciesCacheData): void`
|
|
49
|
-
|
|
50
|
-
**Datei:** `docs/.cache/dependencies.json`
|
|
51
|
-
|
|
52
|
-
**Sortierung (deterministisch):**
|
|
53
|
-
1. `from` (ascending)
|
|
54
|
-
2. `to` (ascending)
|
|
55
|
-
3. `type` (ascending)
|
|
56
|
-
4. `symbols` (ascending, joined)
|
|
57
|
-
|
|
58
|
-
### Design-Konsistenz mit bestehenden Cache-Modulen
|
|
59
|
-
|
|
60
|
-
Das Modul folgt exakt dem Muster von:
|
|
61
|
-
- `src/cache/ast-cache.ts` (Schema, load/save)
|
|
62
|
-
- `src/cache/signature-cache.ts` (Versionierung, null-Fallback)
|
|
63
|
-
- `src/cache/output-cache.ts` (Sortierung, deterministisches JSON)
|
|
64
|
-
|
|
65
|
-
**Gelesene Abhängigkeiten aus `docs/system/DEPENDENCIES.md`:**
|
|
66
|
-
- `fs` (existsSync, readFileSync, writeFileSync, mkdirSync)
|
|
67
|
-
- `path` (join)
|
|
68
|
-
- Keine zusätzlichen Dependencies
|
|
69
|
-
|
|
70
|
-
## Auswirkungen
|
|
71
|
-
|
|
72
|
-
### Positiv
|
|
73
|
-
- ✅ **Keine schrumpfenden Abhängigkeiten:** Dependencies werden persistent gehalten und in Union mit neuen Kanten gemerged (Phase 1.2)
|
|
74
|
-
- ✅ **Deterministisch:** Sortierung garantiert identische Ausgabe bei gleicher Eingabe
|
|
75
|
-
- ✅ **Konsistent:** Folgt etabliertem Cache-Muster; keine neuen Paradigmen
|
|
76
|
-
- ✅ **Robust:** null-Fallback bei fehlendem/korruptem Cache; Vollparse greift
|
|
77
|
-
|
|
78
|
-
### Neutral
|
|
79
|
-
- Cache-Datei wird zusätzlich geschrieben (~1-10 KB je nach Projekt)
|
|
80
|
-
- Keine Performance-Verschlechterung; nur I/O beim Laden/Schreiben
|
|
81
|
-
|
|
82
|
-
### Risiken und Mitigation
|
|
83
|
-
- **Risiko:** Cache-Korruption führt zu fehlerhaftem Merge
|
|
84
|
-
- **Mitigation:** Strikte Validierung (`version === 1`, `Array.isArray(entries)`); null-Fallback erzwingt Vollparse
|
|
85
|
-
- **Risiko:** Cache wächst unbegrenzt bei großen Repos
|
|
86
|
-
- **Mitigation:** Gelöschte Dateien werden in Phase 1.2 (consolidation) aus dem Cache entfernt
|
|
87
|
-
|
|
88
|
-
## Alternativen
|
|
89
|
-
|
|
90
|
-
### Alternative 1: Dependencies aus bestehendem Index rekonstruieren
|
|
91
|
-
- `docs/index/symbols.jsonl` enthält bereits Dependencies pro Datei
|
|
92
|
-
- **Verworfen:** Index ist Symbol-zentriert; nicht ideal für Dependency-Rekonstruktion; separater Cache ist klarer
|
|
93
|
-
|
|
94
|
-
### Alternative 2: Dependencies bei jedem Lauf neu extrahieren (kein Cache)
|
|
95
|
-
- Vollparse aller Dateien, auch unveränderter
|
|
96
|
-
- **Verworfen:** Performance-Einbußen; widerspricht inkrementeller Strategie
|
|
97
|
-
|
|
98
|
-
### Alternative 3: Dependencies in AST-Cache integrieren
|
|
99
|
-
- `ast-cache.json` erweitern um Dependencies
|
|
100
|
-
- **Verworfen:** Mischt Verantwortlichkeiten; AST-Hash ist Änderungs-Detektor, nicht Daten-Cache
|
|
101
|
-
|
|
102
|
-
## Nächste Schritte
|
|
103
|
-
|
|
104
|
-
1. ✅ **Phase 1.1 abgeschlossen:** `dependencies-cache.ts` erstellt
|
|
105
|
-
2. ⏭️ **Phase 1.2:** `src/core/consolidation.ts` erstellen mit `buildDependenciesUnion()`
|
|
106
|
-
3. ⏭️ **Phase 1.3:** Integration in `src/extension.ts`
|
|
107
|
-
4. ⏭️ **Phase 1.4:** Unit-Tests und Zweilauf-Test
|
|
108
|
-
|
|
109
|
-
## Referenzen
|
|
110
|
-
|
|
111
|
-
- **Plan:** `ADDITIVE_DOCUMENTATION_PLAN.md`, Abschnitt 5.1, 7 (Phase 1)
|
|
112
|
-
- **Bestehende Cache-Module:**
|
|
113
|
-
- `docs/modules/src__cache__ast-cache.ts.md`
|
|
114
|
-
- `docs/modules/src__cache__signature-cache.ts.md`
|
|
115
|
-
- `docs/modules/src__cache__output-cache.ts.md`
|
|
116
|
-
- **Dependencies-Dokumentation:** `docs/system/DEPENDENCIES.md`, Zeilen 14-33
|
|
117
|
-
- **Cursor-Regeln:** `.cursor/rules/architecture-guardrails.mdc`, Abschnitt 0 (Wissensbasis)
|
|
118
|
-
|
|
119
|
-
## Implementierung
|
|
120
|
-
|
|
121
|
-
**Datei:** `src/cache/dependencies-cache.ts`
|
|
122
|
-
|
|
123
|
-
**Zeilen Code:** 61
|
|
124
|
-
**Abhängigkeiten:** `fs`, `path` (Standard-Module)
|
|
125
|
-
**Exports:** 3 (2 Interfaces, 2 Funktionen)
|
|
126
|
-
|
|
127
|
-
**Qualität:**
|
|
128
|
-
- ✅ Keine Linter-Fehler
|
|
129
|
-
- ✅ Strikte Typisierung
|
|
130
|
-
- ✅ Deterministisch (sortierte Ausgabe)
|
|
131
|
-
- ✅ Robustheit (try-catch, null-Fallback)
|
|
132
|
-
|
|
133
|
-
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
# ADR 009: Union-Logik für Dependencies und Symbole (Phase 1.2)
|
|
2
|
-
|
|
3
|
-
**Status:** Implementiert
|
|
4
|
-
**Datum:** 2025-10-06
|
|
5
|
-
**Kontext:** ADDITIVE_DOCUMENTATION_PLAN.md, Abschnitt 7, Phase 1, Aufgabe 2
|
|
6
|
-
|
|
7
|
-
## Kontext und Problemstellung
|
|
8
|
-
|
|
9
|
-
Nach Einführung des Dependencies-Cache (ADR 008) benötigen wir die **Union-Bildung**, um aus neuen und gecachten Dependencies bzw. Symbolen konsolidierte Gesamtmengen zu erzeugen.
|
|
10
|
-
|
|
11
|
-
**Problem:**
|
|
12
|
-
- Unveränderte Dateien liefern im aktuellen Lauf keine Dependencies/Symbole
|
|
13
|
-
- Systemartefakte werden aus reduziertem Snapshot neu geschrieben
|
|
14
|
-
- Index schrumpft zwischen Läufen
|
|
15
|
-
|
|
16
|
-
**Ziel:**
|
|
17
|
-
- Dependencies = Union aus "neu extrahiert" ∪ "gecachte"
|
|
18
|
-
- Symbole = Union aus "neu geparst" ∪ "aus Index"
|
|
19
|
-
- Nie "schrumpfen", außer bei Git-Deletion
|
|
20
|
-
|
|
21
|
-
## Entscheidung
|
|
22
|
-
|
|
23
|
-
Neues Modul `src/core/consolidation.ts` mit zwei Hauptfunktionen:
|
|
24
|
-
|
|
25
|
-
### 1. `buildDependenciesUnion()`
|
|
26
|
-
|
|
27
|
-
**Signatur:**
|
|
28
|
-
```typescript
|
|
29
|
-
buildDependenciesUnion(
|
|
30
|
-
dependenciesNew: ModuleDependency[],
|
|
31
|
-
dependenciesCachePrev: DependencyCacheEntry[],
|
|
32
|
-
parsedFiles: Set<string>,
|
|
33
|
-
deletedFiles: Set<string>
|
|
34
|
-
): DependencyCacheEntry[]
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
**Algorithmus (gemäß ADDITIVE_DOCUMENTATION_PLAN.md, Abschnitt 6.2):**
|
|
38
|
-
1. Für geparste Dateien: neue Dependencies übernehmen
|
|
39
|
-
2. Für nicht-geparste, nicht-gelöschte Dateien: alte Dependencies aus Cache behalten
|
|
40
|
-
3. Deduplizieren nach Schlüssel `(from, to, type, symbols_sorted)`
|
|
41
|
-
4. Sortieren: `from` → `to` → `type` → `symbols`
|
|
42
|
-
|
|
43
|
-
**Hilfsfunktionen (Cognitive Complexity reduziert):**
|
|
44
|
-
- `buildPreviousDependenciesMap()`: Map aus Cache-Einträgen
|
|
45
|
-
- `buildUnionMap()`: Union-Bildung
|
|
46
|
-
- `deduplicateAndSortDependencies()`: Deduplikation und Sortierung
|
|
47
|
-
|
|
48
|
-
### 2. `buildSymbolsUnion()`
|
|
49
|
-
|
|
50
|
-
**Signatur:**
|
|
51
|
-
```typescript
|
|
52
|
-
buildSymbolsUnion(
|
|
53
|
-
symbolsNew: ParsedSymbol[],
|
|
54
|
-
symbolsPrev: ParsedSymbol[],
|
|
55
|
-
parsedFiles: Set<string>,
|
|
56
|
-
deletedFiles: Set<string>
|
|
57
|
-
): ParsedSymbol[]
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
**Algorithmus (gemäß ADDITIVE_DOCUMENTATION_PLAN.md, Abschnitt 6.3):**
|
|
61
|
-
1. Für geparste Dateien: neue Symbole übernehmen
|
|
62
|
-
2. Für nicht-geparste, nicht-gelöschte Dateien: alte Symbole behalten
|
|
63
|
-
3. Identifikation via `makeStableSymbolId()`
|
|
64
|
-
|
|
65
|
-
## Gelesene Abhängigkeiten aus Dokumentation
|
|
66
|
-
|
|
67
|
-
**docs/modules/src__core__symbols.ts.md:**
|
|
68
|
-
- `makeStableSymbolId(symbol: ParsedSymbol): string` - für Symbol-Identifikation
|
|
69
|
-
|
|
70
|
-
**docs/modules/src__parsers__types.ts.md:**
|
|
71
|
-
- `interface ParsedSymbol` - Symbol-Struktur
|
|
72
|
-
- `filePath`, `fullyQualifiedName`, `kind`, `signature`
|
|
73
|
-
|
|
74
|
-
**docs/modules/src__parsers__dependencies.ts.md:**
|
|
75
|
-
- `interface ModuleDependency` - Dependency-Struktur
|
|
76
|
-
- `from`, `to`, `type`, `symbols`
|
|
77
|
-
|
|
78
|
-
**docs/system/DEPENDENCIES.md:**
|
|
79
|
-
- Bestehende Imports: `crypto`, `fs`, `path` (aus Cache-Modulen)
|
|
80
|
-
- Keine zirkulären Abhängigkeiten: core → parsers → types
|
|
81
|
-
|
|
82
|
-
## Auswirkungen
|
|
83
|
-
|
|
84
|
-
### Positiv
|
|
85
|
-
- ✅ **Union-Bildung deterministisch:** Gleiche Eingabe → gleiche Ausgabe
|
|
86
|
-
- ✅ **Keine schrumpfenden Artefakte:** Dependencies/Symbole bleiben erhalten
|
|
87
|
-
- ✅ **Cognitive Complexity reduziert:** Hauptfunktionen < 15, Helper-Funktionen extrahiert
|
|
88
|
-
- ✅ **Linter-konform:** Alle Warnungen behoben (localeCompare für sort)
|
|
89
|
-
- ✅ **Klare Verantwortlichkeiten:** Ein Modul für Union-Bildung
|
|
90
|
-
|
|
91
|
-
### Neutral
|
|
92
|
-
- Zusätzliche Funktion in `src/core/` (bestehende Struktur)
|
|
93
|
-
- ~155 Zeilen Code
|
|
94
|
-
|
|
95
|
-
### Risiken und Mitigation
|
|
96
|
-
- **Risiko:** Performance bei großen Repos (viele Symbole/Dependencies)
|
|
97
|
-
- **Mitigation:** Map-basierte Deduplikation (O(n) statt O(n²)); deterministisches Sortieren nur einmal am Ende
|
|
98
|
-
- **Risiko:** Fehlerhafte Union bei korrupten Daten
|
|
99
|
-
- **Mitigation:** null-Fallbacks in Phase 1.3 (extension.ts); leere Arrays als Default
|
|
100
|
-
|
|
101
|
-
## Design-Entscheidungen
|
|
102
|
-
|
|
103
|
-
### Alternative 1: Union-Logik direkt in extension.ts
|
|
104
|
-
- **Verworfen:** Verletzt Single Responsibility; extension.ts wird zu groß
|
|
105
|
-
|
|
106
|
-
### Alternative 2: Union in cache-Modulen implementieren
|
|
107
|
-
- **Verworfen:** Cache-Module sind nur für Persistenz zuständig; Union ist Datenverarbeitung
|
|
108
|
-
|
|
109
|
-
### Alternative 3: Separate Module für Dependencies-Union und Symbols-Union
|
|
110
|
-
- **Verworfen:** Beide Funktionen folgen gleichem Muster; Konsolidierung in einem Modul ist kohärenter
|
|
111
|
-
|
|
112
|
-
## Nächste Schritte
|
|
113
|
-
|
|
114
|
-
1. ✅ **Phase 1.1 abgeschlossen:** `dependencies-cache.ts`
|
|
115
|
-
2. ✅ **Phase 1.2 abgeschlossen:** `consolidation.ts`
|
|
116
|
-
3. ⏭️ **Phase 1.3:** Integration in `src/extension.ts` (Union-Logik nach Parse, vor Artefakt-Generierung)
|
|
117
|
-
4. ⏭️ **Phase 1.4:** Unit-Tests für `buildDependenciesUnion()` und `buildSymbolsUnion()`
|
|
118
|
-
|
|
119
|
-
## Referenzen
|
|
120
|
-
|
|
121
|
-
- **Plan:** `ADDITIVE_DOCUMENTATION_PLAN.md`, Abschnitt 6.2-6.3, 7 (Phase 1)
|
|
122
|
-
- **ADR 008:** Dependencies-Cache-Einführung
|
|
123
|
-
- **Dokumentation:**
|
|
124
|
-
- `docs/modules/src__core__symbols.ts.md`
|
|
125
|
-
- `docs/modules/src__parsers__types.ts.md`
|
|
126
|
-
- `docs/modules/src__parsers__dependencies.ts.md`
|
|
127
|
-
- `docs/system/DEPENDENCIES.md`
|
|
128
|
-
- **Cursor-Regeln:** `.cursor/rules/architecture-guardrails.mdc`, Abschnitt 0
|
|
129
|
-
|
|
130
|
-
## Implementierung
|
|
131
|
-
|
|
132
|
-
**Datei:** `src/core/consolidation.ts`
|
|
133
|
-
|
|
134
|
-
**Zeilen Code:** 155
|
|
135
|
-
**Exports:** 2 öffentliche Funktionen, 3 private Helper
|
|
136
|
-
**Abhängigkeiten:**
|
|
137
|
-
- `../cache/dependencies-cache` (DependencyCacheEntry)
|
|
138
|
-
- `../parsers/dependencies` (ModuleDependency)
|
|
139
|
-
- `../parsers/types` (ParsedSymbol)
|
|
140
|
-
- `./symbols` (makeStableSymbolId)
|
|
141
|
-
|
|
142
|
-
**Qualität:**
|
|
143
|
-
- ✅ Keine Linter-Fehler
|
|
144
|
-
- ✅ Cognitive Complexity < 15 (durch Helper-Funktionen)
|
|
145
|
-
- ✅ Strikte Typisierung
|
|
146
|
-
- ✅ Deterministisch (sortiert mit localeCompare)
|
|
147
|
-
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
# ADR 010: Integration Union-Logik in extension.ts (Phase 1.3 + Phase 2)
|
|
2
|
-
|
|
3
|
-
**Status:** Implementiert
|
|
4
|
-
**Datum:** 2025-10-06
|
|
5
|
-
**Kontext:** ADDITIVE_DOCUMENTATION_PLAN.md, Abschnitt 7, Phase 1 Aufgabe 3 + Phase 2
|
|
6
|
-
|
|
7
|
-
## Kontext und Problemstellung
|
|
8
|
-
|
|
9
|
-
Nach Einführung von Dependencies-Cache (ADR 008) und Union-Logik (ADR 009) muss die Pipeline in `src/extension.ts` angepasst werden:
|
|
10
|
-
|
|
11
|
-
**Bisheriger Ablauf:**
|
|
12
|
-
1. Parse → `allSymbols`, `allDependencies`
|
|
13
|
-
2. Generierung/Index/System-Docs direkt aus `allSymbols`/`allDependencies`
|
|
14
|
-
3. **Problem:** Unveränderte Dateien liefern keine Dependencies/Symbole → Artefakte schrumpfen
|
|
15
|
-
|
|
16
|
-
**Gewünschter Ablauf (gemäß Plan):**
|
|
17
|
-
1. Parse → `allSymbols`, `allDependencies` (nur geparste Dateien)
|
|
18
|
-
2. **Union-Bildung:** Merge mit Cache/Index → `symbolsUnion`, `dependenciesUnion`
|
|
19
|
-
3. Generierung/Index/System-Docs aus `symbolsUnion`/`dependenciesUnion`
|
|
20
|
-
4. Dependencies-Cache speichern
|
|
21
|
-
|
|
22
|
-
## Entscheidung
|
|
23
|
-
|
|
24
|
-
### Integration in `src/extension.ts` nach Zeile 250 (nach Fallbacks)
|
|
25
|
-
|
|
26
|
-
**Neue Imports:**
|
|
27
|
-
```typescript
|
|
28
|
-
import { loadDependenciesCache, saveDependenciesCache } from './cache/dependencies-cache';
|
|
29
|
-
import { buildDependenciesUnion, buildSymbolsUnion } from './core/consolidation';
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
**Union-Bildung (Zeilen 252-310):**
|
|
33
|
-
|
|
34
|
-
1. **Dependencies-Union:**
|
|
35
|
-
```typescript
|
|
36
|
-
const depCacheFile = path.join(cacheDir, 'dependencies.json');
|
|
37
|
-
const depCachePrev = loadDependenciesCache(depCacheFile);
|
|
38
|
-
const parsedFiles = new Set(scanned.map(f => f.repositoryRelativePath));
|
|
39
|
-
const deletedFilesFromGit = new Set<string>(); // Für jetzt leer
|
|
40
|
-
|
|
41
|
-
const dependenciesUnion = buildDependenciesUnion(
|
|
42
|
-
allDependencies,
|
|
43
|
-
depCachePrev?.entries ?? [],
|
|
44
|
-
parsedFiles,
|
|
45
|
-
deletedFilesFromGit
|
|
46
|
-
);
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
2. **Symbol-Union:**
|
|
50
|
-
```typescript
|
|
51
|
-
// Index laden und zu ParsedSymbol[] rekonstruieren
|
|
52
|
-
const indexFile = path.join(workspaceRoot, config.outputPath, 'index', 'symbols.jsonl');
|
|
53
|
-
let symbolsPrev: ParsedSymbol[] = []; // Aus Index rekonstruiert
|
|
54
|
-
|
|
55
|
-
const symbolsUnion = buildSymbolsUnion(
|
|
56
|
-
allSymbols,
|
|
57
|
-
symbolsPrev,
|
|
58
|
-
parsedFiles,
|
|
59
|
-
deletedFilesFromGit
|
|
60
|
-
);
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**Verwendung der Union (ab Zeile 316):**
|
|
64
|
-
- `generatePerFileDocs(symbolsUnion)` statt `allSymbols`
|
|
65
|
-
- `buildIndexFromSymbols(symbolsUnion, dependenciesUnion)` statt `allSymbols, allDependencies`
|
|
66
|
-
- `generateMermaidGraph(dependenciesUnion)` statt `allDependencies`
|
|
67
|
-
- `generateDependencyOverview(dependenciesUnion)` statt `allDependencies`
|
|
68
|
-
- `computeCacheEntries(symbolsUnion)` statt `allSymbols`
|
|
69
|
-
|
|
70
|
-
**Dependencies-Cache speichern (Zeile 354):**
|
|
71
|
-
```typescript
|
|
72
|
-
if (dependenciesUnion.length > 0) {
|
|
73
|
-
saveDependenciesCache(cacheDir, { version: 1, entries: dependenciesUnion });
|
|
74
|
-
}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## Gelesene Abhängigkeiten aus Dokumentation
|
|
78
|
-
|
|
79
|
-
**docs/modules/src__extension.ts.md:**
|
|
80
|
-
- `generateDocumentationTs()` - Hauptfunktion für Generierung
|
|
81
|
-
|
|
82
|
-
**docs/modules/src__core__git.ts.md:**
|
|
83
|
-
- `getChangedFiles(repoRoot: string): Set<string> | null` - Git-Diff
|
|
84
|
-
|
|
85
|
-
**docs/modules/src__index__index.ts.md:**
|
|
86
|
-
- `buildIndexFromSymbols(symbols, dependencies)` - Index-Erzeugung
|
|
87
|
-
- `writeJsonlIndex(rows, outFile)` - Index schreiben
|
|
88
|
-
|
|
89
|
-
**docs/system/DEPENDENCIES.md:**
|
|
90
|
-
- Bestätigung: keine zirkulären Abhängigkeiten durch neue Imports
|
|
91
|
-
|
|
92
|
-
## Auswirkungen
|
|
93
|
-
|
|
94
|
-
### Positiv
|
|
95
|
-
- ✅ **Phase 1 komplett abgeschlossen:** Dependencies-Cache, Union-Logik, Integration
|
|
96
|
-
- ✅ **Phase 2 komplett abgeschlossen:** Systemartefakte und Index aus Union
|
|
97
|
-
- ✅ **Keine schrumpfenden Artefakte mehr:** Dependencies/Symbole bleiben erhalten
|
|
98
|
-
- ✅ **Logging transparent:** `[union]` zeigt neu/gecacht/Union-Anzahl
|
|
99
|
-
- ✅ **Rückwärtskompatibel:** Bei fehlendem Cache/Index funktioniert Vollparse
|
|
100
|
-
- ✅ **Deterministisch:** Union-Funktionen garantieren stabile Sortierung
|
|
101
|
-
|
|
102
|
-
### Neutral
|
|
103
|
-
- ~60 Zeilen zusätzlicher Code in `extension.ts`
|
|
104
|
-
- Dependencies-Cache wird zusätzlich geschrieben (nach Systemartefakten)
|
|
105
|
-
|
|
106
|
-
### Trade-offs
|
|
107
|
-
- **Index-Rekonstruktion vereinfacht:**
|
|
108
|
-
- Aus `symbols.jsonl` wird `ParsedSymbol` rekonstruiert
|
|
109
|
-
- `language` fehlt im Index → `'unknown'`
|
|
110
|
-
- `signature` wird vereinfacht (nur Name, keine Parameter/ReturnType)
|
|
111
|
-
- **Mitigation:** Funktioniert für Union-Bildung (Key ist `symbol_id` oder `(path, kind, name)`)
|
|
112
|
-
- **Zukünftige Verbesserung:** Vollständigere Signatur-Persistierung im Index (optional)
|
|
113
|
-
|
|
114
|
-
## Risiken und Mitigation
|
|
115
|
-
|
|
116
|
-
- **Risiko:** Index-Rekonstruktion zu vereinfacht für korrekte Union
|
|
117
|
-
- **Mitigation:** `makeStableSymbolId()` nutzt Pfad+Name+Kind; ausreichend für Deduplikation
|
|
118
|
-
- **Test:** Phase 1.4 wird Zweilauf-Test durchführen
|
|
119
|
-
|
|
120
|
-
- **Risiko:** Git-Deletion-Tracking noch nicht implementiert
|
|
121
|
-
- **Status:** `deletedFilesFromGit` ist leer; kein Problem, da nicht-geparste Dateien einfach beibehalten werden
|
|
122
|
-
- **Zukünftige Erweiterung:** Git-Status auswerten für explizite Deletion
|
|
123
|
-
|
|
124
|
-
## Design-Entscheidungen
|
|
125
|
-
|
|
126
|
-
### Alternative 1: Union vor den Fallbacks
|
|
127
|
-
- **Verworfen:** Fallbacks könnten Union-Daten überschreiben; unsauber
|
|
128
|
-
|
|
129
|
-
### Alternative 2: Dependencies direkt in Index persistieren (kein separater Cache)
|
|
130
|
-
- **Verworfen:** Index ist Symbol-zentriert; separater Dependencies-Cache ist klarer (ADR 009)
|
|
131
|
-
|
|
132
|
-
### Alternative 3: Vollständige Signatur-Rekonstruktion aus Index
|
|
133
|
-
- **Verworfen:** Index enthält nicht alle Signatur-Details; würde Breaking Change erfordern
|
|
134
|
-
- **Gewählt:** Vereinfachte Rekonstruktion reicht für Union; stabil via `symbol_id`
|
|
135
|
-
|
|
136
|
-
## Nächste Schritte
|
|
137
|
-
|
|
138
|
-
1. ✅ **Phase 1.1-1.3 + Phase 2 abgeschlossen**
|
|
139
|
-
2. ⏭️ **Phase 1.4:** Unit-Tests für dependencies-cache, consolidation; Zweilauf-Test
|
|
140
|
-
3. ⏭️ **Phase 3:** Modul-Dokumente mit Änderungs-Kommentaren
|
|
141
|
-
|
|
142
|
-
## Referenzen
|
|
143
|
-
|
|
144
|
-
- **Plan:** `ADDITIVE_DOCUMENTATION_PLAN.md`, Abschnitt 6.2-6.5, 7 (Phase 1.3 + Phase 2)
|
|
145
|
-
- **ADR 008:** Dependencies-Cache
|
|
146
|
-
- **ADR 009:** Union-Logik (Consolidation)
|
|
147
|
-
- **Dokumentation:**
|
|
148
|
-
- `docs/modules/src__extension.ts.md`
|
|
149
|
-
- `docs/modules/src__core__git.ts.md`
|
|
150
|
-
- `docs/modules/src__index__index.ts.md`
|
|
151
|
-
- `docs/system/DEPENDENCIES.md`
|
|
152
|
-
- **Cursor-Regeln:** `.cursor/rules/architecture-guardrails.mdc`, Abschnitt 0
|
|
153
|
-
|
|
154
|
-
## Implementierung
|
|
155
|
-
|
|
156
|
-
**Datei:** `src/extension.ts`
|
|
157
|
-
|
|
158
|
-
**Geänderte Zeilen:** ~80 (Union-Block + Verwendungen)
|
|
159
|
-
**Neue Imports:** 2 (dependencies-cache, consolidation)
|
|
160
|
-
**Neue Variablen:** `dependenciesUnion`, `symbolsUnion`, `parsedFiles`, `deletedFilesFromGit`, `symbolsPrev`
|
|
161
|
-
|
|
162
|
-
**Qualität:**
|
|
163
|
-
- ✅ Linter-Fehler minimal (vorhandene Cognitive Complexity unverändert; unused imports entfernt)
|
|
164
|
-
- ✅ Rückwärtskompatibel (Fallback auf leere Arrays)
|
|
165
|
-
- ✅ Logging transparent
|
|
166
|
-
- ✅ Dependencies-Cache deterministisch gespeichert
|
|
167
|
-
|
|
168
|
-
**Logging-Output (Beispiel):**
|
|
169
|
-
```
|
|
170
|
-
[union] Dependencies: 12 neu + 458 gecacht → 470 Union
|
|
171
|
-
[union] Symbole: 45 neu + 210 gecacht → 255 Union
|
|
172
|
-
[generate] Gescannt: 15, Symbole: 255, Dependencies: 470, Dateien: 29, Dauer: 1234ms
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|