@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,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SearchApi = void 0;
|
|
4
|
+
const module_api_1 = require("./module-api");
|
|
5
|
+
const symbol_api_1 = require("./symbol-api");
|
|
6
|
+
const adr_api_1 = require("./adr-api");
|
|
7
|
+
const dependency_api_1 = require("./dependency-api");
|
|
8
|
+
const change_api_1 = require("./change-api");
|
|
9
|
+
/**
|
|
10
|
+
* API for keyword search across all 5 dimensions.
|
|
11
|
+
*/
|
|
12
|
+
class SearchApi {
|
|
13
|
+
constructor(dbManager) {
|
|
14
|
+
this.dbManager = dbManager;
|
|
15
|
+
this.moduleApi = new module_api_1.ModuleApi(dbManager);
|
|
16
|
+
this.symbolApi = new symbol_api_1.SymbolApi(dbManager);
|
|
17
|
+
this.adrApi = new adr_api_1.AdrApi(dbManager);
|
|
18
|
+
this.dependencyApi = new dependency_api_1.DependencyApi(dbManager);
|
|
19
|
+
this.changeApi = new change_api_1.ChangeApi(dbManager);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Searches across all dimensions.
|
|
23
|
+
*/
|
|
24
|
+
async searchAll(query, pluginId, options = {}) {
|
|
25
|
+
const limit = options.limit || 20;
|
|
26
|
+
const caseSensitive = options.caseSensitive || false;
|
|
27
|
+
const results = [];
|
|
28
|
+
// Search in parallel across all dimensions
|
|
29
|
+
const [modules, symbols, adrs, dependencies, changes] = await Promise.all([
|
|
30
|
+
this.searchModules(query, pluginId, limit, caseSensitive),
|
|
31
|
+
this.searchSymbols(query, pluginId, limit, caseSensitive),
|
|
32
|
+
this.searchAdrs(query, pluginId, limit, caseSensitive),
|
|
33
|
+
this.searchDependencies(query, pluginId, limit, caseSensitive),
|
|
34
|
+
this.searchChanges(query, pluginId, limit, caseSensitive)
|
|
35
|
+
]);
|
|
36
|
+
results.push(...modules, ...symbols, ...adrs, ...dependencies, ...changes);
|
|
37
|
+
// Sort by relevance (exact matches first, then by dimension)
|
|
38
|
+
return this.sortByRelevance(results, query);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Searches in X-Dimension (Modules).
|
|
42
|
+
*/
|
|
43
|
+
async searchModules(query, pluginId, limit, caseSensitive) {
|
|
44
|
+
const db = await this.dbManager.getDatabase('X');
|
|
45
|
+
const searchPattern = caseSensitive ? `%${query}%` : `%${query.toLowerCase()}%`;
|
|
46
|
+
const exactPattern = caseSensitive ? `%${query}%` : `%${query.toLowerCase()}%`;
|
|
47
|
+
const rows = await this.queryDatabase(db, `SELECT * FROM modules
|
|
48
|
+
WHERE plugin_id = ?
|
|
49
|
+
AND deleted_at IS NULL
|
|
50
|
+
AND (
|
|
51
|
+
${caseSensitive ? 'file_path LIKE ?' : 'LOWER(file_path) LIKE ?'}
|
|
52
|
+
OR ${caseSensitive ? 'content_markdown LIKE ?' : 'LOWER(content_markdown) LIKE ?'}
|
|
53
|
+
)
|
|
54
|
+
ORDER BY
|
|
55
|
+
CASE WHEN ${caseSensitive ? 'file_path' : 'LOWER(file_path)'} LIKE ? THEN 1 ELSE 2 END,
|
|
56
|
+
file_path
|
|
57
|
+
LIMIT ?`, caseSensitive
|
|
58
|
+
? [pluginId, searchPattern, searchPattern, exactPattern, limit]
|
|
59
|
+
: [pluginId, searchPattern, searchPattern, exactPattern, limit]);
|
|
60
|
+
return rows.map((row) => ({
|
|
61
|
+
dimension: 'X',
|
|
62
|
+
id: row.id,
|
|
63
|
+
label: row.file_path,
|
|
64
|
+
description: `Module: ${row.file_path}`,
|
|
65
|
+
filePath: row.file_path,
|
|
66
|
+
metadata: {
|
|
67
|
+
contentHash: row.content_hash,
|
|
68
|
+
createdAt: row.created_at
|
|
69
|
+
}
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Searches in Y-Dimension (Symbols).
|
|
74
|
+
*/
|
|
75
|
+
async searchSymbols(query, pluginId, limit, caseSensitive) {
|
|
76
|
+
const db = await this.dbManager.getDatabase('Y');
|
|
77
|
+
const searchPattern = caseSensitive ? `%${query}%` : `%${query.toLowerCase()}%`;
|
|
78
|
+
const exactPattern = caseSensitive ? `%${query}%` : `%${query.toLowerCase()}%`;
|
|
79
|
+
const rows = await this.queryDatabase(db, `SELECT * FROM symbols
|
|
80
|
+
WHERE plugin_id = ?
|
|
81
|
+
AND deleted_at IS NULL
|
|
82
|
+
AND (
|
|
83
|
+
${caseSensitive ? 'name LIKE ?' : 'LOWER(name) LIKE ?'}
|
|
84
|
+
OR ${caseSensitive ? 'path LIKE ?' : 'LOWER(path) LIKE ?'}
|
|
85
|
+
OR (summary IS NOT NULL AND ${caseSensitive ? 'summary LIKE ?' : 'LOWER(summary) LIKE ?'})
|
|
86
|
+
)
|
|
87
|
+
ORDER BY
|
|
88
|
+
CASE WHEN ${caseSensitive ? 'name' : 'LOWER(name)'} LIKE ? THEN 1 ELSE 2 END,
|
|
89
|
+
name
|
|
90
|
+
LIMIT ?`, caseSensitive
|
|
91
|
+
? [pluginId, searchPattern, searchPattern, searchPattern, exactPattern, limit]
|
|
92
|
+
: [pluginId, searchPattern, searchPattern, searchPattern, exactPattern, limit]);
|
|
93
|
+
return rows.map((row) => ({
|
|
94
|
+
dimension: 'Y',
|
|
95
|
+
id: row.symbol_id,
|
|
96
|
+
label: `${row.name} (${row.kind})`,
|
|
97
|
+
description: `Symbol in ${row.path}`,
|
|
98
|
+
filePath: row.path,
|
|
99
|
+
metadata: {
|
|
100
|
+
kind: row.kind,
|
|
101
|
+
symbolId: row.symbol_id
|
|
102
|
+
}
|
|
103
|
+
}));
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Searches in W-Dimension (ADRs).
|
|
107
|
+
*/
|
|
108
|
+
async searchAdrs(query, pluginId, limit, caseSensitive) {
|
|
109
|
+
const db = await this.dbManager.getDatabase('W');
|
|
110
|
+
const searchPattern = caseSensitive ? `%${query}%` : `%${query.toLowerCase()}%`;
|
|
111
|
+
const exactPattern = caseSensitive ? `%${query}%` : `%${query.toLowerCase()}%`;
|
|
112
|
+
const rows = await this.queryDatabase(db, `SELECT * FROM adrs
|
|
113
|
+
WHERE plugin_id = ?
|
|
114
|
+
AND deleted_at IS NULL
|
|
115
|
+
AND (
|
|
116
|
+
${caseSensitive ? 'title LIKE ?' : 'LOWER(title) LIKE ?'}
|
|
117
|
+
OR ${caseSensitive ? 'adr_number LIKE ?' : 'LOWER(adr_number) LIKE ?'}
|
|
118
|
+
OR ${caseSensitive ? 'content_markdown LIKE ?' : 'LOWER(content_markdown) LIKE ?'}
|
|
119
|
+
)
|
|
120
|
+
ORDER BY
|
|
121
|
+
CASE WHEN ${caseSensitive ? 'title' : 'LOWER(title)'} LIKE ? THEN 1 ELSE 2 END,
|
|
122
|
+
adr_number
|
|
123
|
+
LIMIT ?`, caseSensitive
|
|
124
|
+
? [pluginId, searchPattern, searchPattern, searchPattern, exactPattern, limit]
|
|
125
|
+
: [pluginId, searchPattern, searchPattern, searchPattern, exactPattern, limit]);
|
|
126
|
+
return rows.map((row) => ({
|
|
127
|
+
dimension: 'W',
|
|
128
|
+
id: row.adr_number,
|
|
129
|
+
label: `ADR-${row.adr_number}: ${row.title}`,
|
|
130
|
+
description: `Architecture Decision Record`,
|
|
131
|
+
metadata: {
|
|
132
|
+
fileName: row.file_name,
|
|
133
|
+
adrNumber: row.adr_number
|
|
134
|
+
}
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Searches in Z-Dimension (Dependencies).
|
|
139
|
+
*/
|
|
140
|
+
async searchDependencies(query, pluginId, limit, caseSensitive) {
|
|
141
|
+
const db = await this.dbManager.getDatabase('Z');
|
|
142
|
+
const searchPattern = caseSensitive ? `%${query}%` : `%${query.toLowerCase()}%`;
|
|
143
|
+
const exactPattern = caseSensitive ? `%${query}%` : `%${query.toLowerCase()}%`;
|
|
144
|
+
const rows = await this.queryDatabase(db, `SELECT * FROM dependencies
|
|
145
|
+
WHERE plugin_id = ?
|
|
146
|
+
AND (
|
|
147
|
+
${caseSensitive ? 'from_module LIKE ?' : 'LOWER(from_module) LIKE ?'}
|
|
148
|
+
OR ${caseSensitive ? 'to_module LIKE ?' : 'LOWER(to_module) LIKE ?'}
|
|
149
|
+
)
|
|
150
|
+
ORDER BY
|
|
151
|
+
CASE WHEN ${caseSensitive ? 'from_module' : 'LOWER(from_module)'} LIKE ? THEN 1 ELSE 2 END,
|
|
152
|
+
from_module, to_module
|
|
153
|
+
LIMIT ?`, caseSensitive
|
|
154
|
+
? [pluginId, searchPattern, searchPattern, exactPattern, limit]
|
|
155
|
+
: [pluginId, searchPattern, searchPattern, exactPattern, limit]);
|
|
156
|
+
return rows.map((row) => ({
|
|
157
|
+
dimension: 'Z',
|
|
158
|
+
id: row.id,
|
|
159
|
+
label: `${row.from_module} → ${row.to_module}`,
|
|
160
|
+
description: `Dependency: ${row.dependency_type}`,
|
|
161
|
+
metadata: {
|
|
162
|
+
dependencyType: row.dependency_type,
|
|
163
|
+
fromModule: row.from_module,
|
|
164
|
+
toModule: row.to_module
|
|
165
|
+
}
|
|
166
|
+
}));
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Searches in T-Dimension (Changes).
|
|
170
|
+
*/
|
|
171
|
+
async searchChanges(query, pluginId, limit, caseSensitive) {
|
|
172
|
+
const db = await this.dbManager.getDatabase('T');
|
|
173
|
+
// Changes are searched by date or run type
|
|
174
|
+
const searchPattern = caseSensitive ? `%${query}%` : `%${query.toLowerCase()}%`;
|
|
175
|
+
const rows = await this.queryDatabase(db, `SELECT * FROM change_reports
|
|
176
|
+
WHERE plugin_id = ?
|
|
177
|
+
AND (
|
|
178
|
+
${caseSensitive ? 'run_type LIKE ?' : 'LOWER(run_type) LIKE ?'}
|
|
179
|
+
OR CAST(created_at AS TEXT) LIKE ?
|
|
180
|
+
)
|
|
181
|
+
ORDER BY created_at DESC
|
|
182
|
+
LIMIT ?`, [pluginId, searchPattern, searchPattern, limit]);
|
|
183
|
+
return rows.map((row) => ({
|
|
184
|
+
dimension: 'T',
|
|
185
|
+
id: row.id,
|
|
186
|
+
label: `${row.run_type} - ${new Date(row.created_at).toLocaleDateString()}`,
|
|
187
|
+
description: `${row.parsed_files} files, ${row.total_dependencies} deps`,
|
|
188
|
+
metadata: {
|
|
189
|
+
runType: row.run_type,
|
|
190
|
+
parsedFiles: row.parsed_files.toString(),
|
|
191
|
+
totalDependencies: row.total_dependencies.toString()
|
|
192
|
+
}
|
|
193
|
+
}));
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Helper method to query database directly.
|
|
197
|
+
*/
|
|
198
|
+
async queryDatabase(db, sql, params) {
|
|
199
|
+
return new Promise((resolve, reject) => {
|
|
200
|
+
db.all(sql, params, (err, rows) => {
|
|
201
|
+
if (err) {
|
|
202
|
+
reject(err);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
resolve(rows || []);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Sorts results by relevance (exact matches first, then by dimension order).
|
|
212
|
+
*/
|
|
213
|
+
sortByRelevance(results, query) {
|
|
214
|
+
const queryLower = query.toLowerCase();
|
|
215
|
+
return results.sort((a, b) => {
|
|
216
|
+
// Exact match in label gets highest priority
|
|
217
|
+
const aExact = a.label.toLowerCase().includes(queryLower);
|
|
218
|
+
const bExact = b.label.toLowerCase().includes(queryLower);
|
|
219
|
+
if (aExact && !bExact)
|
|
220
|
+
return -1;
|
|
221
|
+
if (!aExact && bExact)
|
|
222
|
+
return 1;
|
|
223
|
+
// Then sort by dimension order: X, Y, Z, W, T
|
|
224
|
+
const dimensionOrder = { X: 1, Y: 2, Z: 3, W: 4, T: 5 };
|
|
225
|
+
const aOrder = dimensionOrder[a.dimension] || 99;
|
|
226
|
+
const bOrder = dimensionOrder[b.dimension] || 99;
|
|
227
|
+
if (aOrder !== bOrder)
|
|
228
|
+
return aOrder - bOrder;
|
|
229
|
+
// Finally sort alphabetically by label
|
|
230
|
+
return a.label.localeCompare(b.label);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
exports.SearchApi = SearchApi;
|
|
235
|
+
//# sourceMappingURL=search-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-api.js","sourceRoot":"","sources":["../../src/api/search-api.ts"],"names":[],"mappings":";;;AACA,6CAAyC;AACzC,6CAAyC;AACzC,uCAAmC;AACnC,qDAAiD;AACjD,6CAAyC;AAsBzC;;GAEG;AACH,MAAa,SAAS;IAQlB,YAAY,SAAyB;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,IAAI,8BAAa,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,QAAgB,EAAE,UAAyB,EAAE;QAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;QAErD,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,2CAA2C;QAC3C,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC;YACzD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC;YACzD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC;YACtD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC;YAC9D,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC;SAC5D,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,CAAC;QAE3E,6DAA6D;QAC7D,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAa,EAAE,aAAsB;QAC9F,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QAChF,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QAE/E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CACjC,EAAE,EACF;;;;mBAIO,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,yBAAyB;sBAC3D,aAAa,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,gCAAgC;;;6BAGrE,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB;;qBAExD,EACT,aAAa;YACT,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC;YAC/D,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,CACtE,CAAC;QAEF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;YAC3B,SAAS,EAAE,GAAY;YACvB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,GAAG,CAAC,SAAS;YACpB,WAAW,EAAE,WAAW,GAAG,CAAC,SAAS,EAAE;YACvC,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,QAAQ,EAAE;gBACN,WAAW,EAAE,GAAG,CAAC,YAAY;gBAC7B,SAAS,EAAE,GAAG,CAAC,UAAU;aAC5B;SACJ,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAa,EAAE,aAAsB;QAC9F,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QAChF,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QAE/E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CACjC,EAAE,EACF;;;;mBAIO,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB;sBACjD,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB;+CAC3B,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,uBAAuB;;;6BAG5E,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa;;qBAE9C,EACT,aAAa;YACT,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC;YAC9E,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,CACrF,CAAC;QAEF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;YAC3B,SAAS,EAAE,GAAY;YACvB,EAAE,EAAE,GAAG,CAAC,SAAS;YACjB,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG;YAClC,WAAW,EAAE,aAAa,GAAG,CAAC,IAAI,EAAE;YACpC,QAAQ,EAAE,GAAG,CAAC,IAAI;YAClB,QAAQ,EAAE;gBACN,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,QAAQ,EAAE,GAAG,CAAC,SAAS;aAC1B;SACJ,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAa,EAAE,aAAsB;QAC3F,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QAChF,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QAE/E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CACjC,EAAE,EACF;;;;mBAIO,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,qBAAqB;sBACnD,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,0BAA0B;sBAChE,aAAa,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,gCAAgC;;;6BAGrE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc;;qBAEhD,EACT,aAAa;YACT,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC;YAC9E,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,CACrF,CAAC;QAEF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;YAC3B,SAAS,EAAE,GAAY;YACvB,EAAE,EAAE,GAAG,CAAC,UAAU;YAClB,KAAK,EAAE,OAAO,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,KAAK,EAAE;YAC5C,WAAW,EAAE,8BAA8B;YAC3C,QAAQ,EAAE;gBACN,QAAQ,EAAE,GAAG,CAAC,SAAS;gBACvB,SAAS,EAAE,GAAG,CAAC,UAAU;aAC5B;SACJ,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAa,EAAE,aAAsB;QACnG,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QAChF,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QAE/E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CACjC,EAAE,EACF;;;mBAGO,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,2BAA2B;sBAC/D,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,yBAAyB;;;6BAGvD,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB;;qBAE5D,EACT,aAAa;YACT,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC;YAC/D,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,CACtE,CAAC;QAEF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;YAC3B,SAAS,EAAE,GAAY;YACvB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,GAAG,GAAG,CAAC,WAAW,MAAM,GAAG,CAAC,SAAS,EAAE;YAC9C,WAAW,EAAE,eAAe,GAAG,CAAC,eAAe,EAAE;YACjD,QAAQ,EAAE;gBACN,cAAc,EAAE,GAAG,CAAC,eAAe;gBACnC,UAAU,EAAE,GAAG,CAAC,WAAW;gBAC3B,QAAQ,EAAE,GAAG,CAAC,SAAS;aAC1B;SACJ,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAa,EAAE,aAAsB;QAC9F,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEjD,2CAA2C;QAC3C,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QAEhF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CACjC,EAAE,EACF;;;mBAGO,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,wBAAwB;;;;qBAI1D,EACT,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,CAAC,CAClD,CAAC;QAEF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;YAC3B,SAAS,EAAE,GAAY;YACvB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,GAAG,GAAG,CAAC,QAAQ,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,EAAE;YAC3E,WAAW,EAAE,GAAG,GAAG,CAAC,YAAY,WAAW,GAAG,CAAC,kBAAkB,OAAO;YACxE,QAAQ,EAAE;gBACN,OAAO,EAAE,GAAG,CAAC,QAAQ;gBACrB,WAAW,EAAE,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE;gBACxC,iBAAiB,EAAE,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE;aACvD;SACJ,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAI,EAAO,EAAE,GAAW,EAAE,MAAa;QAC9D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,GAAiB,EAAE,IAAqB,EAAE,EAAE;gBAC7D,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBACxB,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,OAAuB,EAAE,KAAa;QAC1D,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAEvC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,6CAA6C;YAC7C,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAE1D,IAAI,MAAM,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,IAAI,MAAM;gBAAE,OAAO,CAAC,CAAC;YAEhC,8CAA8C;YAC9C,MAAM,cAAc,GAA2B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAChF,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAEjD,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,MAAM,GAAG,MAAM,CAAC;YAE9C,uCAAuC;YACvC,OAAO,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AApRD,8BAoRC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { MultiDbManager } from '../core/multi-db-manager';
|
|
2
|
+
import { EntityReference } from '../models/entity-reference';
|
|
3
|
+
/**
|
|
4
|
+
* System explanation interface.
|
|
5
|
+
* Describes what the system is, how it works, and entry points.
|
|
6
|
+
*/
|
|
7
|
+
export interface SystemExplanation {
|
|
8
|
+
what_am_i: string;
|
|
9
|
+
how_do_i_work: string;
|
|
10
|
+
dimensions: Array<{
|
|
11
|
+
id: 'X' | 'Y' | 'Z' | 'W' | 'T';
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
entity_count?: number;
|
|
15
|
+
}>;
|
|
16
|
+
entry_points: Array<EntityReference & {
|
|
17
|
+
reason?: string;
|
|
18
|
+
}>;
|
|
19
|
+
architecture_adrs: Array<{
|
|
20
|
+
adr_number: string;
|
|
21
|
+
title: string;
|
|
22
|
+
}>;
|
|
23
|
+
suggested_start: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* System overview interface.
|
|
27
|
+
*/
|
|
28
|
+
export interface SystemOverview {
|
|
29
|
+
total_modules: number;
|
|
30
|
+
total_symbols: number;
|
|
31
|
+
total_dependencies: number;
|
|
32
|
+
total_adrs: number;
|
|
33
|
+
total_change_reports: number;
|
|
34
|
+
entry_points: Array<EntityReference & {
|
|
35
|
+
reason?: string;
|
|
36
|
+
}>;
|
|
37
|
+
architecture_adrs: Array<{
|
|
38
|
+
adr_number: string;
|
|
39
|
+
title: string;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* API for system self-explanation.
|
|
44
|
+
* Provides meta-information about the system WITHOUT AI generation.
|
|
45
|
+
*/
|
|
46
|
+
export declare class SelfExplanationApi {
|
|
47
|
+
private dbManager;
|
|
48
|
+
private adrApi;
|
|
49
|
+
private moduleApi;
|
|
50
|
+
private symbolApi;
|
|
51
|
+
private dependencyApi;
|
|
52
|
+
private changeApi;
|
|
53
|
+
constructor(dbManager: MultiDbManager);
|
|
54
|
+
/**
|
|
55
|
+
* Gets system overview with statistics and entry points.
|
|
56
|
+
*/
|
|
57
|
+
getSystemOverview(pluginId: string): Promise<SystemOverview>;
|
|
58
|
+
/**
|
|
59
|
+
* Explains the system: what it is, how it works, entry points, and architecture ADRs.
|
|
60
|
+
*/
|
|
61
|
+
explainSystem(pluginId: string): Promise<SystemExplanation>;
|
|
62
|
+
/**
|
|
63
|
+
* Gets entry points for the system.
|
|
64
|
+
*/
|
|
65
|
+
private getEntryPoints;
|
|
66
|
+
/**
|
|
67
|
+
* Gets architecture ADRs (typically ADR-001, ADR-002, etc.).
|
|
68
|
+
*/
|
|
69
|
+
private getArchitectureAdrs;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=self-explanation-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-explanation-api.d.ts","sourceRoot":"","sources":["../../src/api/self-explanation-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO1D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;IACH,YAAY,EAAE,KAAK,CAAC,eAAe,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,iBAAiB,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,eAAe,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,iBAAiB,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAY;gBAEjB,SAAS,EAAE,cAAc;IASrC;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAyBlE;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA8DjE;;OAEG;YACW,cAAc;IAsB5B;;OAEG;YACW,mBAAmB;CAsBpC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SelfExplanationApi = void 0;
|
|
4
|
+
const navigation_repository_1 = require("../repositories/navigation-repository");
|
|
5
|
+
const adr_api_1 = require("./adr-api");
|
|
6
|
+
const module_api_1 = require("./module-api");
|
|
7
|
+
const symbol_api_1 = require("./symbol-api");
|
|
8
|
+
const dependency_api_1 = require("./dependency-api");
|
|
9
|
+
const change_api_1 = require("./change-api");
|
|
10
|
+
/**
|
|
11
|
+
* API for system self-explanation.
|
|
12
|
+
* Provides meta-information about the system WITHOUT AI generation.
|
|
13
|
+
*/
|
|
14
|
+
class SelfExplanationApi {
|
|
15
|
+
constructor(dbManager) {
|
|
16
|
+
this.dbManager = dbManager;
|
|
17
|
+
this.adrApi = new adr_api_1.AdrApi(dbManager);
|
|
18
|
+
this.moduleApi = new module_api_1.ModuleApi(dbManager);
|
|
19
|
+
this.symbolApi = new symbol_api_1.SymbolApi(dbManager);
|
|
20
|
+
this.dependencyApi = new dependency_api_1.DependencyApi(dbManager);
|
|
21
|
+
this.changeApi = new change_api_1.ChangeApi(dbManager);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Gets system overview with statistics and entry points.
|
|
25
|
+
*/
|
|
26
|
+
async getSystemOverview(pluginId) {
|
|
27
|
+
// Get statistics
|
|
28
|
+
const modules = await this.moduleApi.getAllModules(pluginId);
|
|
29
|
+
const symbols = await this.symbolApi.getAllSymbols(pluginId);
|
|
30
|
+
const dependencies = await this.dependencyApi.getAllDependencies(pluginId);
|
|
31
|
+
const adrs = await this.adrApi.getAllAdrs(pluginId);
|
|
32
|
+
const changeReports = await this.changeApi.getAllChangeReports(pluginId);
|
|
33
|
+
// Get entry points
|
|
34
|
+
const entryPoints = await this.getEntryPoints(pluginId);
|
|
35
|
+
// Get architecture ADRs
|
|
36
|
+
const architectureAdrs = await this.getArchitectureAdrs(pluginId);
|
|
37
|
+
return {
|
|
38
|
+
total_modules: modules.length,
|
|
39
|
+
total_symbols: symbols.length,
|
|
40
|
+
total_dependencies: dependencies.length,
|
|
41
|
+
total_adrs: adrs.length,
|
|
42
|
+
total_change_reports: changeReports.length,
|
|
43
|
+
entry_points: entryPoints,
|
|
44
|
+
architecture_adrs: architectureAdrs
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Explains the system: what it is, how it works, entry points, and architecture ADRs.
|
|
49
|
+
*/
|
|
50
|
+
async explainSystem(pluginId) {
|
|
51
|
+
// Get entry points
|
|
52
|
+
const entryPoints = await this.getEntryPoints(pluginId);
|
|
53
|
+
// Get architecture ADRs
|
|
54
|
+
const architectureAdrs = await this.getArchitectureAdrs(pluginId);
|
|
55
|
+
// Get dimension statistics
|
|
56
|
+
const modules = await this.moduleApi.getAllModules(pluginId);
|
|
57
|
+
const symbols = await this.symbolApi.getAllSymbols(pluginId);
|
|
58
|
+
const dependencies = await this.dependencyApi.getAllDependencies(pluginId);
|
|
59
|
+
const adrs = await this.adrApi.getAllAdrs(pluginId);
|
|
60
|
+
const changeReports = await this.changeApi.getAllChangeReports(pluginId);
|
|
61
|
+
// Determine suggested start
|
|
62
|
+
let suggestedStart = 'Start with MultiDbManager (core module)';
|
|
63
|
+
if (architectureAdrs.length > 0) {
|
|
64
|
+
const firstAdr = architectureAdrs[0];
|
|
65
|
+
suggestedStart = `Start with ${firstAdr.adr_number} (${firstAdr.title})`;
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
what_am_i: '5D Database Plugin - navigable code documentation system',
|
|
69
|
+
how_do_i_work: '5 dimensions (X,Y,Z,W,T) store different views of code: Modules (X), Symbols (Y), Dependencies (Z), ADRs (W), and Changes (T). Each dimension provides a different perspective on the codebase, enabling cross-dimensional navigation and analysis.',
|
|
70
|
+
dimensions: [
|
|
71
|
+
{
|
|
72
|
+
id: 'X',
|
|
73
|
+
name: 'Modules',
|
|
74
|
+
description: 'API documentation per file',
|
|
75
|
+
entity_count: modules.length
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: 'Y',
|
|
79
|
+
name: 'Symbols',
|
|
80
|
+
description: 'Symbols with dependencies',
|
|
81
|
+
entity_count: symbols.length
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: 'Z',
|
|
85
|
+
name: 'Dependencies',
|
|
86
|
+
description: 'Module dependencies',
|
|
87
|
+
entity_count: dependencies.length
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
id: 'W',
|
|
91
|
+
name: 'ADRs',
|
|
92
|
+
description: 'Architecture decisions',
|
|
93
|
+
entity_count: adrs.length
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
id: 'T',
|
|
97
|
+
name: 'Changes',
|
|
98
|
+
description: 'Change history',
|
|
99
|
+
entity_count: changeReports.length
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
entry_points: entryPoints,
|
|
103
|
+
architecture_adrs: architectureAdrs,
|
|
104
|
+
suggested_start: suggestedStart
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Gets entry points for the system.
|
|
109
|
+
*/
|
|
110
|
+
async getEntryPoints(pluginId) {
|
|
111
|
+
const db = await this.dbManager.getDatabase('V');
|
|
112
|
+
const navRepo = new navigation_repository_1.NavigationRepository(db);
|
|
113
|
+
const entryPoints = await navRepo.getEntryPoints('X', pluginId);
|
|
114
|
+
const result = [];
|
|
115
|
+
for (const ep of entryPoints) {
|
|
116
|
+
const module = await this.moduleApi.getModuleById(ep.entity_id, pluginId);
|
|
117
|
+
if (module) {
|
|
118
|
+
result.push({
|
|
119
|
+
dimension: 'X',
|
|
120
|
+
entity_id: ep.entity_id,
|
|
121
|
+
external_id: module.file_path,
|
|
122
|
+
reason: ep.importance_rank ? `Entry point (rank ${ep.importance_rank})` : 'Entry point'
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Gets architecture ADRs (typically ADR-001, ADR-002, etc.).
|
|
130
|
+
*/
|
|
131
|
+
async getArchitectureAdrs(pluginId) {
|
|
132
|
+
const allAdrs = await this.adrApi.getAllAdrs(pluginId);
|
|
133
|
+
// Filter for architecture ADRs (typically low-numbered ADRs)
|
|
134
|
+
// ADRs with numbers like "001", "002", "003" are usually architecture ADRs
|
|
135
|
+
const architectureAdrs = allAdrs
|
|
136
|
+
.filter(adr => {
|
|
137
|
+
const num = parseInt(adr.adr_number);
|
|
138
|
+
return !isNaN(num) && num <= 10; // First 10 ADRs are usually architecture
|
|
139
|
+
})
|
|
140
|
+
.sort((a, b) => {
|
|
141
|
+
const numA = parseInt(a.adr_number);
|
|
142
|
+
const numB = parseInt(b.adr_number);
|
|
143
|
+
return numA - numB;
|
|
144
|
+
})
|
|
145
|
+
.map(adr => ({
|
|
146
|
+
adr_number: adr.adr_number,
|
|
147
|
+
title: adr.title
|
|
148
|
+
}));
|
|
149
|
+
return architectureAdrs;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.SelfExplanationApi = SelfExplanationApi;
|
|
153
|
+
//# sourceMappingURL=self-explanation-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-explanation-api.js","sourceRoot":"","sources":["../../src/api/self-explanation-api.ts"],"names":[],"mappings":";;;AACA,iFAA6E;AAC7E,uCAAmC;AACnC,6CAAyC;AACzC,6CAAyC;AACzC,qDAAiD;AACjD,6CAAyC;AAkCzC;;;GAGG;AACH,MAAa,kBAAkB;IAQ3B,YAAY,SAAyB;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,8BAAa,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,QAAgB;QACpC,iBAAiB;QACjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEzE,mBAAmB;QACnB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAExD,wBAAwB;QACxB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAElE,OAAO;YACH,aAAa,EAAE,OAAO,CAAC,MAAM;YAC7B,aAAa,EAAE,OAAO,CAAC,MAAM;YAC7B,kBAAkB,EAAE,YAAY,CAAC,MAAM;YACvC,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,oBAAoB,EAAE,aAAa,CAAC,MAAM;YAC1C,YAAY,EAAE,WAAW;YACzB,iBAAiB,EAAE,gBAAgB;SACtC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB;QAChC,mBAAmB;QACnB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAExD,wBAAwB;QACxB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAElE,2BAA2B;QAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEzE,4BAA4B;QAC5B,IAAI,cAAc,GAAG,yCAAyC,CAAC;QAC/D,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACrC,cAAc,GAAG,cAAc,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,KAAK,GAAG,CAAC;QAC7E,CAAC;QAED,OAAO;YACH,SAAS,EAAE,0DAA0D;YACrE,aAAa,EAAE,qPAAqP;YACpQ,UAAU,EAAE;gBACR;oBACI,EAAE,EAAE,GAAG;oBACP,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,4BAA4B;oBACzC,YAAY,EAAE,OAAO,CAAC,MAAM;iBAC/B;gBACD;oBACI,EAAE,EAAE,GAAG;oBACP,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,2BAA2B;oBACxC,YAAY,EAAE,OAAO,CAAC,MAAM;iBAC/B;gBACD;oBACI,EAAE,EAAE,GAAG;oBACP,IAAI,EAAE,cAAc;oBACpB,WAAW,EAAE,qBAAqB;oBAClC,YAAY,EAAE,YAAY,CAAC,MAAM;iBACpC;gBACD;oBACI,EAAE,EAAE,GAAG;oBACP,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,wBAAwB;oBACrC,YAAY,EAAE,IAAI,CAAC,MAAM;iBAC5B;gBACD;oBACI,EAAE,EAAE,GAAG;oBACP,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,gBAAgB;oBAC7B,YAAY,EAAE,aAAa,CAAC,MAAM;iBACrC;aACJ;YACD,YAAY,EAAE,WAAW;YACzB,iBAAiB,EAAE,gBAAgB;YACnC,eAAe,EAAE,cAAc;SAClC,CAAC;IACN,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,QAAgB;QACzC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,4CAAoB,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAEhE,MAAM,MAAM,GAAiD,EAAE,CAAC;QAEhE,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC1E,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,CAAC,IAAI,CAAC;oBACR,SAAS,EAAE,GAAG;oBACd,SAAS,EAAE,EAAE,CAAC,SAAS;oBACvB,WAAW,EAAE,MAAM,CAAC,SAAS;oBAC7B,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,aAAa;iBAC1F,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAAC,QAAgB;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEvD,6DAA6D;QAC7D,2EAA2E;QAC3E,MAAM,gBAAgB,GAAG,OAAO;aAC3B,MAAM,CAAC,GAAG,CAAC,EAAE;YACV,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,yCAAyC;QAC9E,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACX,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACpC,OAAO,IAAI,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC;aACD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACT,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;SACnB,CAAC,CAAC,CAAC;QAER,OAAO,gBAAgB,CAAC;IAC5B,CAAC;CACJ;AAhKD,gDAgKC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { MultiDbManager } from '../core/multi-db-manager';
|
|
2
|
+
import { EmbeddingGenerator } from '../embedding/embedding-generator';
|
|
3
|
+
import { EntityReference } from '../models/entity-reference';
|
|
4
|
+
/**
|
|
5
|
+
* Semantic search result
|
|
6
|
+
*/
|
|
7
|
+
export interface SemanticSearchResult {
|
|
8
|
+
dimension: 'X' | 'Y' | 'Z' | 'W' | 'T';
|
|
9
|
+
entityId: string;
|
|
10
|
+
externalId: string;
|
|
11
|
+
score: number;
|
|
12
|
+
vectorScore: number;
|
|
13
|
+
importanceScore: number;
|
|
14
|
+
entityRef: EntityReference;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Options for semantic search
|
|
18
|
+
*/
|
|
19
|
+
export interface SemanticSearchOptions {
|
|
20
|
+
dimensions?: ('X' | 'Y' | 'Z' | 'W' | 'T')[];
|
|
21
|
+
limit?: number;
|
|
22
|
+
minScore?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* API for semantic search over all dimensions using vector similarity.
|
|
26
|
+
*/
|
|
27
|
+
export declare class SemanticSearchApi {
|
|
28
|
+
private dbManager;
|
|
29
|
+
private embeddingGenerator;
|
|
30
|
+
private readonly vectorWeight;
|
|
31
|
+
private readonly importanceWeight;
|
|
32
|
+
constructor(dbManager: MultiDbManager, embeddingGenerator: EmbeddingGenerator);
|
|
33
|
+
/**
|
|
34
|
+
* Performs semantic search across all or specified dimensions.
|
|
35
|
+
*
|
|
36
|
+
* @param query Natural language query
|
|
37
|
+
* @param pluginId Plugin ID
|
|
38
|
+
* @param options Search options
|
|
39
|
+
* @returns Promise that resolves to search results sorted by relevance
|
|
40
|
+
*/
|
|
41
|
+
search(query: string, pluginId: string, options?: SemanticSearchOptions): Promise<SemanticSearchResult[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Searches in a specific dimension using vector similarity.
|
|
44
|
+
* Uses VSS if available, otherwise falls back to cosine similarity.
|
|
45
|
+
*/
|
|
46
|
+
private searchDimension;
|
|
47
|
+
/**
|
|
48
|
+
* Searches using vector database (VSS or external DB).
|
|
49
|
+
*/
|
|
50
|
+
private searchWithVectorDatabase;
|
|
51
|
+
/**
|
|
52
|
+
* Gets embedding by rowid.
|
|
53
|
+
*/
|
|
54
|
+
private getEmbeddingByRowid;
|
|
55
|
+
/**
|
|
56
|
+
* Searches using manual cosine similarity (fallback).
|
|
57
|
+
*/
|
|
58
|
+
private searchWithCosineSimilarity;
|
|
59
|
+
/**
|
|
60
|
+
* Calculates cosine similarity between two vectors.
|
|
61
|
+
*/
|
|
62
|
+
private cosineSimilarity;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=semantic-search-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-search-api.d.ts","sourceRoot":"","sources":["../../src/api/semantic-search-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAItE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,eAAe,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,UAAU,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAe;gBAEpC,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB;IAK7E;;;;;;;OAOG;IACG,MAAM,CACR,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,qBAA0B,GACpC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAsClC;;;OAGG;YACW,eAAe;IA2C7B;;OAEG;YACW,wBAAwB;IAsEtC;;OAEG;YACW,mBAAmB;IAoBjC;;OAEG;YACW,0BAA0B;IA+DxC;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAsB3B"}
|