@noyrax/5d-database-plugin 0.1.0
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/ADR_VORSCHLAEGE.md +247 -0
- package/CHROMADB_SETUP.md +69 -0
- package/IMPROVEMENT_ROADMAP.md +435 -0
- package/INSTALLATION_READINESS.md +150 -0
- package/KNOWN_ISSUES.md +210 -0
- package/LICENSE +21 -0
- package/MCP_SERVER_SETUP.md +359 -0
- package/MCP_SERVER_TEST_REPORT.md +206 -0
- package/NOYRAX_INTEGRATION.md +224 -0
- package/QUICK_START.md +316 -0
- package/README.md +240 -0
- package/SETUP_NEW_PROJECT.md +260 -0
- package/SYSTEM_ANALYSIS_REPORT.md +341 -0
- package/out/api/adr-api.d.ts +22 -0
- package/out/api/adr-api.d.ts.map +1 -0
- package/out/api/adr-api.js +38 -0
- package/out/api/adr-api.js.map +1 -0
- package/out/api/bootstrap-api.d.ts +43 -0
- package/out/api/bootstrap-api.d.ts.map +1 -0
- package/out/api/bootstrap-api.js +88 -0
- package/out/api/bootstrap-api.js.map +1 -0
- package/out/api/change-api.d.ts +30 -0
- package/out/api/change-api.d.ts.map +1 -0
- package/out/api/change-api.js +54 -0
- package/out/api/change-api.js.map +1 -0
- package/out/api/context-builder.d.ts +81 -0
- package/out/api/context-builder.d.ts.map +1 -0
- package/out/api/context-builder.js +288 -0
- package/out/api/context-builder.js.map +1 -0
- package/out/api/cross-dimension-api.d.ts +43 -0
- package/out/api/cross-dimension-api.d.ts.map +1 -0
- package/out/api/cross-dimension-api.js +55 -0
- package/out/api/cross-dimension-api.js.map +1 -0
- package/out/api/dependency-api.d.ts +26 -0
- package/out/api/dependency-api.d.ts.map +1 -0
- package/out/api/dependency-api.js +46 -0
- package/out/api/dependency-api.js.map +1 -0
- package/out/api/learning-path-api.d.ts +49 -0
- package/out/api/learning-path-api.d.ts.map +1 -0
- package/out/api/learning-path-api.js +174 -0
- package/out/api/learning-path-api.js.map +1 -0
- package/out/api/module-api.d.ts +26 -0
- package/out/api/module-api.d.ts.map +1 -0
- package/out/api/module-api.js +46 -0
- package/out/api/module-api.js.map +1 -0
- package/out/api/search-api.d.ts +64 -0
- package/out/api/search-api.d.ts.map +1 -0
- package/out/api/search-api.js +235 -0
- package/out/api/search-api.js.map +1 -0
- package/out/api/self-explanation-api.d.ts +71 -0
- package/out/api/self-explanation-api.d.ts.map +1 -0
- package/out/api/self-explanation-api.js +153 -0
- package/out/api/self-explanation-api.js.map +1 -0
- package/out/api/semantic-search-api.d.ts +64 -0
- package/out/api/semantic-search-api.d.ts.map +1 -0
- package/out/api/semantic-search-api.js +205 -0
- package/out/api/semantic-search-api.js.map +1 -0
- package/out/api/symbol-api.d.ts +22 -0
- package/out/api/symbol-api.d.ts.map +1 -0
- package/out/api/symbol-api.js +38 -0
- package/out/api/symbol-api.js.map +1 -0
- package/out/api/vector-api.d.ts +26 -0
- package/out/api/vector-api.d.ts.map +1 -0
- package/out/api/vector-api.js +49 -0
- package/out/api/vector-api.js.map +1 -0
- package/out/cli/embedding-cli.d.ts +3 -0
- package/out/cli/embedding-cli.d.ts.map +1 -0
- package/out/cli/embedding-cli.js +151 -0
- package/out/cli/embedding-cli.js.map +1 -0
- package/out/cli/ingest-cli.d.ts +3 -0
- package/out/cli/ingest-cli.d.ts.map +1 -0
- package/out/cli/ingest-cli.js +145 -0
- package/out/cli/ingest-cli.js.map +1 -0
- package/out/cli/mcp-server-cli.d.ts +3 -0
- package/out/cli/mcp-server-cli.d.ts.map +1 -0
- package/out/cli/mcp-server-cli.js +159 -0
- package/out/cli/mcp-server-cli.js.map +1 -0
- package/out/cli/query-cli.d.ts +3 -0
- package/out/cli/query-cli.d.ts.map +1 -0
- package/out/cli/query-cli.js +217 -0
- package/out/cli/query-cli.js.map +1 -0
- package/out/cli/semantic-search-cli.d.ts +3 -0
- package/out/cli/semantic-search-cli.d.ts.map +1 -0
- package/out/cli/semantic-search-cli.js +196 -0
- package/out/cli/semantic-search-cli.js.map +1 -0
- package/out/cli/test-chromadb.d.ts +3 -0
- package/out/cli/test-chromadb.d.ts.map +1 -0
- package/out/cli/test-chromadb.js +204 -0
- package/out/cli/test-chromadb.js.map +1 -0
- package/out/cli/test-v-dimension.d.ts +3 -0
- package/out/cli/test-v-dimension.d.ts.map +1 -0
- package/out/cli/test-v-dimension.js +330 -0
- package/out/cli/test-v-dimension.js.map +1 -0
- package/out/cli/tool-cli.d.ts +3 -0
- package/out/cli/tool-cli.d.ts.map +1 -0
- package/out/cli/tool-cli.js +237 -0
- package/out/cli/tool-cli.js.map +1 -0
- package/out/cli/verify-openai-key.d.ts +3 -0
- package/out/cli/verify-openai-key.d.ts.map +1 -0
- package/out/cli/verify-openai-key.js +141 -0
- package/out/cli/verify-openai-key.js.map +1 -0
- package/out/cli/verify-vss-status.d.ts +3 -0
- package/out/cli/verify-vss-status.d.ts.map +1 -0
- package/out/cli/verify-vss-status.js +185 -0
- package/out/cli/verify-vss-status.js.map +1 -0
- package/out/core/chromadb-vector-database.d.ts +52 -0
- package/out/core/chromadb-vector-database.d.ts.map +1 -0
- package/out/core/chromadb-vector-database.js +276 -0
- package/out/core/chromadb-vector-database.js.map +1 -0
- package/out/core/docs-path-resolver.d.ts +43 -0
- package/out/core/docs-path-resolver.d.ts.map +1 -0
- package/out/core/docs-path-resolver.js +137 -0
- package/out/core/docs-path-resolver.js.map +1 -0
- package/out/core/id-mapper.d.ts +68 -0
- package/out/core/id-mapper.d.ts.map +1 -0
- package/out/core/id-mapper.js +132 -0
- package/out/core/id-mapper.js.map +1 -0
- package/out/core/migration-manager.d.ts +75 -0
- package/out/core/migration-manager.d.ts.map +1 -0
- package/out/core/migration-manager.js +212 -0
- package/out/core/migration-manager.js.map +1 -0
- package/out/core/multi-db-manager.d.ts +84 -0
- package/out/core/multi-db-manager.d.ts.map +1 -0
- package/out/core/multi-db-manager.js +206 -0
- package/out/core/multi-db-manager.js.map +1 -0
- package/out/core/transaction-manager.d.ts +69 -0
- package/out/core/transaction-manager.d.ts.map +1 -0
- package/out/core/transaction-manager.js +138 -0
- package/out/core/transaction-manager.js.map +1 -0
- package/out/core/vector-database-factory.d.ts +25 -0
- package/out/core/vector-database-factory.d.ts.map +1 -0
- package/out/core/vector-database-factory.js +82 -0
- package/out/core/vector-database-factory.js.map +1 -0
- package/out/core/vector-database-interface.d.ts +50 -0
- package/out/core/vector-database-interface.d.ts.map +1 -0
- package/out/core/vector-database-interface.js +3 -0
- package/out/core/vector-database-interface.js.map +1 -0
- package/out/core/vss-loader.d.ts +29 -0
- package/out/core/vss-loader.d.ts.map +1 -0
- package/out/core/vss-loader.js +150 -0
- package/out/core/vss-loader.js.map +1 -0
- package/out/core/vss-manager.d.ts +81 -0
- package/out/core/vss-manager.d.ts.map +1 -0
- package/out/core/vss-manager.js +323 -0
- package/out/core/vss-manager.js.map +1 -0
- package/out/core/vss-vector-database.d.ts +71 -0
- package/out/core/vss-vector-database.d.ts.map +1 -0
- package/out/core/vss-vector-database.js +284 -0
- package/out/core/vss-vector-database.js.map +1 -0
- package/out/embedding/embedding-generator.d.ts +45 -0
- package/out/embedding/embedding-generator.d.ts.map +1 -0
- package/out/embedding/embedding-generator.js +143 -0
- package/out/embedding/embedding-generator.js.map +1 -0
- package/out/embedding/embedding-pipeline.d.ts +42 -0
- package/out/embedding/embedding-pipeline.d.ts.map +1 -0
- package/out/embedding/embedding-pipeline.js +290 -0
- package/out/embedding/embedding-pipeline.js.map +1 -0
- package/out/extension.d.ts +10 -0
- package/out/extension.d.ts.map +1 -0
- package/out/extension.js +164 -0
- package/out/extension.js.map +1 -0
- package/out/ingestors/adr-ingestor.d.ts +41 -0
- package/out/ingestors/adr-ingestor.d.ts.map +1 -0
- package/out/ingestors/adr-ingestor.js +329 -0
- package/out/ingestors/adr-ingestor.js.map +1 -0
- package/out/ingestors/base-ingestor.d.ts +30 -0
- package/out/ingestors/base-ingestor.d.ts.map +1 -0
- package/out/ingestors/base-ingestor.js +3 -0
- package/out/ingestors/base-ingestor.js.map +1 -0
- package/out/ingestors/change-ingestor.d.ts +36 -0
- package/out/ingestors/change-ingestor.d.ts.map +1 -0
- package/out/ingestors/change-ingestor.js +216 -0
- package/out/ingestors/change-ingestor.js.map +1 -0
- package/out/ingestors/dependency-ingestor.d.ts +32 -0
- package/out/ingestors/dependency-ingestor.d.ts.map +1 -0
- package/out/ingestors/dependency-ingestor.js +194 -0
- package/out/ingestors/dependency-ingestor.js.map +1 -0
- package/out/ingestors/module-ingestor.d.ts +27 -0
- package/out/ingestors/module-ingestor.d.ts.map +1 -0
- package/out/ingestors/module-ingestor.js +137 -0
- package/out/ingestors/module-ingestor.js.map +1 -0
- package/out/ingestors/symbol-ingestor.d.ts +26 -0
- package/out/ingestors/symbol-ingestor.d.ts.map +1 -0
- package/out/ingestors/symbol-ingestor.js +183 -0
- package/out/ingestors/symbol-ingestor.js.map +1 -0
- package/out/mcp/resources/adrs.d.ts +13 -0
- package/out/mcp/resources/adrs.d.ts.map +1 -0
- package/out/mcp/resources/adrs.js +26 -0
- package/out/mcp/resources/adrs.js.map +1 -0
- package/out/mcp/resources/changes.d.ts +13 -0
- package/out/mcp/resources/changes.d.ts.map +1 -0
- package/out/mcp/resources/changes.js +26 -0
- package/out/mcp/resources/changes.js.map +1 -0
- package/out/mcp/resources/dependencies.d.ts +13 -0
- package/out/mcp/resources/dependencies.d.ts.map +1 -0
- package/out/mcp/resources/dependencies.js +26 -0
- package/out/mcp/resources/dependencies.js.map +1 -0
- package/out/mcp/resources/modules.d.ts +13 -0
- package/out/mcp/resources/modules.d.ts.map +1 -0
- package/out/mcp/resources/modules.js +26 -0
- package/out/mcp/resources/modules.js.map +1 -0
- package/out/mcp/resources/symbols.d.ts +13 -0
- package/out/mcp/resources/symbols.d.ts.map +1 -0
- package/out/mcp/resources/symbols.js +26 -0
- package/out/mcp/resources/symbols.js.map +1 -0
- package/out/mcp/server.d.ts +29 -0
- package/out/mcp/server.d.ts.map +1 -0
- package/out/mcp/server.js +300 -0
- package/out/mcp/server.js.map +1 -0
- package/out/mcp/tools/architecture-mining.d.ts +46 -0
- package/out/mcp/tools/architecture-mining.d.ts.map +1 -0
- package/out/mcp/tools/architecture-mining.js +272 -0
- package/out/mcp/tools/architecture-mining.js.map +1 -0
- package/out/mcp/tools/bootstrap.d.ts +9 -0
- package/out/mcp/tools/bootstrap.d.ts.map +1 -0
- package/out/mcp/tools/bootstrap.js +14 -0
- package/out/mcp/tools/bootstrap.js.map +1 -0
- package/out/mcp/tools/cross-analysis.d.ts +18 -0
- package/out/mcp/tools/cross-analysis.d.ts.map +1 -0
- package/out/mcp/tools/cross-analysis.js +23 -0
- package/out/mcp/tools/cross-analysis.js.map +1 -0
- package/out/mcp/tools/gap-analysis.d.ts +34 -0
- package/out/mcp/tools/gap-analysis.d.ts.map +1 -0
- package/out/mcp/tools/gap-analysis.js +106 -0
- package/out/mcp/tools/gap-analysis.js.map +1 -0
- package/out/mcp/tools/learning-path.d.ts +10 -0
- package/out/mcp/tools/learning-path.d.ts.map +1 -0
- package/out/mcp/tools/learning-path.js +18 -0
- package/out/mcp/tools/learning-path.js.map +1 -0
- package/out/mcp/tools/query-dependencies.d.ts +18 -0
- package/out/mcp/tools/query-dependencies.d.ts.map +1 -0
- package/out/mcp/tools/query-dependencies.js +31 -0
- package/out/mcp/tools/query-dependencies.js.map +1 -0
- package/out/mcp/tools/query-modules.d.ts +17 -0
- package/out/mcp/tools/query-modules.d.ts.map +1 -0
- package/out/mcp/tools/query-modules.js +22 -0
- package/out/mcp/tools/query-modules.js.map +1 -0
- package/out/mcp/tools/query-symbols.d.ts +18 -0
- package/out/mcp/tools/query-symbols.d.ts.map +1 -0
- package/out/mcp/tools/query-symbols.js +32 -0
- package/out/mcp/tools/query-symbols.js.map +1 -0
- package/out/mcp/tools/semantic-discovery.d.ts +12 -0
- package/out/mcp/tools/semantic-discovery.d.ts.map +1 -0
- package/out/mcp/tools/semantic-discovery.js +35 -0
- package/out/mcp/tools/semantic-discovery.js.map +1 -0
- package/out/mcp/tools/system-explanation.d.ts +9 -0
- package/out/mcp/tools/system-explanation.d.ts.map +1 -0
- package/out/mcp/tools/system-explanation.js +14 -0
- package/out/mcp/tools/system-explanation.js.map +1 -0
- package/out/mcp/types.d.ts +19 -0
- package/out/mcp/types.d.ts.map +1 -0
- package/out/mcp/types.js +6 -0
- package/out/mcp/types.js.map +1 -0
- package/out/models/adr.d.ts +26 -0
- package/out/models/adr.d.ts.map +1 -0
- package/out/models/adr.js +3 -0
- package/out/models/adr.js.map +1 -0
- package/out/models/change.d.ts +42 -0
- package/out/models/change.d.ts.map +1 -0
- package/out/models/change.js +3 -0
- package/out/models/change.js.map +1 -0
- package/out/models/dependency.d.ts +37 -0
- package/out/models/dependency.d.ts.map +1 -0
- package/out/models/dependency.js +3 -0
- package/out/models/dependency.js.map +1 -0
- package/out/models/entity-reference.d.ts +20 -0
- package/out/models/entity-reference.d.ts.map +1 -0
- package/out/models/entity-reference.js +19 -0
- package/out/models/entity-reference.js.map +1 -0
- package/out/models/module.d.ts +26 -0
- package/out/models/module.d.ts.map +1 -0
- package/out/models/module.js +3 -0
- package/out/models/module.js.map +1 -0
- package/out/models/symbol.d.ts +31 -0
- package/out/models/symbol.d.ts.map +1 -0
- package/out/models/symbol.js +3 -0
- package/out/models/symbol.js.map +1 -0
- package/out/repositories/adr-repository.d.ts +41 -0
- package/out/repositories/adr-repository.d.ts.map +1 -0
- package/out/repositories/adr-repository.js +128 -0
- package/out/repositories/adr-repository.js.map +1 -0
- package/out/repositories/base-repository.d.ts +86 -0
- package/out/repositories/base-repository.d.ts.map +1 -0
- package/out/repositories/base-repository.js +66 -0
- package/out/repositories/base-repository.js.map +1 -0
- package/out/repositories/change-repository.d.ts +40 -0
- package/out/repositories/change-repository.d.ts.map +1 -0
- package/out/repositories/change-repository.js +150 -0
- package/out/repositories/change-repository.js.map +1 -0
- package/out/repositories/dependency-repository.d.ts +40 -0
- package/out/repositories/dependency-repository.d.ts.map +1 -0
- package/out/repositories/dependency-repository.js +129 -0
- package/out/repositories/dependency-repository.js.map +1 -0
- package/out/repositories/embedding-repository.d.ts +64 -0
- package/out/repositories/embedding-repository.d.ts.map +1 -0
- package/out/repositories/embedding-repository.js +126 -0
- package/out/repositories/embedding-repository.js.map +1 -0
- package/out/repositories/importance-repository.d.ts +63 -0
- package/out/repositories/importance-repository.d.ts.map +1 -0
- package/out/repositories/importance-repository.js +117 -0
- package/out/repositories/importance-repository.js.map +1 -0
- package/out/repositories/module-repository.d.ts +37 -0
- package/out/repositories/module-repository.d.ts.map +1 -0
- package/out/repositories/module-repository.js +122 -0
- package/out/repositories/module-repository.js.map +1 -0
- package/out/repositories/navigation-repository.d.ts +117 -0
- package/out/repositories/navigation-repository.d.ts.map +1 -0
- package/out/repositories/navigation-repository.js +211 -0
- package/out/repositories/navigation-repository.js.map +1 -0
- package/out/repositories/symbol-repository.d.ts +37 -0
- package/out/repositories/symbol-repository.d.ts.map +1 -0
- package/out/repositories/symbol-repository.js +136 -0
- package/out/repositories/symbol-repository.js.map +1 -0
- package/out/services/cross-dimension-linker.d.ts +45 -0
- package/out/services/cross-dimension-linker.d.ts.map +1 -0
- package/out/services/cross-dimension-linker.js +98 -0
- package/out/services/cross-dimension-linker.js.map +1 -0
- package/out/services/importance-scorer.d.ts +47 -0
- package/out/services/importance-scorer.d.ts.map +1 -0
- package/out/services/importance-scorer.js +188 -0
- package/out/services/importance-scorer.js.map +1 -0
- package/out/services/ingestion-orchestrator.d.ts +49 -0
- package/out/services/ingestion-orchestrator.d.ts.map +1 -0
- package/out/services/ingestion-orchestrator.js +140 -0
- package/out/services/ingestion-orchestrator.js.map +1 -0
- package/out/services/navigation-builder.d.ts +29 -0
- package/out/services/navigation-builder.d.ts.map +1 -0
- package/out/services/navigation-builder.js +229 -0
- package/out/services/navigation-builder.js.map +1 -0
- package/out/services/system-model-builder.d.ts +40 -0
- package/out/services/system-model-builder.d.ts.map +1 -0
- package/out/services/system-model-builder.js +88 -0
- package/out/services/system-model-builder.js.map +1 -0
- package/out/ui/commands.d.ts +9 -0
- package/out/ui/commands.d.ts.map +1 -0
- package/out/ui/commands.js +123 -0
- package/out/ui/commands.js.map +1 -0
- package/out/ui/database-explorer.d.ts +27 -0
- package/out/ui/database-explorer.d.ts.map +1 -0
- package/out/ui/database-explorer.js +169 -0
- package/out/ui/database-explorer.js.map +1 -0
- package/out/ui/detail-view-provider.d.ts +86 -0
- package/out/ui/detail-view-provider.d.ts.map +1 -0
- package/out/ui/detail-view-provider.js +1037 -0
- package/out/ui/detail-view-provider.js.map +1 -0
- package/out/ui/search-provider.d.ts +30 -0
- package/out/ui/search-provider.d.ts.map +1 -0
- package/out/ui/search-provider.js +240 -0
- package/out/ui/search-provider.js.map +1 -0
- package/out/ui/status-provider.d.ts +17 -0
- package/out/ui/status-provider.d.ts.map +1 -0
- package/out/ui/status-provider.js +76 -0
- package/out/ui/status-provider.js.map +1 -0
- package/out/validators/consistency-validator.d.ts +37 -0
- package/out/validators/consistency-validator.d.ts.map +1 -0
- package/out/validators/consistency-validator.js +93 -0
- package/out/validators/consistency-validator.js.map +1 -0
- package/out/validators/integrity-validator.d.ts +45 -0
- package/out/validators/integrity-validator.d.ts.map +1 -0
- package/out/validators/integrity-validator.js +115 -0
- package/out/validators/integrity-validator.js.map +1 -0
- package/package.json +173 -0
- package/schemas/sqlite/001_initial_modules.sql +39 -0
- package/schemas/sqlite/002_initial_symbols.sql +46 -0
- package/schemas/sqlite/003_initial_dependencies.sql +51 -0
- package/schemas/sqlite/004_initial_adrs.sql +41 -0
- package/schemas/sqlite/005_initial_changes.sql +54 -0
- package/schemas/sqlite/006_initial_ingestion.sql +34 -0
- package/schemas/sqlite/006_vectors_schema.sql +73 -0
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.AdrIngestor = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const crypto = __importStar(require("crypto"));
|
|
40
|
+
const uuid_1 = require("uuid");
|
|
41
|
+
const adr_repository_1 = require("../repositories/adr-repository");
|
|
42
|
+
/**
|
|
43
|
+
* Ingests ADRs from docs/adr/*.md (W-Dimension)
|
|
44
|
+
*/
|
|
45
|
+
class AdrIngestor {
|
|
46
|
+
constructor(dbManager) {
|
|
47
|
+
this.dbManager = dbManager;
|
|
48
|
+
}
|
|
49
|
+
getDimension() {
|
|
50
|
+
return 'W';
|
|
51
|
+
}
|
|
52
|
+
async ingestFull(workspaceRoot, pluginId, docsPath) {
|
|
53
|
+
if (!docsPath) {
|
|
54
|
+
console.warn('[AdrIngestor] ingestFull: docsPath not provided, skipping ADR ingestion');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const adrDir = path.join(docsPath, 'adr');
|
|
58
|
+
if (!fs.existsSync(adrDir)) {
|
|
59
|
+
console.warn(`[AdrIngestor] ingestFull: ADR directory not found: ${adrDir}`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const db = await this.dbManager.getDatabase('W');
|
|
63
|
+
const repository = new adr_repository_1.AdrRepository(db);
|
|
64
|
+
const files = fs.readdirSync(adrDir)
|
|
65
|
+
.filter(file => file.endsWith('.md'))
|
|
66
|
+
.sort();
|
|
67
|
+
console.log(`[AdrIngestor] ingestFull: Found ${files.length} ADR files in ${adrDir}`);
|
|
68
|
+
let ingested = 0;
|
|
69
|
+
let errors = 0;
|
|
70
|
+
for (const file of files) {
|
|
71
|
+
try {
|
|
72
|
+
const filePath = path.join(adrDir, file);
|
|
73
|
+
await this.ingestAdrFile(filePath, file, workspaceRoot, pluginId, repository);
|
|
74
|
+
ingested++;
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
errors++;
|
|
78
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
79
|
+
console.error(`[AdrIngestor] ingestFull: Failed to ingest ADR file ${file}: ${errorMsg}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
console.log(`[AdrIngestor] ingestFull: Completed - ${ingested} ingested, ${errors} errors`);
|
|
83
|
+
}
|
|
84
|
+
async ingestIncremental(workspaceRoot, pluginId, docsPath) {
|
|
85
|
+
if (!docsPath) {
|
|
86
|
+
console.warn('[AdrIngestor] ingestIncremental: docsPath not provided, skipping ADR ingestion');
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const adrDir = path.join(docsPath, 'adr');
|
|
90
|
+
if (!fs.existsSync(adrDir)) {
|
|
91
|
+
console.warn(`[AdrIngestor] ingestIncremental: ADR directory not found: ${adrDir}`);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const db = await this.dbManager.getDatabase('W');
|
|
95
|
+
const repository = new adr_repository_1.AdrRepository(db);
|
|
96
|
+
const files = fs.readdirSync(adrDir)
|
|
97
|
+
.filter(file => file.endsWith('.md'))
|
|
98
|
+
.sort();
|
|
99
|
+
console.log(`[AdrIngestor] ingestIncremental: Found ${files.length} ADR files in ${adrDir}`);
|
|
100
|
+
let ingested = 0;
|
|
101
|
+
let skipped = 0;
|
|
102
|
+
let errors = 0;
|
|
103
|
+
for (const file of files) {
|
|
104
|
+
try {
|
|
105
|
+
const filePath = path.join(adrDir, file);
|
|
106
|
+
const adrNumber = this.extractAdrNumber(file);
|
|
107
|
+
const existing = await repository.getByAdrNumber(adrNumber, pluginId);
|
|
108
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
109
|
+
const contentHash = this.computeContentHash(content);
|
|
110
|
+
if (existing && existing.content_hash === contentHash) {
|
|
111
|
+
// Content unchanged, but still update file mappings (they might have changed in extractFileMappings logic)
|
|
112
|
+
const fileMappings = this.extractFileMappings(content, workspaceRoot);
|
|
113
|
+
const existingMappings = await repository.getAdrFileMappings(existing.id);
|
|
114
|
+
const existingPaths = new Set(existingMappings.map(m => m.file_path));
|
|
115
|
+
const newPaths = new Set(fileMappings);
|
|
116
|
+
// Check if mappings need update
|
|
117
|
+
const mappingsChanged = fileMappings.length !== existingMappings.length ||
|
|
118
|
+
!fileMappings.every(p => existingPaths.has(p)) ||
|
|
119
|
+
!Array.from(existingPaths).every(p => newPaths.has(p));
|
|
120
|
+
if (mappingsChanged) {
|
|
121
|
+
// Delete old mappings and recreate
|
|
122
|
+
for (const mapping of existingMappings) {
|
|
123
|
+
await repository.deleteAdrFileMapping(mapping.id);
|
|
124
|
+
}
|
|
125
|
+
for (const filePath of fileMappings) {
|
|
126
|
+
try {
|
|
127
|
+
await repository.createAdrFileMapping({
|
|
128
|
+
id: (0, uuid_1.v4)(),
|
|
129
|
+
adr_id: existing.id,
|
|
130
|
+
file_path: filePath
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
135
|
+
if (!errorMsg.includes('UNIQUE constraint')) {
|
|
136
|
+
console.warn(`[AdrIngestor] Failed to create file mapping for ADR-${adrNumber}, file: ${filePath}: ${errorMsg}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
console.log(`[AdrIngestor] Updated file mappings for ADR-${adrNumber} (${fileMappings.length} mappings)`);
|
|
141
|
+
ingested++;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
skipped++;
|
|
145
|
+
}
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
await this.ingestAdrFile(filePath, file, workspaceRoot, pluginId, repository);
|
|
149
|
+
ingested++;
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
errors++;
|
|
153
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
154
|
+
console.error(`[AdrIngestor] ingestIncremental: Failed to ingest ADR file ${file}: ${errorMsg}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
console.log(`[AdrIngestor] ingestIncremental: Completed - ${ingested} ingested, ${skipped} skipped, ${errors} errors`);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Ingests a single ADR file.
|
|
161
|
+
*/
|
|
162
|
+
async ingestAdrFile(filePath, fileName, workspaceRoot, pluginId, repository) {
|
|
163
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
164
|
+
const contentHash = this.computeContentHash(content);
|
|
165
|
+
const adrNumber = this.extractAdrNumber(fileName);
|
|
166
|
+
const title = this.extractTitle(content);
|
|
167
|
+
if (!adrNumber) {
|
|
168
|
+
throw new Error(`Failed to extract ADR number from filename: ${fileName}`);
|
|
169
|
+
}
|
|
170
|
+
const existing = await repository.getByAdrNumber(adrNumber, pluginId);
|
|
171
|
+
const now = new Date();
|
|
172
|
+
const adr = {
|
|
173
|
+
id: existing?.id || (0, uuid_1.v4)(),
|
|
174
|
+
plugin_id: pluginId,
|
|
175
|
+
adr_number: adrNumber,
|
|
176
|
+
title: title,
|
|
177
|
+
file_name: fileName,
|
|
178
|
+
content_markdown: content,
|
|
179
|
+
content_hash: contentHash,
|
|
180
|
+
deleted_at: null,
|
|
181
|
+
created_at: existing?.created_at || now,
|
|
182
|
+
updated_at: now
|
|
183
|
+
};
|
|
184
|
+
if (existing) {
|
|
185
|
+
await repository.update(adr);
|
|
186
|
+
console.log(`[AdrIngestor] Updated ADR-${adrNumber}: ${title}`);
|
|
187
|
+
// Delete existing file mappings before recreating (to handle removed/changed paths)
|
|
188
|
+
const existingMappings = await repository.getAdrFileMappings(adr.id);
|
|
189
|
+
for (const mapping of existingMappings) {
|
|
190
|
+
await repository.deleteAdrFileMapping(mapping.id);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
await repository.create(adr);
|
|
195
|
+
console.log(`[AdrIngestor] Created ADR-${adrNumber}: ${title}`);
|
|
196
|
+
}
|
|
197
|
+
const fileMappings = this.extractFileMappings(content, workspaceRoot);
|
|
198
|
+
let mappingCount = 0;
|
|
199
|
+
for (const filePath of fileMappings) {
|
|
200
|
+
try {
|
|
201
|
+
await repository.createAdrFileMapping({
|
|
202
|
+
id: (0, uuid_1.v4)(),
|
|
203
|
+
adr_id: adr.id,
|
|
204
|
+
file_path: filePath
|
|
205
|
+
});
|
|
206
|
+
mappingCount++;
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
// Ignore duplicate mapping errors
|
|
210
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
211
|
+
if (!errorMsg.includes('UNIQUE constraint')) {
|
|
212
|
+
console.warn(`[AdrIngestor] Failed to create file mapping for ADR-${adrNumber}, file: ${filePath}: ${errorMsg}`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (mappingCount > 0) {
|
|
217
|
+
console.log(`[AdrIngestor] Created ${mappingCount} file mapping(s) for ADR-${adrNumber}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Extracts ADR number from file name (e.g., "020-api-doc-tiefe.md" -> "020").
|
|
222
|
+
*/
|
|
223
|
+
extractAdrNumber(fileName) {
|
|
224
|
+
const match = fileName.match(/^(\d+)-/);
|
|
225
|
+
return match ? match[1] : fileName.replace('.md', '');
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Extracts title from ADR content (first # heading).
|
|
229
|
+
*/
|
|
230
|
+
extractTitle(content) {
|
|
231
|
+
const match = content.match(/^#\s+(.+)$/m);
|
|
232
|
+
return match ? match[1].trim() : 'Untitled ADR';
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Extracts file path references from ADR content.
|
|
236
|
+
* Looks for patterns like `src/path/file.ts`, `5d-database-plugin/src/path/file.ts`, or `[file.ts](src/path/file.ts)`.
|
|
237
|
+
* Normalizes paths to match database format by checking which format exists in the database.
|
|
238
|
+
*/
|
|
239
|
+
extractFileMappings(content, workspaceRoot) {
|
|
240
|
+
const filePaths = [];
|
|
241
|
+
// Pattern 1: Backtick patterns: `src/path/file.ts` or `5d-database-plugin/src/path/file.ts`
|
|
242
|
+
// Match group 1: full path including extension
|
|
243
|
+
const backtickPattern = /`([^`]+\.(?:ts|js|tsx|jsx|py|json|yaml|yml|md))`/g;
|
|
244
|
+
let match;
|
|
245
|
+
while ((match = backtickPattern.exec(content)) !== null) {
|
|
246
|
+
const filePath = match[1];
|
|
247
|
+
if (filePath && !filePath.startsWith('http') && !filePath.startsWith('mailto:') && !filePath.startsWith('#')) {
|
|
248
|
+
let normalizedPath = filePath.trim().replace(/\\/g, '/');
|
|
249
|
+
const finalPath = this.normalizeFilePath(normalizedPath, workspaceRoot);
|
|
250
|
+
if (finalPath) {
|
|
251
|
+
filePaths.push(finalPath);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// Pattern 2: Markdown link patterns: [file.ts](src/path/file.ts) or [file.ts](5d-database-plugin/src/path/file.ts)
|
|
256
|
+
// Match group 2: URL/path (the actual file path)
|
|
257
|
+
const linkPattern = /\[([^\]]+)\]\(([^)]+\.(?:ts|js|tsx|jsx|py|json|yaml|yml|md))\)/g;
|
|
258
|
+
while ((match = linkPattern.exec(content)) !== null) {
|
|
259
|
+
const filePath = match[2]; // Use the URL part, not the link text
|
|
260
|
+
if (filePath && !filePath.startsWith('http') && !filePath.startsWith('mailto:') && !filePath.startsWith('#')) {
|
|
261
|
+
let normalizedPath = filePath.trim().replace(/\\/g, '/');
|
|
262
|
+
const finalPath = this.normalizeFilePath(normalizedPath, workspaceRoot);
|
|
263
|
+
if (finalPath) {
|
|
264
|
+
filePaths.push(finalPath);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Pattern 3: Direct path patterns in code blocks or text: src/path/file.ts or 5d-database-plugin/src/path/file.ts
|
|
269
|
+
// This is more permissive and catches paths that might be in code examples
|
|
270
|
+
const directPathPattern = /(?:5d-database-plugin\/)?src\/[^\s\)`]+\.(?:ts|js|tsx|jsx|py)/g;
|
|
271
|
+
while ((match = directPathPattern.exec(content)) !== null) {
|
|
272
|
+
const filePath = match[0];
|
|
273
|
+
if (filePath && !filePath.startsWith('http') && !filePath.startsWith('mailto:') && !filePath.startsWith('#')) {
|
|
274
|
+
let normalizedPath = filePath.trim().replace(/\\/g, '/');
|
|
275
|
+
const finalPath = this.normalizeFilePath(normalizedPath, workspaceRoot);
|
|
276
|
+
if (finalPath) {
|
|
277
|
+
filePaths.push(finalPath);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// Remove duplicates and return
|
|
282
|
+
return [...new Set(filePaths)];
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Normalizes a file path to match database format.
|
|
286
|
+
* Checks if file exists with/without plugin prefix and returns the correct format.
|
|
287
|
+
*/
|
|
288
|
+
normalizeFilePath(filePath, workspaceRoot) {
|
|
289
|
+
if (!filePath || filePath.length < 3) {
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
// Normalize path: ensure forward slashes, remove leading/trailing whitespace
|
|
293
|
+
let normalizedPath = filePath.trim().replace(/\\/g, '/');
|
|
294
|
+
// If path starts with src/ and doesn't have plugin prefix, try to find the correct format
|
|
295
|
+
if (normalizedPath.startsWith('src/') && !normalizedPath.startsWith('5d-database-plugin/')) {
|
|
296
|
+
const withPrefix = `5d-database-plugin/${normalizedPath}`;
|
|
297
|
+
const fullPathWithPrefix = path.join(workspaceRoot, withPrefix);
|
|
298
|
+
const fullPathWithoutPrefix = path.join(workspaceRoot, normalizedPath);
|
|
299
|
+
// Check which file actually exists
|
|
300
|
+
if (fs.existsSync(fullPathWithPrefix)) {
|
|
301
|
+
return withPrefix;
|
|
302
|
+
}
|
|
303
|
+
else if (fs.existsSync(fullPathWithoutPrefix)) {
|
|
304
|
+
return normalizedPath;
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
// File doesn't exist, but try both variants in database
|
|
308
|
+
// Return the one with prefix (most common case)
|
|
309
|
+
return withPrefix;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
// If path already has plugin prefix, check if it exists
|
|
313
|
+
if (normalizedPath.startsWith('5d-database-plugin/')) {
|
|
314
|
+
const fullPath = path.join(workspaceRoot, normalizedPath);
|
|
315
|
+
if (fs.existsSync(fullPath)) {
|
|
316
|
+
return normalizedPath;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return normalizedPath;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Computes SHA256 hash of content.
|
|
323
|
+
*/
|
|
324
|
+
computeContentHash(content) {
|
|
325
|
+
return crypto.createHash('sha256').update(content).digest('hex');
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
exports.AdrIngestor = AdrIngestor;
|
|
329
|
+
//# sourceMappingURL=adr-ingestor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adr-ingestor.js","sourceRoot":"","sources":["../../src/ingestors/adr-ingestor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Dimension } from '../core/multi-db-manager';
|
|
2
|
+
/**
|
|
3
|
+
* Base interface for all ingestion modules.
|
|
4
|
+
* Each dimension has its own ingestor that reads from specific documentation files.
|
|
5
|
+
*/
|
|
6
|
+
export interface BaseIngestor {
|
|
7
|
+
/**
|
|
8
|
+
* Gets the dimension this ingestor handles.
|
|
9
|
+
*/
|
|
10
|
+
getDimension(): Dimension;
|
|
11
|
+
/**
|
|
12
|
+
* Performs a full ingestion of all data for this dimension.
|
|
13
|
+
*
|
|
14
|
+
* @param workspaceRoot The workspace root directory
|
|
15
|
+
* @param pluginId The plugin ID
|
|
16
|
+
* @param docsPath The path to the docs directory
|
|
17
|
+
* @returns Promise that resolves when ingestion is complete
|
|
18
|
+
*/
|
|
19
|
+
ingestFull(workspaceRoot: string, pluginId: string, docsPath: string): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Performs an incremental ingestion, only processing changed files.
|
|
22
|
+
*
|
|
23
|
+
* @param workspaceRoot The workspace root directory
|
|
24
|
+
* @param pluginId The plugin ID
|
|
25
|
+
* @param docsPath The path to the docs directory
|
|
26
|
+
* @returns Promise that resolves when ingestion is complete
|
|
27
|
+
*/
|
|
28
|
+
ingestIncremental(workspaceRoot: string, pluginId: string, docsPath: string): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=base-ingestor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-ingestor.d.ts","sourceRoot":"","sources":["../../src/ingestors/base-ingestor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB;;OAEG;IACH,YAAY,IAAI,SAAS,CAAC;IAE1B;;;;;;;OAOG;IACH,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErF;;;;;;;OAOG;IACH,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-ingestor.js","sourceRoot":"","sources":["../../src/ingestors/base-ingestor.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { BaseIngestor } from './base-ingestor';
|
|
2
|
+
import { Dimension } from '../core/multi-db-manager';
|
|
3
|
+
import { MultiDbManager } from '../core/multi-db-manager';
|
|
4
|
+
/**
|
|
5
|
+
* Ingests change reports from docs/system/CHANGE_REPORT.md (T-Dimension)
|
|
6
|
+
* Changes are immutable - always creates new entries
|
|
7
|
+
*/
|
|
8
|
+
export declare class ChangeIngestor implements BaseIngestor {
|
|
9
|
+
private dbManager;
|
|
10
|
+
constructor(dbManager: MultiDbManager);
|
|
11
|
+
getDimension(): Dimension;
|
|
12
|
+
ingestFull(workspaceRoot: string, pluginId: string, docsPath: string): Promise<void>;
|
|
13
|
+
ingestIncremental(workspaceRoot: string, pluginId: string, docsPath: string): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Parses and ingests a change report.
|
|
16
|
+
*/
|
|
17
|
+
private parseAndIngestChangeReport;
|
|
18
|
+
/**
|
|
19
|
+
* Parses change report header.
|
|
20
|
+
* Supports both English and German labels.
|
|
21
|
+
*/
|
|
22
|
+
private parseChangeReport;
|
|
23
|
+
/**
|
|
24
|
+
* Parses symbol changes from change report.
|
|
25
|
+
*/
|
|
26
|
+
private parseSymbolChanges;
|
|
27
|
+
/**
|
|
28
|
+
* Parses dependency changes from change report.
|
|
29
|
+
*/
|
|
30
|
+
private parseDependencyChanges;
|
|
31
|
+
/**
|
|
32
|
+
* Extracts file path from context lines.
|
|
33
|
+
*/
|
|
34
|
+
private extractFilePath;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=change-ingestor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-ingestor.d.ts","sourceRoot":"","sources":["../../src/ingestors/change-ingestor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D;;;GAGG;AACH,qBAAa,cAAe,YAAW,YAAY;IAC/C,OAAO,CAAC,SAAS,CAAiB;gBAEtB,SAAS,EAAE,cAAc;IAI9B,YAAY,IAAI,SAAS;IAInB,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBpF,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BxG;;OAEG;YACW,0BAA0B;IAyBxC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAiCzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoC1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;OAEG;IACH,OAAO,CAAC,eAAe;CAW1B"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ChangeIngestor = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const uuid_1 = require("uuid");
|
|
40
|
+
const change_repository_1 = require("../repositories/change-repository");
|
|
41
|
+
/**
|
|
42
|
+
* Ingests change reports from docs/system/CHANGE_REPORT.md (T-Dimension)
|
|
43
|
+
* Changes are immutable - always creates new entries
|
|
44
|
+
*/
|
|
45
|
+
class ChangeIngestor {
|
|
46
|
+
constructor(dbManager) {
|
|
47
|
+
this.dbManager = dbManager;
|
|
48
|
+
}
|
|
49
|
+
getDimension() {
|
|
50
|
+
return 'T';
|
|
51
|
+
}
|
|
52
|
+
async ingestFull(workspaceRoot, pluginId, docsPath) {
|
|
53
|
+
if (!docsPath) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const changeFile = path.join(docsPath, 'system', 'CHANGE_REPORT.md');
|
|
57
|
+
if (!fs.existsSync(changeFile)) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const db = await this.dbManager.getDatabase('T');
|
|
61
|
+
const repository = new change_repository_1.ChangeRepository(db);
|
|
62
|
+
const content = fs.readFileSync(changeFile, 'utf-8');
|
|
63
|
+
await this.parseAndIngestChangeReport(content, pluginId, repository);
|
|
64
|
+
}
|
|
65
|
+
async ingestIncremental(workspaceRoot, pluginId, docsPath) {
|
|
66
|
+
if (!docsPath) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const changeFile = path.join(docsPath, 'system', 'CHANGE_REPORT.md');
|
|
70
|
+
if (!fs.existsSync(changeFile)) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const db = await this.dbManager.getDatabase('T');
|
|
74
|
+
const repository = new change_repository_1.ChangeRepository(db);
|
|
75
|
+
const latest = await repository.getLatest(pluginId);
|
|
76
|
+
const content = fs.readFileSync(changeFile, 'utf-8');
|
|
77
|
+
if (latest) {
|
|
78
|
+
const latestTimestamp = latest.created_at.toISOString();
|
|
79
|
+
if (content.includes(latestTimestamp)) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
await this.parseAndIngestChangeReport(content, pluginId, repository);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Parses and ingests a change report.
|
|
87
|
+
*/
|
|
88
|
+
async parseAndIngestChangeReport(content, pluginId, repository) {
|
|
89
|
+
const report = this.parseChangeReport(content, pluginId);
|
|
90
|
+
await repository.create(report);
|
|
91
|
+
const symbolChanges = this.parseSymbolChanges(content);
|
|
92
|
+
for (const change of symbolChanges) {
|
|
93
|
+
await repository.createSymbolChange({
|
|
94
|
+
...change,
|
|
95
|
+
report_id: report.id
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
const dependencyChanges = this.parseDependencyChanges(content);
|
|
99
|
+
for (const change of dependencyChanges) {
|
|
100
|
+
await repository.createDependencyChange({
|
|
101
|
+
...change,
|
|
102
|
+
report_id: report.id
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Parses change report header.
|
|
108
|
+
* Supports both English and German labels.
|
|
109
|
+
*/
|
|
110
|
+
parseChangeReport(content, pluginId) {
|
|
111
|
+
// Run Type / Letzter Lauf
|
|
112
|
+
const runTypeMatch = content.match(/(?:Run Type|Letzter Lauf):\s*(\w+)/i);
|
|
113
|
+
// Parsed Files / Geparste Dateien
|
|
114
|
+
const parsedFilesMatch = content.match(/(?:Parsed Files|Geparste Dateien):\s*(\d+)/i);
|
|
115
|
+
// Skipped Files / Übersprungene Dateien
|
|
116
|
+
const skippedFilesMatch = content.match(/(?:Skipped Files|Übersprungene Dateien):\s*(\d+)/i);
|
|
117
|
+
// Total Dependencies / Gesamt: X Dependencies
|
|
118
|
+
const totalDepsMatch = content.match(/(?:Total Dependencies:\s*(\d+)|Gesamt:\s*(\d+)\s+Dependencies)/i);
|
|
119
|
+
const totalDeps = totalDepsMatch?.[1] || totalDepsMatch?.[2] || '0';
|
|
120
|
+
// Validation Errors / Validierungsfehler / Fehler
|
|
121
|
+
const validationErrorsMatch = content.match(/(?:Validation Errors|Validierungsfehler|Fehler):\s*(\d+)/i);
|
|
122
|
+
// Validation Warnings / Validierungswarnungen / Warnungen
|
|
123
|
+
const validationWarningsMatch = content.match(/(?:Validation Warnings|Validierungswarnungen|Warnungen):\s*(\d+)/i);
|
|
124
|
+
return {
|
|
125
|
+
id: (0, uuid_1.v4)(),
|
|
126
|
+
plugin_id: pluginId,
|
|
127
|
+
run_type: (runTypeMatch?.[1]?.toLowerCase() === 'incremental' ? 'incremental' : 'full'),
|
|
128
|
+
parsed_files: parseInt(parsedFilesMatch?.[1] || '0', 10),
|
|
129
|
+
skipped_files: parseInt(skippedFilesMatch?.[1] || '0', 10),
|
|
130
|
+
total_dependencies: parseInt(totalDeps, 10),
|
|
131
|
+
validation_errors: parseInt(validationErrorsMatch?.[1] || '0', 10),
|
|
132
|
+
validation_warnings: parseInt(validationWarningsMatch?.[1] || '0', 10),
|
|
133
|
+
created_at: new Date()
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Parses symbol changes from change report.
|
|
138
|
+
*/
|
|
139
|
+
parseSymbolChanges(content) {
|
|
140
|
+
const changes = [];
|
|
141
|
+
const lines = content.split('\n');
|
|
142
|
+
let inSymbolChangesSection = false;
|
|
143
|
+
for (let i = 0; i < lines.length; i++) {
|
|
144
|
+
const line = lines[i].trim();
|
|
145
|
+
if (line.includes('Symbol Changes') || line.includes('## Symbol Changes')) {
|
|
146
|
+
inSymbolChangesSection = true;
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
if (inSymbolChangesSection && (line.startsWith('##') || line.startsWith('# '))) {
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
if (inSymbolChangesSection && line.match(/^[-*]\s*(added|removed|changed):/i)) {
|
|
153
|
+
const match = line.match(/^[-*]\s*(\w+):\s*(.+?)\s+\((\w+)\)/i);
|
|
154
|
+
if (match) {
|
|
155
|
+
changes.push({
|
|
156
|
+
id: (0, uuid_1.v4)(),
|
|
157
|
+
change_type: match[1].toLowerCase(),
|
|
158
|
+
file_path: this.extractFilePath(lines, i),
|
|
159
|
+
symbol_name: match[2],
|
|
160
|
+
symbol_kind: match[3],
|
|
161
|
+
old_signature: null,
|
|
162
|
+
new_signature: null
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return changes;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Parses dependency changes from change report.
|
|
171
|
+
*/
|
|
172
|
+
parseDependencyChanges(content) {
|
|
173
|
+
const changes = [];
|
|
174
|
+
const lines = content.split('\n');
|
|
175
|
+
let inDependencyChangesSection = false;
|
|
176
|
+
for (let i = 0; i < lines.length; i++) {
|
|
177
|
+
const line = lines[i].trim();
|
|
178
|
+
if (line.includes('Dependency Changes') || line.includes('## Dependency Changes')) {
|
|
179
|
+
inDependencyChangesSection = true;
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
if (inDependencyChangesSection && (line.startsWith('##') || line.startsWith('# '))) {
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
if (inDependencyChangesSection && line.match(/^[-*]\s*(added|removed):/i)) {
|
|
186
|
+
const match = line.match(/^[-*]\s*(\w+):\s*(.+?)\s+->\s+(.+?)\s+\[(\w+)\]/i);
|
|
187
|
+
if (match) {
|
|
188
|
+
changes.push({
|
|
189
|
+
id: (0, uuid_1.v4)(),
|
|
190
|
+
change_type: match[1].toLowerCase(),
|
|
191
|
+
from_module: match[2].trim(),
|
|
192
|
+
to_module: match[3].trim(),
|
|
193
|
+
dependency_type: match[4]
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return changes;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Extracts file path from context lines.
|
|
202
|
+
*/
|
|
203
|
+
extractFilePath(lines, currentIndex) {
|
|
204
|
+
for (let i = currentIndex - 5; i <= currentIndex; i++) {
|
|
205
|
+
if (i >= 0 && i < lines.length) {
|
|
206
|
+
const match = lines[i].match(/`([^`]+\.(ts|js|tsx|jsx|py))`/);
|
|
207
|
+
if (match) {
|
|
208
|
+
return match[1];
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return 'unknown';
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
exports.ChangeIngestor = ChangeIngestor;
|
|
216
|
+
//# sourceMappingURL=change-ingestor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-ingestor.js","sourceRoot":"","sources":["../../src/ingestors/change-ingestor.ts"],"names":[],"mappings":"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"}
|