@noyrax/5d-database-plugin 0.1.6 → 0.1.8-beta.1

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 (52) hide show
  1. package/MCP_SERVER_SETUP.md +14 -0
  2. package/README.md +49 -3
  3. package/SETUP_NEW_PROJECT.md +245 -14
  4. package/out/cli/merge-workspaces-cli.d.ts +3 -0
  5. package/out/cli/merge-workspaces-cli.d.ts.map +1 -0
  6. package/out/cli/merge-workspaces-cli.js +199 -0
  7. package/out/cli/merge-workspaces-cli.js.map +1 -0
  8. package/out/cli/tool-cli.js +59 -4
  9. package/out/cli/tool-cli.js.map +1 -1
  10. package/out/core/chromadb-vector-database.d.ts.map +1 -1
  11. package/out/core/chromadb-vector-database.js +6 -2
  12. package/out/core/chromadb-vector-database.js.map +1 -1
  13. package/out/mcp/server.d.ts +3 -0
  14. package/out/mcp/server.d.ts.map +1 -1
  15. package/out/mcp/server.js +141 -0
  16. package/out/mcp/server.js.map +1 -1
  17. package/out/mcp/tools/adr-generator.d.ts +123 -0
  18. package/out/mcp/tools/adr-generator.d.ts.map +1 -0
  19. package/out/mcp/tools/adr-generator.js +1113 -0
  20. package/out/mcp/tools/adr-generator.js.map +1 -0
  21. package/out/mcp/tools/gap-analysis.d.ts +6 -2
  22. package/out/mcp/tools/gap-analysis.d.ts.map +1 -1
  23. package/out/mcp/tools/gap-analysis.js +32 -5
  24. package/out/mcp/tools/gap-analysis.js.map +1 -1
  25. package/out/services/adr-context-builder.d.ts +70 -0
  26. package/out/services/adr-context-builder.d.ts.map +1 -0
  27. package/out/services/adr-context-builder.js +141 -0
  28. package/out/services/adr-context-builder.js.map +1 -0
  29. package/out/services/adr-pattern-analyzer.d.ts +75 -0
  30. package/out/services/adr-pattern-analyzer.d.ts.map +1 -0
  31. package/out/services/adr-pattern-analyzer.js +339 -0
  32. package/out/services/adr-pattern-analyzer.js.map +1 -0
  33. package/out/services/adr-reasoning-service.d.ts +63 -0
  34. package/out/services/adr-reasoning-service.d.ts.map +1 -0
  35. package/out/services/adr-reasoning-service.js +760 -0
  36. package/out/services/adr-reasoning-service.js.map +1 -0
  37. package/out/services/noyrax-integration-service.d.ts +51 -0
  38. package/out/services/noyrax-integration-service.d.ts.map +1 -0
  39. package/out/services/noyrax-integration-service.js +215 -0
  40. package/out/services/noyrax-integration-service.js.map +1 -0
  41. package/out/services/semantic-pattern-matcher.d.ts +61 -0
  42. package/out/services/semantic-pattern-matcher.d.ts.map +1 -0
  43. package/out/services/semantic-pattern-matcher.js +183 -0
  44. package/out/services/semantic-pattern-matcher.js.map +1 -0
  45. package/out/services/workflow-orchestrator.d.ts +63 -0
  46. package/out/services/workflow-orchestrator.d.ts.map +1 -0
  47. package/out/services/workflow-orchestrator.js +111 -0
  48. package/out/services/workflow-orchestrator.js.map +1 -0
  49. package/out/ui/commands.d.ts.map +1 -1
  50. package/out/ui/commands.js +112 -1
  51. package/out/ui/commands.js.map +1 -1
  52. package/package.json +22 -5
@@ -92,6 +92,12 @@ noyrax-5d-database-tool <workspace-root> learning_path <topic>
92
92
 
93
93
  # Cross Analysis
94
94
  noyrax-5d-database-tool <workspace-root> cross_analysis <filePath>
95
+
96
+ # Gap Analysis (ab Version 0.1.8)
97
+ noyrax-5d-database-tool <workspace-root> gap_analysis [--min-deps N] [--limit N]
98
+
99
+ # Architecture Mining (ab Version 0.1.8)
100
+ noyrax-5d-database-tool <workspace-root> architecture_mining [filePath]
95
101
  ```
96
102
 
97
103
  ### Semantic-Search-CLI (V-Dimension)
@@ -189,6 +195,10 @@ Der MCP-Server stellt folgende Tools bereit:
189
195
  | `query_symbols` | Query Symbols nach path oder symbolId | `path?`, `symbolId?`, `pluginId` |
190
196
  | `query_dependencies` | Query Dependencies nach fromModule oder toModule | `fromModule?`, `toModule?`, `pluginId` |
191
197
  | `cross_analysis` | Cross-Dimension-Analyse für filePath | `filePath`, `pluginId` |
198
+ | `gap_analysis` | Findet Dokumentationslücken (Module mit vielen Dependencies aber wenigen ADRs) | `pluginId`, `minDependencies?` (default: 5), `limit?` (default: 50) |
199
+ | `architecture_mining` | Leitet Architektur-Entscheidungen aus Code-Struktur ab | `pluginId`, `filePath?` (optional, für spezifische Datei) |
200
+ | `generate_documentation` | Generiert Dokumentation mit Noyrax (scan → validate → generate) | `pluginId` |
201
+ | `check_docs_status` | Prüft ob docs/ existiert und aktuell ist | `pluginId` |
192
202
 
193
203
  ## Verfügbare Resources
194
204
 
@@ -356,4 +366,8 @@ chmod +x out/cli/mcp-server-cli.js
356
366
  - Siehe ADR-007 für MCP-Server-Architektur-Details
357
367
  - Siehe ADR-028 für Semantic Brain MCP-Tools
358
368
  - Siehe ADR-033 für MCP-Server CLI-Integration und System-Kopplung
369
+ - Siehe ADR-034 für Gap Analysis Tool
370
+ - Siehe ADR-035 für Architecture Mining Tool
371
+
372
+ **Hinweis:** Die Tools `gap_analysis` und `architecture_mining` sind ab Version 0.1.8 verfügbar.
359
373
 
package/README.md CHANGED
@@ -16,6 +16,13 @@ Noyrax (Documentation System) → generiert docs/ → 5D Database Plugin → SQL
16
16
  - **5D Database Plugin** liest `docs/` und speichert die Daten in SQLite-Datenbanken
17
17
  - **MCP-Server** ermöglicht LLM-Agenten-Zugriff auf die Datenbanken
18
18
 
19
+ ### Monorepo-Integration
20
+
21
+ In diesem Workspace sind beide Plugins als Monorepo integriert:
22
+ - `documentation-system-plugin/` - Noyrax Documentation System Plugin
23
+ - `5d-database-plugin/` - 5D Database Plugin
24
+ - `docs/` - Gemeinsam genutzte Dokumentation
25
+
19
26
  Siehe `SETUP_NEW_PROJECT.md` für vollständigen Setup-Workflow.
20
27
 
21
28
  ## Übersicht
@@ -35,14 +42,39 @@ Das 5D Database Plugin speichert die 5 Dimensionen des Documentation System Plug
35
42
  - **Cross-Dimension-Queries** - Verknüpfungen zwischen Dimensionen
36
43
  - **MCP-Server Integration** - Systemweiter Zugriff via Model Context Protocol
37
44
  - **VS Code UI** - Database Explorer und Status Bar Integration
45
+ - **Monorepo-Integration** - Noyrax und 5D Database Plugin im gleichen Workspace
46
+ - **Workflow-Orchestrierung** - Vollständiger Workflow (Generate Docs → Ingest → Embeddings)
38
47
 
39
48
  ## Installation
40
49
 
41
- ⚠️ **Voraussetzung: Documentation System Plugin (Noyrax) muss installiert sein und `docs/` generiert haben!**
50
+ ### Via npm (Recommended for CLI Tools)
42
51
 
43
- Siehe `SETUP_NEW_PROJECT.md` für vollständige Anleitung mit beiden Plugins.
52
+ ```bash
53
+ npm install -g @noyrax/5d-database-plugin
54
+ ```
55
+
56
+ **Available CLI Tools:**
57
+ - `noyrax-5d-database` - Ingest documentation
58
+ - `noyrax-5d-database-query` - Query database
59
+ - `noyrax-5d-database-tool` - Use MCP tools directly
60
+ - `noyrax-5d-database-search` - Semantic search
61
+ - `noyrax-5d-database-embedding` - Generate embeddings
62
+
63
+ **Example:**
64
+ ```bash
65
+ # Ingest documentation
66
+ noyrax-5d-database ingest /path/to/workspace
44
67
 
45
- ### Schnellstart
68
+ # Query modules
69
+ noyrax-5d-database-query /path/to/workspace modules src/api/user-service.ts
70
+
71
+ # Semantic search
72
+ noyrax-5d-database-tool /path/to/workspace semantic_discovery "How does authentication work?" 5
73
+ ```
74
+
75
+ ### Via VS Code Extension
76
+
77
+ ⚠️ **Voraussetzung: Documentation System Plugin (Noyrax) muss installiert sein und `docs/` generiert haben!**
46
78
 
47
79
  1. **Documentation System Plugin (Noyrax) installieren** und `docs/` generieren
48
80
  2. **5D Database Plugin installieren:**
@@ -53,6 +85,8 @@ Siehe `SETUP_NEW_PROJECT.md` für vollständige Anleitung mit beiden Plugins.
53
85
  4. **Extension aktiviert sich automatisch** beim Start
54
86
  5. **Ingestion ausführen:** `Ctrl+Shift+P` → "Ingest Documentation"
55
87
 
88
+ Siehe `SETUP_NEW_PROJECT.md` für vollständige Anleitung mit beiden Plugins.
89
+
56
90
  ## Verwendung
57
91
 
58
92
  ### Ingestion
@@ -125,6 +159,8 @@ Der MCP-Server bietet Zugriff auf alle Dimensionen via Model Context Protocol:
125
159
  - `query_modules`, `query_symbols`, `query_dependencies`, `cross_analysis`
126
160
  - `gap_analysis` - Systematische Dokumentationslücken-Identifikation
127
161
  - `architecture_mining` - Rückwirkende Architektur-Entscheidungs-Erkennung aus Code
162
+ - `generate_documentation` - Dokumentation generieren (Noyrax-Integration)
163
+ - `check_docs_status` - Prüft ob docs/ existiert und aktuell ist
128
164
 
129
165
  Siehe `MCP_SERVER_SETUP.md` für detaillierte Setup-Anleitung für LLM-Agenten.
130
166
 
@@ -234,6 +270,16 @@ Siehe `CHROMADB_SETUP.md` für ChromaDB-Konfiguration.
234
270
  - **`CHROMADB_SETUP.md`** - ChromaDB-Installation und -Konfiguration (Windows)
235
271
  - **`docs/adr/`** - Architecture Decision Records (32 ADRs dokumentieren alle Entscheidungen)
236
272
 
273
+ ## Strategische Vision
274
+
275
+ - **[`../../VISION.md`](../../VISION.md)** - Vision: Autonome KI-gesteuerte Softwareentwicklung
276
+ - **[`../../INNOVATION_ANALYSIS.md`](../../INNOVATION_ANALYSIS.md)** - Innovations-Analyse: Was macht das System besonders?
277
+ - **[`../../PROBLEM_SOLUTION_MAPPING.md`](../../PROBLEM_SOLUTION_MAPPING.md)** - Problem-Lösung-Mapping
278
+ - **[`../../AI_CODING_IMPLICATIONS.md`](../../AI_CODING_IMPLICATIONS.md)** - AI-Coding Implications
279
+ - **[`../../BUSINESS_IMPACT.md`](../../BUSINESS_IMPACT.md)** - Business Impact: Kosteneinsparungen
280
+ - **[`../../QUALITY_IMPROVEMENT.md`](../../QUALITY_IMPROVEMENT.md)** - Qualitätsverbesserung
281
+ - **[`../../DOMAIN_TRANSFERABILITY.md`](../../DOMAIN_TRANSFERABILITY.md)** - Domänen-Transferfähigkeit
282
+
237
283
  ## License
238
284
 
239
285
  MIT
@@ -13,12 +13,42 @@ Die beiden Plugins sind eng gekoppelt:
13
13
  - **5D Database Plugin** liest `docs/` und speichert die Daten in SQLite-Datenbanken
14
14
  - **MCP-Server** ermöglicht LLM-Agenten-Zugriff auf die Datenbanken
15
15
 
16
+ ### Monorepo-Integration
17
+
18
+ In diesem Workspace sind beide Plugins als Monorepo integriert:
19
+ - `documentation-system-plugin/` - Noyrax Documentation System Plugin
20
+ - `5d-database-plugin/` - 5D Database Plugin
21
+ - `docs/` - Gemeinsam genutzte Dokumentation
22
+
23
+ **Vorteile der Monorepo-Integration:**
24
+ - Beide Plugins im gleichen Workspace
25
+ - Einfache Workflow-Koordination
26
+ - MCP-Server kann auf beide Plugins zugreifen
27
+ - Gemeinsame `docs/` Ordnerstruktur
28
+
16
29
  ## Voraussetzungen
17
30
 
18
31
  1. **Node.js installiert** (Version 16.x oder höher)
19
32
  2. **(Optional) VS Code** für UI-Integration
20
33
  3. **Beide Plugins müssen installiert werden** (Noyrax + 5D Database)
21
34
 
35
+ ### Monorepo-Setup (Dieser Workspace)
36
+
37
+ Wenn beide Plugins im gleichen Workspace sind (Monorepo):
38
+
39
+ ```bash
40
+ # Workspace-Root: Alle Dependencies installieren
41
+ npm install
42
+
43
+ # Alle Plugins kompilieren
44
+ npm run compile:all
45
+
46
+ # Vollständiger Workflow (Generate Docs → Ingest → Embeddings)
47
+ npm run workflow:full
48
+ ```
49
+
50
+ Siehe `README.md` (Workspace-Root) für vollständige Workspace-Dokumentation.
51
+
22
52
  ## Schritt 1: Documentation System Plugin (Noyrax) installieren
23
53
 
24
54
  ### Option A: VS Code Extension
@@ -69,7 +99,22 @@ noyrax-documentation generate /path/to/your-project
69
99
 
70
100
  Jetzt installieren wir das 5D Database Plugin, das die generierte Dokumentation in Datenbanken speichert.
71
101
 
72
- ### Option A: VS Code Extension
102
+ ### Monorepo (Dieser Workspace)
103
+
104
+ Das 5D Database Plugin ist bereits im Workspace integriert. Ingestion kann via Workspace-Scripts ausgeführt werden:
105
+
106
+ ```bash
107
+ # Dokumentation ingestieren
108
+ npm run db:ingest
109
+
110
+ # Embeddings generieren
111
+ npm run db:embedding
112
+
113
+ # Vollständiger Workflow (Generate Docs → Ingest → Embeddings)
114
+ npm run workflow:full
115
+ ```
116
+
117
+ ### Option A: VS Code Extension (Separate Plugins)
73
118
 
74
119
  ```bash
75
120
  code --install-extension 5d-database-plugin-0.1.0.vsix
@@ -140,19 +185,148 @@ noyrax-5d-database ingest /path/to/your-project --full
140
185
  [Ingest CLI] Ingestion completed successfully
141
186
  ```
142
187
 
143
- ## Schritt 6: (Optional) MCP-Server für LLM-Agenten konfigurieren
188
+ ## Schritt 6: Unified MCP Server Setup
189
+
190
+ Der Unified MCP Server orchestriert beide Plugins und bietet einen zentralen Zugriff für AI-Agenten (Cursor, VS Code, Claude Desktop).
191
+
192
+ ### Schritt 6.1: MCP Server kompilieren
193
+
194
+ ```bash
195
+ # MCP Server kompilieren
196
+ npm run mcp:build
197
+
198
+ # Oder direkt
199
+ cd mcp-server
200
+ npm run compile
201
+ ```
144
202
 
145
- Wenn du LLM-Agenten (Claude, GPT, Cursor AI) nutzen möchtest, konfiguriere den MCP-Server.
203
+ **Verifikation:**
204
+ ```bash
205
+ # Prüfen ob MCP Server kompiliert wurde
206
+ Test-Path mcp-server/out/cli/server-cli.js
207
+ ```
146
208
 
147
- Siehe `MCP_SERVER_SETUP.md` für detaillierte Anleitung.
209
+ ### Schritt 6.2: MCP Server testen
148
210
 
149
- **Kurzfassung:**
150
211
  ```bash
151
- # MCP-Server starten
152
- noyrax-5d-database-mcp /path/to/your-project
212
+ # MCP Server starten (für Testing)
213
+ npm run mcp:start .
214
+
215
+ # Oder direkt
216
+ node mcp-server/out/cli/server-cli.js .
217
+ ```
218
+
219
+ **Erwartete Ausgabe:**
220
+ ```
221
+ [UnifiedMcpServer] Initializing...
222
+ [UnifiedMcpServer] Database Plugin available: true
223
+ [UnifiedMcpServer] Documentation Plugin available: true
224
+ [UnifiedMcpServer] Registered 20 tools
225
+ [UnifiedMcpServer] Server ready
226
+ ```
227
+
228
+ ### Schritt 6.3: Cursor Konfiguration
229
+
230
+ Erstellen Sie `.cursor/mcp-config.json` im Workspace-Root:
231
+
232
+ ```json
233
+ {
234
+ "mcpServers": {
235
+ "noyrax": {
236
+ "command": "node",
237
+ "args": [
238
+ "${workspaceFolder}/mcp-server/out/cli/server-cli.js",
239
+ "${workspaceFolder}"
240
+ ],
241
+ "env": {
242
+ "NODE_ENV": "production"
243
+ }
244
+ }
245
+ }
246
+ }
247
+ ```
248
+
249
+ **Nach Konfiguration:**
250
+ 1. Cursor vollständig schließen
251
+ 2. Cursor neu öffnen
252
+ 3. MCP Server sollte automatisch verbinden
253
+
254
+ **Verifikation:**
255
+ - Öffnen Sie Cursor Chat
256
+ - Fragen Sie: "Was ist das System?" oder "System-Status prüfen"
257
+ - Der AI-Agent sollte über MCP Server Tools zugreifen können
258
+
259
+ Siehe [mcp-server/INSTALLATION_GUIDE.md](../mcp-server/INSTALLATION_GUIDE.md) für detaillierte Cursor-Konfiguration.
260
+
261
+ ### Schritt 6.4: VS Code Konfiguration
262
+
263
+ Erstellen Sie `.vscode/settings.json` im Workspace-Root:
264
+
265
+ ```json
266
+ {
267
+ "mcp.servers": {
268
+ "noyrax": {
269
+ "command": "node",
270
+ "args": [
271
+ "${workspaceFolder}/mcp-server/out/cli/server-cli.js",
272
+ "${workspaceFolder}"
273
+ ],
274
+ "env": {
275
+ "NODE_ENV": "production"
276
+ }
277
+ }
278
+ }
279
+ }
153
280
  ```
154
281
 
155
- Oder konfiguriere Claude Desktop (siehe `MCP_SERVER_SETUP.md`).
282
+ **Nach Konfiguration:**
283
+ 1. `Ctrl+Shift+P` → "Developer: Reload Window"
284
+ 2. MCP Server sollte automatisch verbinden
285
+
286
+ **Verifikation:**
287
+ - Öffnen Sie GitHub Copilot Chat
288
+ - Fragen Sie: "Was ist das System?" oder "System-Status prüfen"
289
+ - Der AI-Agent sollte über MCP Server Tools zugreifen können
290
+
291
+ Siehe [mcp-server/INSTALLATION_GUIDE.md](../mcp-server/INSTALLATION_GUIDE.md) für detaillierte VS Code-Konfiguration.
292
+
293
+ ### Schritt 6.5: Claude Desktop Konfiguration (Optional)
294
+
295
+ Falls Sie Claude Desktop nutzen möchten:
296
+
297
+ **Windows:**
298
+ ```
299
+ %APPDATA%\Claude\claude_desktop_config.json
300
+ ```
301
+
302
+ **macOS:**
303
+ ```
304
+ ~/Library/Application Support/Claude/claude_desktop_config.json
305
+ ```
306
+
307
+ **Linux:**
308
+ ```
309
+ ~/.config/Claude/claude_desktop_config.json
310
+ ```
311
+
312
+ **Konfiguration:**
313
+ ```json
314
+ {
315
+ "mcpServers": {
316
+ "noyrax": {
317
+ "command": "node",
318
+ "args": [
319
+ "D:/path/to/workspace/mcp-server/out/cli/server-cli.js",
320
+ "${workspaceFolder}"
321
+ ]
322
+ }
323
+ }
324
+ }
325
+ ```
326
+
327
+ **Hinweis:** Verwenden Sie absolute Pfade für Claude Desktop.
328
+
329
+ Siehe [mcp-server/INSTALLATION_GUIDE.md](../mcp-server/INSTALLATION_GUIDE.md) für detaillierte Claude Desktop-Konfiguration.
156
330
 
157
331
  ## Workflow für Updates
158
332
 
@@ -191,7 +365,55 @@ Nach dem Setup solltest du haben:
191
365
  - `dependencies.db` (Z-Dimension)
192
366
  - `adrs.db` (W-Dimension)
193
367
  - `changes.db` (T-Dimension)
194
- 3. (Optional) `.semantic-brain/` Ordner mit Vektordatenbank (wenn Embeddings generiert wurden)
368
+ - `vectors.db` (V-Dimension: Embeddings)
369
+ 3. ✅ MCP Server kompiliert (`mcp-server/out/cli/server-cli.js` existiert)
370
+ 4. ✅ Cursor/VS Code konfiguriert (`.cursor/mcp-config.json` oder `.vscode/settings.json` existiert)
371
+
372
+ ### System-Status prüfen
373
+
374
+ **Via MCP Server (wenn konfiguriert):**
375
+
376
+ In Cursor/VS Code Chat:
377
+ ```
378
+ System-Status prüfen
379
+ ```
380
+
381
+ Oder nutzen Sie das Tool direkt:
382
+ ```
383
+ workflow/check_status
384
+ ```
385
+
386
+ **Via CLI (Fallback):**
387
+
388
+ ```bash
389
+ # System-Übersicht
390
+ node 5d-database-plugin/out/cli/tool-cli.js . system_explanation
391
+
392
+ # System-Status (falls verfügbar)
393
+ node mcp-server/out/cli/server-cli.js . # MCP Server starten
394
+ ```
395
+
396
+ ### Erste Nutzung
397
+
398
+ Nach erfolgreicher Installation können Sie die Tools nutzen:
399
+
400
+ **In Cursor/VS Code Chat:**
401
+ - "Was ist das System?" → Nutzt `system_explanation` Tool
402
+ - "Wie funktioniert X?" → Nutzt `semantic_discovery` Tool
403
+ - "Welche ADRs gibt es?" → Nutzt `query_adrs` Tool
404
+ - "System-Status prüfen" → Nutzt `workflow/check_status` Tool
405
+
406
+ **Via CLI (Fallback):**
407
+ ```bash
408
+ # System-Übersicht
409
+ node 5d-database-plugin/out/cli/tool-cli.js . bootstrap
410
+
411
+ # Semantic Search
412
+ node 5d-database-plugin/out/cli/tool-cli.js . semantic_discovery "Wie funktioniert X?" 5
413
+
414
+ # ADR abfragen (korrekte Syntax)
415
+ node 5d-database-plugin/out/cli/query-cli.js . adrs --number 040
416
+ ```
195
417
 
196
418
  ## Troubleshooting
197
419
 
@@ -242,19 +464,28 @@ Nach dem Setup solltest du haben:
242
464
 
243
465
  ## Nächste Schritte
244
466
 
245
- - **MCP-Server Setup:** Siehe `MCP_SERVER_SETUP.md`
467
+ - **MCP-Server Setup:** Siehe [mcp-server/INSTALLATION_GUIDE.md](../mcp-server/INSTALLATION_GUIDE.md) für vollständige Anleitung
246
468
  - **Semantic Search:** Siehe `README.md` - Semantic Brain Features
247
469
  - **Architektur:** Siehe `docs/adr/` für Architecture Decision Records
470
+ - **Cursor Rules:** Siehe `.cursor/rules/` für AI-Agent Workflows
248
471
 
249
472
  ## Zusammenfassung
250
473
 
251
474
  Der Setup-Workflow ist immer derselbe:
252
475
 
253
476
  ```
254
- 1. Noyrax installieren → docs/ generieren
255
- 2. 5D Database Plugin installieren docs/ ingestieren
256
- 3. (Optional) MCP-Server konfigurieren LLM-Agenten nutzen
477
+ 1. Dependencies installieren → npm install
478
+ 2. Alle Plugins kompilierennpm run compile:all
479
+ 3. Dokumentation generierennpm run docs:full .
480
+ 4. Datenbanken ingestieren → npm run db:ingest .
481
+ 5. Embeddings generieren → npm run db:embedding .
482
+ 6. MCP Server kompilieren → npm run mcp:build
483
+ 7. Cursor/VS Code konfigurieren → .cursor/mcp-config.json oder .vscode/settings.json
484
+ 8. System testen → "System-Status prüfen" in Chat
257
485
  ```
258
486
 
259
- **Wichtig:** Beide Plugins sind gekoppelt und müssen zusammen verwendet werden!
487
+ **Wichtig:**
488
+ - Beide Plugins sind gekoppelt und müssen zusammen verwendet werden!
489
+ - Unified MCP Server orchestriert beide Plugins und bietet zentralen Zugriff
490
+ - Siehe [mcp-server/INSTALLATION_GUIDE.md](../mcp-server/INSTALLATION_GUIDE.md) für vollständige Anleitung
260
491
 
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=merge-workspaces-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-workspaces-cli.d.ts","sourceRoot":"","sources":["../../src/cli/merge-workspaces-cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,199 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const path = __importStar(require("path"));
38
+ const fs = __importStar(require("fs"));
39
+ const dotenv_1 = require("dotenv");
40
+ const multi_db_manager_1 = require("../core/multi-db-manager");
41
+ const migration_manager_1 = require("../core/migration-manager");
42
+ const ingestion_orchestrator_1 = require("../services/ingestion-orchestrator");
43
+ const docs_path_resolver_1 = require("../core/docs-path-resolver");
44
+ const crypto = __importStar(require("crypto"));
45
+ /**
46
+ * Loads .env file from workspace root or parent directories.
47
+ */
48
+ function loadEnvFile(workspaceRoot) {
49
+ let currentPath = workspaceRoot;
50
+ const maxDepth = 5;
51
+ for (let depth = 0; depth < maxDepth; depth++) {
52
+ const envPath = path.join(currentPath, '.env');
53
+ if (fs.existsSync(envPath)) {
54
+ (0, dotenv_1.config)({ path: envPath });
55
+ console.log(`[Merge Workspaces CLI] Loaded .env file from: ${envPath}`);
56
+ return;
57
+ }
58
+ const parentPath = path.dirname(currentPath);
59
+ if (parentPath === currentPath) {
60
+ break;
61
+ }
62
+ currentPath = parentPath;
63
+ }
64
+ console.warn('[Merge Workspaces CLI] No .env file found. Using environment variables only.');
65
+ }
66
+ /**
67
+ * Computes a stable plugin_id from a workspace root path.
68
+ */
69
+ function computePluginId(workspaceRoot) {
70
+ const normalizedPath = path.resolve(workspaceRoot).replace(/\\/g, '/').toLowerCase();
71
+ const hash = crypto.createHash('sha256').update(normalizedPath).digest('hex');
72
+ return hash.substring(0, 16);
73
+ }
74
+ /**
75
+ * CLI tool for merging multiple workspace documentations into a single database.
76
+ * Usage: node merge-workspaces-cli.js <target-workspace-root> [--source <source-workspace-root>] [--full]
77
+ */
78
+ async function main() {
79
+ const args = process.argv.slice(2);
80
+ let targetWorkspaceRoot = process.cwd();
81
+ let sourceWorkspaceRoot = null;
82
+ let isFull = false;
83
+ // Parse arguments
84
+ for (let i = 0; i < args.length; i++) {
85
+ if (args[i] === '--source' && i + 1 < args.length) {
86
+ sourceWorkspaceRoot = path.resolve(args[i + 1]);
87
+ i++;
88
+ }
89
+ else if (args[i] === '--full') {
90
+ isFull = true;
91
+ }
92
+ else if (targetWorkspaceRoot === process.cwd()) {
93
+ // First non-flag argument becomes target workspace root
94
+ targetWorkspaceRoot = path.resolve(args[i]);
95
+ }
96
+ }
97
+ // Load .env file
98
+ loadEnvFile(targetWorkspaceRoot);
99
+ if (process.env.OPENAI_API_KEY) {
100
+ console.log('[Merge Workspaces CLI] OpenAI API key loaded from .env file');
101
+ }
102
+ else {
103
+ console.warn('[Merge Workspaces CLI] WARNING: OPENAI_API_KEY not found in .env file or environment variables');
104
+ }
105
+ console.log(`Target workspace root: ${targetWorkspaceRoot}`);
106
+ console.log(`Mode: ${isFull ? 'full' : 'incremental'}`);
107
+ // Initialize target database manager (this will be the main database)
108
+ const targetDbManager = new multi_db_manager_1.MultiDbManager(targetWorkspaceRoot);
109
+ const pluginRoot = path.resolve(__dirname, '..', '..');
110
+ const migrationManager = new migration_manager_1.MigrationManager(targetDbManager, pluginRoot);
111
+ const targetPluginId = targetDbManager.getPluginId();
112
+ console.log(`Target plugin ID: ${targetPluginId}`);
113
+ // Run migrations
114
+ await migrationManager.migrateAll();
115
+ console.log('Database migrations completed');
116
+ // List of workspaces to merge
117
+ const workspacesToMerge = [];
118
+ // 1. Target workspace (always included)
119
+ const targetDocsPath = docs_path_resolver_1.DocsPathResolver.findDocsDirectoryFromPath(targetWorkspaceRoot);
120
+ if (targetDocsPath) {
121
+ workspacesToMerge.push({
122
+ root: targetWorkspaceRoot,
123
+ docsPath: targetDocsPath,
124
+ name: 'Target Workspace'
125
+ });
126
+ console.log(`Found target docs directory: ${targetDocsPath}`);
127
+ }
128
+ else {
129
+ console.warn('WARNING: Target workspace docs/ directory not found. Skipping target workspace.');
130
+ }
131
+ // 2. Source workspace (if specified)
132
+ if (sourceWorkspaceRoot) {
133
+ const sourceDocsPath = docs_path_resolver_1.DocsPathResolver.findDocsDirectoryFromPath(sourceWorkspaceRoot);
134
+ if (sourceDocsPath) {
135
+ workspacesToMerge.push({
136
+ root: sourceWorkspaceRoot,
137
+ docsPath: sourceDocsPath,
138
+ name: 'Source Workspace'
139
+ });
140
+ console.log(`Found source docs directory: ${sourceDocsPath}`);
141
+ }
142
+ else {
143
+ console.warn(`WARNING: Source workspace docs/ directory not found: ${sourceWorkspaceRoot}`);
144
+ }
145
+ }
146
+ // 3. Auto-detect documentation-system-plugin if it exists
147
+ const documentationSystemPluginPath = path.join(targetWorkspaceRoot, 'documentation-system-plugin');
148
+ if (fs.existsSync(documentationSystemPluginPath)) {
149
+ const noyraxDocsPath = docs_path_resolver_1.DocsPathResolver.findDocsDirectoryFromPath(documentationSystemPluginPath);
150
+ if (noyraxDocsPath) {
151
+ // Check if not already added as source
152
+ const alreadyAdded = workspacesToMerge.some(w => w.docsPath === noyraxDocsPath);
153
+ if (!alreadyAdded) {
154
+ workspacesToMerge.push({
155
+ root: documentationSystemPluginPath,
156
+ docsPath: noyraxDocsPath,
157
+ name: 'Documentation System Plugin (Noyrax)'
158
+ });
159
+ console.log(`Found Documentation System Plugin docs directory: ${noyraxDocsPath}`);
160
+ }
161
+ }
162
+ }
163
+ if (workspacesToMerge.length === 0) {
164
+ console.error('ERROR: No docs/ directories found to merge.');
165
+ console.error('Please ensure at least one workspace has a docs/ directory.');
166
+ process.exit(1);
167
+ }
168
+ console.log(`\nMerging ${workspacesToMerge.length} workspace(s) into target database (plugin_id: ${targetPluginId})...`);
169
+ // Create ingestion orchestrator
170
+ const ingestionOrchestrator = new ingestion_orchestrator_1.IngestionOrchestrator(targetDbManager, migrationManager);
171
+ // Ingest each workspace into the target database
172
+ for (const workspace of workspacesToMerge) {
173
+ console.log(`\n--- Ingesting ${workspace.name} ---`);
174
+ console.log(` Workspace root: ${workspace.root}`);
175
+ console.log(` Docs path: ${workspace.docsPath}`);
176
+ try {
177
+ if (isFull) {
178
+ await ingestionOrchestrator.ingestFull(targetWorkspaceRoot, targetPluginId, workspace.docsPath);
179
+ }
180
+ else {
181
+ await ingestionOrchestrator.ingestIncremental(targetWorkspaceRoot, targetPluginId, workspace.docsPath);
182
+ }
183
+ console.log(`✓ Successfully ingested ${workspace.name}`);
184
+ }
185
+ catch (error) {
186
+ console.error(`✗ Failed to ingest ${workspace.name}: ${error.message}`);
187
+ console.error(error);
188
+ }
189
+ }
190
+ console.log('\n=== Merge completed successfully ===');
191
+ console.log(`All workspaces merged into database at: ${targetDbManager.getDbDirectory()}`);
192
+ console.log(`Plugin ID: ${targetPluginId}`);
193
+ process.exit(0);
194
+ }
195
+ main().catch((error) => {
196
+ console.error('Merge failed:', error);
197
+ process.exit(1);
198
+ });
199
+ //# sourceMappingURL=merge-workspaces-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-workspaces-cli.js","sourceRoot":"","sources":["../../src/cli/merge-workspaces-cli.ts"],"names":[],"mappings":"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"}