@egentica/codemap 0.1.5
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/LICENSE.md +165 -0
- package/README.md +479 -0
- package/dist/adapters/EgenticaMcpAdapter.d.ts +128 -0
- package/dist/adapters/EgenticaMcpAdapter.d.ts.map +1 -0
- package/dist/adapters/EgenticaMcpAdapter.js +218 -0
- package/dist/adapters/EgenticaMcpAdapter.js.map +1 -0
- package/dist/assist/AssistEngine.d.ts +107 -0
- package/dist/assist/AssistEngine.d.ts.map +1 -0
- package/dist/assist/AssistEngine.js +188 -0
- package/dist/assist/AssistEngine.js.map +1 -0
- package/dist/assist/AssistScorer.d.ts +91 -0
- package/dist/assist/AssistScorer.d.ts.map +1 -0
- package/dist/assist/AssistScorer.js +254 -0
- package/dist/assist/AssistScorer.js.map +1 -0
- package/dist/assist/PatternAggregator.d.ts +116 -0
- package/dist/assist/PatternAggregator.d.ts.map +1 -0
- package/dist/assist/PatternAggregator.js +311 -0
- package/dist/assist/PatternAggregator.js.map +1 -0
- package/dist/assist/RelevanceScorer.d.ts +104 -0
- package/dist/assist/RelevanceScorer.d.ts.map +1 -0
- package/dist/assist/RelevanceScorer.js +240 -0
- package/dist/assist/RelevanceScorer.js.map +1 -0
- package/dist/assist/index.d.ts +6 -0
- package/dist/assist/index.d.ts.map +1 -0
- package/dist/assist/index.js +9 -0
- package/dist/assist/index.js.map +1 -0
- package/dist/core/AnnotationStore.d.ts +101 -0
- package/dist/core/AnnotationStore.d.ts.map +1 -0
- package/dist/core/AnnotationStore.js +236 -0
- package/dist/core/AnnotationStore.js.map +1 -0
- package/dist/core/BackupManager.d.ts +92 -0
- package/dist/core/BackupManager.d.ts.map +1 -0
- package/dist/core/BackupManager.js +311 -0
- package/dist/core/BackupManager.js.map +1 -0
- package/dist/core/ChecklistStore.d.ts +66 -0
- package/dist/core/ChecklistStore.d.ts.map +1 -0
- package/dist/core/ChecklistStore.js +199 -0
- package/dist/core/ChecklistStore.js.map +1 -0
- package/dist/core/CodeMap.d.ts +614 -0
- package/dist/core/CodeMap.d.ts.map +1 -0
- package/dist/core/CodeMap.js +880 -0
- package/dist/core/CodeMap.js.map +1 -0
- package/dist/core/DisplayFilter.d.ts +83 -0
- package/dist/core/DisplayFilter.d.ts.map +1 -0
- package/dist/core/DisplayFilter.js +228 -0
- package/dist/core/DisplayFilter.js.map +1 -0
- package/dist/core/EventBus.d.ts +114 -0
- package/dist/core/EventBus.d.ts.map +1 -0
- package/dist/core/EventBus.js +192 -0
- package/dist/core/EventBus.js.map +1 -0
- package/dist/core/ExperienceStore.d.ts +170 -0
- package/dist/core/ExperienceStore.d.ts.map +1 -0
- package/dist/core/ExperienceStore.js +292 -0
- package/dist/core/ExperienceStore.js.map +1 -0
- package/dist/core/ExperienceTracker.d.ts +110 -0
- package/dist/core/ExperienceTracker.d.ts.map +1 -0
- package/dist/core/ExperienceTracker.js +291 -0
- package/dist/core/ExperienceTracker.js.map +1 -0
- package/dist/core/FileSystemGraph.d.ts +157 -0
- package/dist/core/FileSystemGraph.d.ts.map +1 -0
- package/dist/core/FileSystemGraph.js +316 -0
- package/dist/core/FileSystemGraph.js.map +1 -0
- package/dist/core/FileSystemIO.d.ts +222 -0
- package/dist/core/FileSystemIO.d.ts.map +1 -0
- package/dist/core/FileSystemIO.js +403 -0
- package/dist/core/FileSystemIO.js.map +1 -0
- package/dist/core/FuzzyMatcher.d.ts +51 -0
- package/dist/core/FuzzyMatcher.d.ts.map +1 -0
- package/dist/core/FuzzyMatcher.js +280 -0
- package/dist/core/FuzzyMatcher.js.map +1 -0
- package/dist/core/GroupStore.d.ts +114 -0
- package/dist/core/GroupStore.d.ts.map +1 -0
- package/dist/core/GroupStore.js +246 -0
- package/dist/core/GroupStore.js.map +1 -0
- package/dist/core/HelpRegistry.d.ts +116 -0
- package/dist/core/HelpRegistry.d.ts.map +1 -0
- package/dist/core/HelpRegistry.js +160 -0
- package/dist/core/HelpRegistry.js.map +1 -0
- package/dist/core/HintRegistry.d.ts +49 -0
- package/dist/core/HintRegistry.d.ts.map +1 -0
- package/dist/core/HintRegistry.js +81 -0
- package/dist/core/HintRegistry.js.map +1 -0
- package/dist/core/LabelStore.d.ts +88 -0
- package/dist/core/LabelStore.d.ts.map +1 -0
- package/dist/core/LabelStore.js +520 -0
- package/dist/core/LabelStore.js.map +1 -0
- package/dist/core/LineRangeWriter.d.ts +63 -0
- package/dist/core/LineRangeWriter.d.ts.map +1 -0
- package/dist/core/LineRangeWriter.js +179 -0
- package/dist/core/LineRangeWriter.js.map +1 -0
- package/dist/core/ParserRegistry.d.ts +70 -0
- package/dist/core/ParserRegistry.d.ts.map +1 -0
- package/dist/core/ParserRegistry.js +109 -0
- package/dist/core/ParserRegistry.js.map +1 -0
- package/dist/core/PluginRegistry.d.ts +120 -0
- package/dist/core/PluginRegistry.d.ts.map +1 -0
- package/dist/core/PluginRegistry.js +230 -0
- package/dist/core/PluginRegistry.js.map +1 -0
- package/dist/core/QueryEngine.d.ts +134 -0
- package/dist/core/QueryEngine.d.ts.map +1 -0
- package/dist/core/QueryEngine.js +211 -0
- package/dist/core/QueryEngine.js.map +1 -0
- package/dist/core/Scanner.d.ts +84 -0
- package/dist/core/Scanner.d.ts.map +1 -0
- package/dist/core/Scanner.js +184 -0
- package/dist/core/Scanner.js.map +1 -0
- package/dist/core/SessionTransactionLog.d.ts +138 -0
- package/dist/core/SessionTransactionLog.d.ts.map +1 -0
- package/dist/core/SessionTransactionLog.js +397 -0
- package/dist/core/SessionTransactionLog.js.map +1 -0
- package/dist/core/TargetParser.d.ts +85 -0
- package/dist/core/TargetParser.d.ts.map +1 -0
- package/dist/core/TargetParser.js +167 -0
- package/dist/core/TargetParser.js.map +1 -0
- package/dist/core/TargetResolver.d.ts +115 -0
- package/dist/core/TargetResolver.d.ts.map +1 -0
- package/dist/core/TargetResolver.js +237 -0
- package/dist/core/TargetResolver.js.map +1 -0
- package/dist/core/WriteSafetyGuard.d.ts +101 -0
- package/dist/core/WriteSafetyGuard.d.ts.map +1 -0
- package/dist/core/WriteSafetyGuard.js +265 -0
- package/dist/core/WriteSafetyGuard.js.map +1 -0
- package/dist/core/index.d.ts +38 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +51 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/query/DependencyTraversal.d.ts +23 -0
- package/dist/core/query/DependencyTraversal.d.ts.map +1 -0
- package/dist/core/query/DependencyTraversal.js +55 -0
- package/dist/core/query/DependencyTraversal.js.map +1 -0
- package/dist/core/query/ResultProcessor.d.ts +20 -0
- package/dist/core/query/ResultProcessor.d.ts.map +1 -0
- package/dist/core/query/ResultProcessor.js +99 -0
- package/dist/core/query/ResultProcessor.js.map +1 -0
- package/dist/core/query/SymbolSearchEngine.d.ts +20 -0
- package/dist/core/query/SymbolSearchEngine.d.ts.map +1 -0
- package/dist/core/query/SymbolSearchEngine.js +109 -0
- package/dist/core/query/SymbolSearchEngine.js.map +1 -0
- package/dist/core/query/TextSearchEngine.d.ts +23 -0
- package/dist/core/query/TextSearchEngine.d.ts.map +1 -0
- package/dist/core/query/TextSearchEngine.js +69 -0
- package/dist/core/query/TextSearchEngine.js.map +1 -0
- package/dist/core/query/index.d.ts +11 -0
- package/dist/core/query/index.d.ts.map +1 -0
- package/dist/core/query/index.js +18 -0
- package/dist/core/query/index.js.map +1 -0
- package/dist/core/scan/DependencyResolver.d.ts +26 -0
- package/dist/core/scan/DependencyResolver.d.ts.map +1 -0
- package/dist/core/scan/DependencyResolver.js +81 -0
- package/dist/core/scan/DependencyResolver.js.map +1 -0
- package/dist/core/scan/DirectoryWalker.d.ts +39 -0
- package/dist/core/scan/DirectoryWalker.d.ts.map +1 -0
- package/dist/core/scan/DirectoryWalker.js +136 -0
- package/dist/core/scan/DirectoryWalker.js.map +1 -0
- package/dist/core/scan/IgnorePatternMatcher.d.ts +32 -0
- package/dist/core/scan/IgnorePatternMatcher.d.ts.map +1 -0
- package/dist/core/scan/IgnorePatternMatcher.js +120 -0
- package/dist/core/scan/IgnorePatternMatcher.js.map +1 -0
- package/dist/core/scan/index.d.ts +10 -0
- package/dist/core/scan/index.d.ts.map +1 -0
- package/dist/core/scan/index.js +16 -0
- package/dist/core/scan/index.js.map +1 -0
- package/dist/core/utils/packageDiscovery.d.ts +24 -0
- package/dist/core/utils/packageDiscovery.d.ts.map +1 -0
- package/dist/core/utils/packageDiscovery.js +37 -0
- package/dist/core/utils/packageDiscovery.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/operations/annotations.d.ts +9 -0
- package/dist/mcp/operations/annotations.d.ts.map +1 -0
- package/dist/mcp/operations/annotations.js +66 -0
- package/dist/mcp/operations/annotations.js.map +1 -0
- package/dist/mcp/operations/files.d.ts +13 -0
- package/dist/mcp/operations/files.d.ts.map +1 -0
- package/dist/mcp/operations/files.js +173 -0
- package/dist/mcp/operations/files.js.map +1 -0
- package/dist/mcp/operations/graph.d.ts +10 -0
- package/dist/mcp/operations/graph.d.ts.map +1 -0
- package/dist/mcp/operations/graph.js +69 -0
- package/dist/mcp/operations/graph.js.map +1 -0
- package/dist/mcp/operations/groups.d.ts +55 -0
- package/dist/mcp/operations/groups.d.ts.map +1 -0
- package/dist/mcp/operations/groups.js +233 -0
- package/dist/mcp/operations/groups.js.map +1 -0
- package/dist/mcp/operations/help.d.ts +36 -0
- package/dist/mcp/operations/help.d.ts.map +1 -0
- package/dist/mcp/operations/help.js +322 -0
- package/dist/mcp/operations/help.js.map +1 -0
- package/dist/mcp/operations/session.d.ts +13 -0
- package/dist/mcp/operations/session.d.ts.map +1 -0
- package/dist/mcp/operations/session.js +169 -0
- package/dist/mcp/operations/session.js.map +1 -0
- package/dist/mcp/operations/writes.d.ts +14 -0
- package/dist/mcp/operations/writes.d.ts.map +1 -0
- package/dist/mcp/operations/writes.js +287 -0
- package/dist/mcp/operations/writes.js.map +1 -0
- package/dist/mcp/registry/ToolRegistry.d.ts +54 -0
- package/dist/mcp/registry/ToolRegistry.d.ts.map +1 -0
- package/dist/mcp/registry/ToolRegistry.js +219 -0
- package/dist/mcp/registry/ToolRegistry.js.map +1 -0
- package/dist/mcp/registry/context-guard.d.ts +13 -0
- package/dist/mcp/registry/context-guard.d.ts.map +1 -0
- package/dist/mcp/registry/context-guard.js +19 -0
- package/dist/mcp/registry/context-guard.js.map +1 -0
- package/dist/mcp/registry/schemas.d.ts +221 -0
- package/dist/mcp/registry/schemas.d.ts.map +1 -0
- package/dist/mcp/registry/schemas.js +217 -0
- package/dist/mcp/registry/schemas.js.map +1 -0
- package/dist/mcp/registry/types.d.ts +50 -0
- package/dist/mcp/registry/types.d.ts.map +1 -0
- package/dist/mcp/registry/types.js +5 -0
- package/dist/mcp/registry/types.js.map +1 -0
- package/dist/mcp/server.d.ts +35 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +264 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/annotations/add.tool.d.ts +10 -0
- package/dist/mcp/tools/annotations/add.tool.d.ts.map +1 -0
- package/dist/mcp/tools/annotations/add.tool.js +88 -0
- package/dist/mcp/tools/annotations/add.tool.js.map +1 -0
- package/dist/mcp/tools/annotations/edit.tool.d.ts +10 -0
- package/dist/mcp/tools/annotations/edit.tool.d.ts.map +1 -0
- package/dist/mcp/tools/annotations/edit.tool.js +92 -0
- package/dist/mcp/tools/annotations/edit.tool.js.map +1 -0
- package/dist/mcp/tools/annotations/remove.tool.d.ts +9 -0
- package/dist/mcp/tools/annotations/remove.tool.d.ts.map +1 -0
- package/dist/mcp/tools/annotations/remove.tool.js +87 -0
- package/dist/mcp/tools/annotations/remove.tool.js.map +1 -0
- package/dist/mcp/tools/annotations/search-annotations.tool.d.ts +11 -0
- package/dist/mcp/tools/annotations/search-annotations.tool.d.ts.map +1 -0
- package/dist/mcp/tools/annotations/search-annotations.tool.js +91 -0
- package/dist/mcp/tools/annotations/search-annotations.tool.js.map +1 -0
- package/dist/mcp/tools/backup/list.tool.d.ts +16 -0
- package/dist/mcp/tools/backup/list.tool.d.ts.map +1 -0
- package/dist/mcp/tools/backup/list.tool.js +48 -0
- package/dist/mcp/tools/backup/list.tool.js.map +1 -0
- package/dist/mcp/tools/backup/restore.tool.d.ts +15 -0
- package/dist/mcp/tools/backup/restore.tool.d.ts.map +1 -0
- package/dist/mcp/tools/backup/restore.tool.js +138 -0
- package/dist/mcp/tools/backup/restore.tool.js.map +1 -0
- package/dist/mcp/tools/checklist/add.tool.d.ts +17 -0
- package/dist/mcp/tools/checklist/add.tool.d.ts.map +1 -0
- package/dist/mcp/tools/checklist/add.tool.js +53 -0
- package/dist/mcp/tools/checklist/add.tool.js.map +1 -0
- package/dist/mcp/tools/checklist/list.tool.d.ts +11 -0
- package/dist/mcp/tools/checklist/list.tool.d.ts.map +1 -0
- package/dist/mcp/tools/checklist/list.tool.js +53 -0
- package/dist/mcp/tools/checklist/list.tool.js.map +1 -0
- package/dist/mcp/tools/checklist/remove.tool.d.ts +9 -0
- package/dist/mcp/tools/checklist/remove.tool.d.ts.map +1 -0
- package/dist/mcp/tools/checklist/remove.tool.js +63 -0
- package/dist/mcp/tools/checklist/remove.tool.js.map +1 -0
- package/dist/mcp/tools/graph/get-dependencies.tool.d.ts +8 -0
- package/dist/mcp/tools/graph/get-dependencies.tool.d.ts.map +1 -0
- package/dist/mcp/tools/graph/get-dependencies.tool.js +58 -0
- package/dist/mcp/tools/graph/get-dependencies.tool.js.map +1 -0
- package/dist/mcp/tools/graph/get-related.tool.d.ts +9 -0
- package/dist/mcp/tools/graph/get-related.tool.d.ts.map +1 -0
- package/dist/mcp/tools/graph/get-related.tool.js +63 -0
- package/dist/mcp/tools/graph/get-related.tool.js.map +1 -0
- package/dist/mcp/tools/graph/impact-analysis.tool.d.ts +9 -0
- package/dist/mcp/tools/graph/impact-analysis.tool.d.ts.map +1 -0
- package/dist/mcp/tools/graph/impact-analysis.tool.js +61 -0
- package/dist/mcp/tools/graph/impact-analysis.tool.js.map +1 -0
- package/dist/mcp/tools/graph/traverse.tool.d.ts +13 -0
- package/dist/mcp/tools/graph/traverse.tool.d.ts.map +1 -0
- package/dist/mcp/tools/graph/traverse.tool.js +59 -0
- package/dist/mcp/tools/graph/traverse.tool.js.map +1 -0
- package/dist/mcp/tools/groups/add.tool.d.ts +10 -0
- package/dist/mcp/tools/groups/add.tool.d.ts.map +1 -0
- package/dist/mcp/tools/groups/add.tool.js +85 -0
- package/dist/mcp/tools/groups/add.tool.js.map +1 -0
- package/dist/mcp/tools/groups/notate.tool.d.ts +11 -0
- package/dist/mcp/tools/groups/notate.tool.d.ts.map +1 -0
- package/dist/mcp/tools/groups/notate.tool.js +86 -0
- package/dist/mcp/tools/groups/notate.tool.js.map +1 -0
- package/dist/mcp/tools/groups/search.tool.d.ts +8 -0
- package/dist/mcp/tools/groups/search.tool.d.ts.map +1 -0
- package/dist/mcp/tools/groups/search.tool.js +81 -0
- package/dist/mcp/tools/groups/search.tool.js.map +1 -0
- package/dist/mcp/tools/io/append.tool.d.ts +10 -0
- package/dist/mcp/tools/io/append.tool.d.ts.map +1 -0
- package/dist/mcp/tools/io/append.tool.js +103 -0
- package/dist/mcp/tools/io/append.tool.js.map +1 -0
- package/dist/mcp/tools/io/create.tool.d.ts +11 -0
- package/dist/mcp/tools/io/create.tool.d.ts.map +1 -0
- package/dist/mcp/tools/io/create.tool.js +119 -0
- package/dist/mcp/tools/io/create.tool.js.map +1 -0
- package/dist/mcp/tools/io/delete.tool.d.ts +9 -0
- package/dist/mcp/tools/io/delete.tool.d.ts.map +1 -0
- package/dist/mcp/tools/io/delete.tool.js +129 -0
- package/dist/mcp/tools/io/delete.tool.js.map +1 -0
- package/dist/mcp/tools/io/get-annotations.tool.d.ts +10 -0
- package/dist/mcp/tools/io/get-annotations.tool.d.ts.map +1 -0
- package/dist/mcp/tools/io/get-annotations.tool.js +97 -0
- package/dist/mcp/tools/io/get-annotations.tool.js.map +1 -0
- package/dist/mcp/tools/io/get-symbols.tool.d.ts +9 -0
- package/dist/mcp/tools/io/get-symbols.tool.d.ts.map +1 -0
- package/dist/mcp/tools/io/get-symbols.tool.js +63 -0
- package/dist/mcp/tools/io/get-symbols.tool.js.map +1 -0
- package/dist/mcp/tools/io/list.tool.d.ts +8 -0
- package/dist/mcp/tools/io/list.tool.d.ts.map +1 -0
- package/dist/mcp/tools/io/list.tool.js +68 -0
- package/dist/mcp/tools/io/list.tool.js.map +1 -0
- package/dist/mcp/tools/io/peek.tool.d.ts +11 -0
- package/dist/mcp/tools/io/peek.tool.d.ts.map +1 -0
- package/dist/mcp/tools/io/peek.tool.js +74 -0
- package/dist/mcp/tools/io/peek.tool.js.map +1 -0
- package/dist/mcp/tools/io/read-multiple.tool.d.ts +9 -0
- package/dist/mcp/tools/io/read-multiple.tool.d.ts.map +1 -0
- package/dist/mcp/tools/io/read-multiple.tool.js +72 -0
- package/dist/mcp/tools/io/read-multiple.tool.js.map +1 -0
- package/dist/mcp/tools/io/read.tool.d.ts +13 -0
- package/dist/mcp/tools/io/read.tool.d.ts.map +1 -0
- package/dist/mcp/tools/io/read.tool.js +132 -0
- package/dist/mcp/tools/io/read.tool.js.map +1 -0
- package/dist/mcp/tools/io/rename.tool.d.ts +9 -0
- package/dist/mcp/tools/io/rename.tool.d.ts.map +1 -0
- package/dist/mcp/tools/io/rename.tool.js +101 -0
- package/dist/mcp/tools/io/rename.tool.js.map +1 -0
- package/dist/mcp/tools/io/replace-many.tool.d.ts +10 -0
- package/dist/mcp/tools/io/replace-many.tool.d.ts.map +1 -0
- package/dist/mcp/tools/io/replace-many.tool.js +114 -0
- package/dist/mcp/tools/io/replace-many.tool.js.map +1 -0
- package/dist/mcp/tools/io/replace-text.tool.d.ts +12 -0
- package/dist/mcp/tools/io/replace-text.tool.d.ts.map +1 -0
- package/dist/mcp/tools/io/replace-text.tool.js +213 -0
- package/dist/mcp/tools/io/replace-text.tool.js.map +1 -0
- package/dist/mcp/tools/io/write.tool.d.ts +10 -0
- package/dist/mcp/tools/io/write.tool.d.ts.map +1 -0
- package/dist/mcp/tools/io/write.tool.js +103 -0
- package/dist/mcp/tools/io/write.tool.js.map +1 -0
- package/dist/mcp/tools/labels/assign.tool.d.ts +16 -0
- package/dist/mcp/tools/labels/assign.tool.d.ts.map +1 -0
- package/dist/mcp/tools/labels/assign.tool.js +52 -0
- package/dist/mcp/tools/labels/assign.tool.js.map +1 -0
- package/dist/mcp/tools/labels/create.tool.d.ts +12 -0
- package/dist/mcp/tools/labels/create.tool.d.ts.map +1 -0
- package/dist/mcp/tools/labels/create.tool.js +51 -0
- package/dist/mcp/tools/labels/create.tool.js.map +1 -0
- package/dist/mcp/tools/labels/delete.tool.d.ts +9 -0
- package/dist/mcp/tools/labels/delete.tool.d.ts.map +1 -0
- package/dist/mcp/tools/labels/delete.tool.js +48 -0
- package/dist/mcp/tools/labels/delete.tool.js.map +1 -0
- package/dist/mcp/tools/labels/edit.tool.d.ts +13 -0
- package/dist/mcp/tools/labels/edit.tool.d.ts.map +1 -0
- package/dist/mcp/tools/labels/edit.tool.js +58 -0
- package/dist/mcp/tools/labels/edit.tool.js.map +1 -0
- package/dist/mcp/tools/labels/list.tool.d.ts +11 -0
- package/dist/mcp/tools/labels/list.tool.d.ts.map +1 -0
- package/dist/mcp/tools/labels/list.tool.js +47 -0
- package/dist/mcp/tools/labels/list.tool.js.map +1 -0
- package/dist/mcp/tools/labels/migrate.tool.d.ts +10 -0
- package/dist/mcp/tools/labels/migrate.tool.d.ts.map +1 -0
- package/dist/mcp/tools/labels/migrate.tool.js +50 -0
- package/dist/mcp/tools/labels/migrate.tool.js.map +1 -0
- package/dist/mcp/tools/labels/search.tool.d.ts +16 -0
- package/dist/mcp/tools/labels/search.tool.d.ts.map +1 -0
- package/dist/mcp/tools/labels/search.tool.js +55 -0
- package/dist/mcp/tools/labels/search.tool.js.map +1 -0
- package/dist/mcp/tools/labels/unassign.tool.d.ts +9 -0
- package/dist/mcp/tools/labels/unassign.tool.d.ts.map +1 -0
- package/dist/mcp/tools/labels/unassign.tool.js +49 -0
- package/dist/mcp/tools/labels/unassign.tool.js.map +1 -0
- package/dist/mcp/tools/search/find-by-name.tool.d.ts +8 -0
- package/dist/mcp/tools/search/find-by-name.tool.d.ts.map +1 -0
- package/dist/mcp/tools/search/find-by-name.tool.js +57 -0
- package/dist/mcp/tools/search/find-by-name.tool.js.map +1 -0
- package/dist/mcp/tools/search/find-relevant.tool.d.ts +9 -0
- package/dist/mcp/tools/search/find-relevant.tool.d.ts.map +1 -0
- package/dist/mcp/tools/search/find-relevant.tool.js +71 -0
- package/dist/mcp/tools/search/find-relevant.tool.js.map +1 -0
- package/dist/mcp/tools/search/scan.tool.d.ts +8 -0
- package/dist/mcp/tools/search/scan.tool.d.ts.map +1 -0
- package/dist/mcp/tools/search/scan.tool.js +103 -0
- package/dist/mcp/tools/search/scan.tool.js.map +1 -0
- package/dist/mcp/tools/search/search-elements.tool.d.ts +11 -0
- package/dist/mcp/tools/search/search-elements.tool.d.ts.map +1 -0
- package/dist/mcp/tools/search/search-elements.tool.js +71 -0
- package/dist/mcp/tools/search/search-elements.tool.js.map +1 -0
- package/dist/mcp/tools/search/search-in-files.tool.d.ts +14 -0
- package/dist/mcp/tools/search/search-in-files.tool.d.ts.map +1 -0
- package/dist/mcp/tools/search/search-in-files.tool.js +204 -0
- package/dist/mcp/tools/search/search-in-files.tool.js.map +1 -0
- package/dist/mcp/tools/search/search.tool.d.ts +25 -0
- package/dist/mcp/tools/search/search.tool.d.ts.map +1 -0
- package/dist/mcp/tools/search/search.tool.js +109 -0
- package/dist/mcp/tools/search/search.tool.js.map +1 -0
- package/dist/mcp/tools/session/audit.tool.d.ts +6 -0
- package/dist/mcp/tools/session/audit.tool.d.ts.map +1 -0
- package/dist/mcp/tools/session/audit.tool.js +64 -0
- package/dist/mcp/tools/session/audit.tool.js.map +1 -0
- package/dist/mcp/tools/session/close.tool.d.ts +11 -0
- package/dist/mcp/tools/session/close.tool.d.ts.map +1 -0
- package/dist/mcp/tools/session/close.tool.js +79 -0
- package/dist/mcp/tools/session/close.tool.js.map +1 -0
- package/dist/mcp/tools/session/execute-shell.tool.d.ts +11 -0
- package/dist/mcp/tools/session/execute-shell.tool.d.ts.map +1 -0
- package/dist/mcp/tools/session/execute-shell.tool.js +87 -0
- package/dist/mcp/tools/session/execute-shell.tool.js.map +1 -0
- package/dist/mcp/tools/session/help.tool.d.ts +8 -0
- package/dist/mcp/tools/session/help.tool.d.ts.map +1 -0
- package/dist/mcp/tools/session/help.tool.js +84 -0
- package/dist/mcp/tools/session/help.tool.js.map +1 -0
- package/dist/mcp/tools/session/list.tool.d.ts +9 -0
- package/dist/mcp/tools/session/list.tool.d.ts.map +1 -0
- package/dist/mcp/tools/session/list.tool.js +49 -0
- package/dist/mcp/tools/session/list.tool.js.map +1 -0
- package/dist/mcp/tools/session/next-session.tool.d.ts +8 -0
- package/dist/mcp/tools/session/next-session.tool.d.ts.map +1 -0
- package/dist/mcp/tools/session/next-session.tool.js +87 -0
- package/dist/mcp/tools/session/next-session.tool.js.map +1 -0
- package/dist/mcp/tools/session/orient.tool.d.ts +11 -0
- package/dist/mcp/tools/session/orient.tool.d.ts.map +1 -0
- package/dist/mcp/tools/session/orient.tool.js +239 -0
- package/dist/mcp/tools/session/orient.tool.js.map +1 -0
- package/dist/mcp/tools/session/read.tool.d.ts +8 -0
- package/dist/mcp/tools/session/read.tool.d.ts.map +1 -0
- package/dist/mcp/tools/session/read.tool.js +63 -0
- package/dist/mcp/tools/session/read.tool.js.map +1 -0
- package/dist/mcp/tools/session/reindex.tool.d.ts +6 -0
- package/dist/mcp/tools/session/reindex.tool.d.ts.map +1 -0
- package/dist/mcp/tools/session/reindex.tool.js +59 -0
- package/dist/mcp/tools/session/reindex.tool.js.map +1 -0
- package/dist/mcp/tools/session/start.tool.d.ts +8 -0
- package/dist/mcp/tools/session/start.tool.d.ts.map +1 -0
- package/dist/mcp/tools/session/start.tool.js +170 -0
- package/dist/mcp/tools/session/start.tool.js.map +1 -0
- package/dist/mcp/tools/session/stats.tool.d.ts +6 -0
- package/dist/mcp/tools/session/stats.tool.d.ts.map +1 -0
- package/dist/mcp/tools/session/stats.tool.js +46 -0
- package/dist/mcp/tools/session/stats.tool.js.map +1 -0
- package/dist/plugins/parser-typescript/index.d.ts +80 -0
- package/dist/plugins/parser-typescript/index.d.ts.map +1 -0
- package/dist/plugins/parser-typescript/index.js +467 -0
- package/dist/plugins/parser-typescript/index.js.map +1 -0
- package/dist/plugins/parser-vue/index.d.ts +20 -0
- package/dist/plugins/parser-vue/index.d.ts.map +1 -0
- package/dist/plugins/parser-vue/index.js +88 -0
- package/dist/plugins/parser-vue/index.js.map +1 -0
- package/dist/plugins/parser-vue/script-parser.d.ts +18 -0
- package/dist/plugins/parser-vue/script-parser.d.ts.map +1 -0
- package/dist/plugins/parser-vue/script-parser.js +100 -0
- package/dist/plugins/parser-vue/script-parser.js.map +1 -0
- package/dist/plugins/parser-vue/template-parser.d.ts +14 -0
- package/dist/plugins/parser-vue/template-parser.d.ts.map +1 -0
- package/dist/plugins/parser-vue/template-parser.js +95 -0
- package/dist/plugins/parser-vue/template-parser.js.map +1 -0
- package/dist/query/SymbolSearch.d.ts +56 -0
- package/dist/query/SymbolSearch.d.ts.map +1 -0
- package/dist/query/SymbolSearch.js +132 -0
- package/dist/query/SymbolSearch.js.map +1 -0
- package/dist/query/TextSearch.d.ts +47 -0
- package/dist/query/TextSearch.d.ts.map +1 -0
- package/dist/query/TextSearch.js +110 -0
- package/dist/query/TextSearch.js.map +1 -0
- package/dist/storage/NodeFsProvider.d.ts +148 -0
- package/dist/storage/NodeFsProvider.d.ts.map +1 -0
- package/dist/storage/NodeFsProvider.js +264 -0
- package/dist/storage/NodeFsProvider.js.map +1 -0
- package/dist/types/annotation.d.ts +79 -0
- package/dist/types/annotation.d.ts.map +1 -0
- package/dist/types/annotation.js +10 -0
- package/dist/types/annotation.js.map +1 -0
- package/dist/types/assist.d.ts +147 -0
- package/dist/types/assist.d.ts.map +1 -0
- package/dist/types/assist.js +12 -0
- package/dist/types/assist.js.map +1 -0
- package/dist/types/contracts/FileSystemProvider.d.ts +24 -0
- package/dist/types/contracts/FileSystemProvider.d.ts.map +1 -0
- package/dist/types/contracts/FileSystemProvider.js +9 -0
- package/dist/types/contracts/FileSystemProvider.js.map +1 -0
- package/dist/types/contracts/LanguageParser.d.ts +146 -0
- package/dist/types/contracts/LanguageParser.d.ts.map +1 -0
- package/dist/types/contracts/LanguageParser.js +43 -0
- package/dist/types/contracts/LanguageParser.js.map +1 -0
- package/dist/types/contracts/Plugin.d.ts +226 -0
- package/dist/types/contracts/Plugin.d.ts.map +1 -0
- package/dist/types/contracts/Plugin.js +21 -0
- package/dist/types/contracts/Plugin.js.map +1 -0
- package/dist/types/contracts/index.d.ts +10 -0
- package/dist/types/contracts/index.d.ts.map +1 -0
- package/dist/types/contracts/index.js +26 -0
- package/dist/types/contracts/index.js.map +1 -0
- package/dist/types/core.d.ts +170 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +10 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/events.d.ts +29 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +18 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/experience.d.ts +153 -0
- package/dist/types/experience.d.ts.map +1 -0
- package/dist/types/experience.js +9 -0
- package/dist/types/experience.js.map +1 -0
- package/dist/types/graph.d.ts +35 -0
- package/dist/types/graph.d.ts.map +1 -0
- package/dist/types/graph.js +8 -0
- package/dist/types/graph.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +33 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/label.d.ts +150 -0
- package/dist/types/label.d.ts.map +1 -0
- package/dist/types/label.js +9 -0
- package/dist/types/label.js.map +1 -0
- package/dist/types/query.d.ts +104 -0
- package/dist/types/query.d.ts.map +1 -0
- package/dist/types/query.js +11 -0
- package/dist/types/query.js.map +1 -0
- package/dist/types/response.d.ts +133 -0
- package/dist/types/response.d.ts.map +1 -0
- package/dist/types/response.js +60 -0
- package/dist/types/response.js.map +1 -0
- package/dist/types/target.d.ts +68 -0
- package/dist/types/target.d.ts.map +1 -0
- package/dist/types/target.js +11 -0
- package/dist/types/target.js.map +1 -0
- package/dist/utils/version.d.ts +9 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +30 -0
- package/dist/utils/version.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PluginRegistry - Central plugin management for CodeMap.
|
|
4
|
+
*
|
|
5
|
+
* Discovers, registers, and manages plugin lifecycle.
|
|
6
|
+
* Plugins register hooks via the CodeMapHost interface.
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* - Plugins register via registry.register(plugin)
|
|
10
|
+
* - Each plugin receives CodeMapHost interface to hook into events
|
|
11
|
+
* - Registry tracks all registered plugins for lifecycle management
|
|
12
|
+
* - Supports plugin unregistration for cleanup
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const registry = new PluginRegistry(codemap);
|
|
17
|
+
*
|
|
18
|
+
* // Register a language parser
|
|
19
|
+
* registry.register(new TypeScriptParser());
|
|
20
|
+
*
|
|
21
|
+
* // Register TimeWarp plugin
|
|
22
|
+
* registry.register(new TimeWarpPlugin());
|
|
23
|
+
*
|
|
24
|
+
* // Cleanup on shutdown
|
|
25
|
+
* await registry.unregisterAll();
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
29
|
+
if (k2 === undefined) k2 = k;
|
|
30
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
31
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
32
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
33
|
+
}
|
|
34
|
+
Object.defineProperty(o, k2, desc);
|
|
35
|
+
}) : (function(o, m, k, k2) {
|
|
36
|
+
if (k2 === undefined) k2 = k;
|
|
37
|
+
o[k2] = m[k];
|
|
38
|
+
}));
|
|
39
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
40
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
41
|
+
}) : function(o, v) {
|
|
42
|
+
o["default"] = v;
|
|
43
|
+
});
|
|
44
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
45
|
+
var ownKeys = function(o) {
|
|
46
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
47
|
+
var ar = [];
|
|
48
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
49
|
+
return ar;
|
|
50
|
+
};
|
|
51
|
+
return ownKeys(o);
|
|
52
|
+
};
|
|
53
|
+
return function (mod) {
|
|
54
|
+
if (mod && mod.__esModule) return mod;
|
|
55
|
+
var result = {};
|
|
56
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
57
|
+
__setModuleDefault(result, mod);
|
|
58
|
+
return result;
|
|
59
|
+
};
|
|
60
|
+
})();
|
|
61
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
62
|
+
exports.PluginRegistry = void 0;
|
|
63
|
+
const packageDiscovery_1 = require("./utils/packageDiscovery");
|
|
64
|
+
class PluginRegistry {
|
|
65
|
+
plugins;
|
|
66
|
+
codemap;
|
|
67
|
+
constructor(codemap) {
|
|
68
|
+
this.plugins = new Map();
|
|
69
|
+
this.codemap = codemap;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Auto-discover and register all available plugin packages.
|
|
73
|
+
*
|
|
74
|
+
* Loads plugins in two phases:
|
|
75
|
+
* 1. First-party plugins: Auto-discover @egentica/codemap-plugin-* packages
|
|
76
|
+
* 2. Third-party plugins: Load from config.plugins array
|
|
77
|
+
*
|
|
78
|
+
* Silently skips packages that are not installed.
|
|
79
|
+
*
|
|
80
|
+
* @param config - Configuration object (may contain plugins array)
|
|
81
|
+
*/
|
|
82
|
+
async autoloadPlugins(config = {}) {
|
|
83
|
+
// 1. Auto-discover first-party plugins
|
|
84
|
+
const firstPartyPlugins = await (0, packageDiscovery_1.discoverFirstPartyPackages)('codemap-plugin');
|
|
85
|
+
// 2. Load third-party plugins from config
|
|
86
|
+
const thirdPartyPlugins = config.plugins?.paths || [];
|
|
87
|
+
// 3. Merge and load all plugins
|
|
88
|
+
const allPlugins = [...firstPartyPlugins, ...thirdPartyPlugins];
|
|
89
|
+
for (const pkg of allPlugins) {
|
|
90
|
+
try {
|
|
91
|
+
const module = await Promise.resolve(`${pkg}`).then(s => __importStar(require(s)));
|
|
92
|
+
const PluginClass = module.default;
|
|
93
|
+
const plugin = new PluginClass();
|
|
94
|
+
await this.register(plugin);
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
// Plugin not installed - skip silently
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Register a plugin with CodeMap.
|
|
103
|
+
*
|
|
104
|
+
* Calls plugin.register(codemap) to let the plugin hook into events.
|
|
105
|
+
* If plugin has initialize() method, calls it for async setup.
|
|
106
|
+
* Plugin name must be unique.
|
|
107
|
+
*
|
|
108
|
+
* @param plugin - Plugin to register
|
|
109
|
+
* @throws Error if plugin with same name already registered
|
|
110
|
+
*/
|
|
111
|
+
async register(plugin) {
|
|
112
|
+
if (this.plugins.has(plugin.name)) {
|
|
113
|
+
throw new Error(`Plugin '${plugin.name}' is already registered. ` +
|
|
114
|
+
`Each plugin name must be unique.`);
|
|
115
|
+
}
|
|
116
|
+
// Let plugin register its hooks (sync)
|
|
117
|
+
plugin.register(this.codemap);
|
|
118
|
+
// Initialize plugin data if supported (async)
|
|
119
|
+
if (plugin.initialize && typeof plugin.initialize === 'function') {
|
|
120
|
+
await plugin.initialize(this.codemap);
|
|
121
|
+
}
|
|
122
|
+
// Track registration
|
|
123
|
+
this.plugins.set(plugin.name, {
|
|
124
|
+
plugin,
|
|
125
|
+
registeredAt: Date.now()
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Unregister a plugin by name.
|
|
130
|
+
*
|
|
131
|
+
* Calls plugin.unregister() if defined.
|
|
132
|
+
* Removes plugin from registry.
|
|
133
|
+
*
|
|
134
|
+
* Note: Does NOT automatically remove event handlers.
|
|
135
|
+
* Plugins are responsible for cleanup in their unregister() method.
|
|
136
|
+
*
|
|
137
|
+
* @param name - Plugin name to unregister
|
|
138
|
+
* @returns True if plugin was found and unregistered
|
|
139
|
+
*/
|
|
140
|
+
async unregister(name) {
|
|
141
|
+
const metadata = this.plugins.get(name);
|
|
142
|
+
if (!metadata)
|
|
143
|
+
return false;
|
|
144
|
+
// Call plugin cleanup if defined
|
|
145
|
+
if (metadata.plugin.unregister) {
|
|
146
|
+
await metadata.plugin.unregister();
|
|
147
|
+
}
|
|
148
|
+
// Remove from registry
|
|
149
|
+
this.plugins.delete(name);
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Unregister all plugins.
|
|
154
|
+
*
|
|
155
|
+
* Calls unregister() on each plugin sequentially.
|
|
156
|
+
* Useful for shutdown/cleanup.
|
|
157
|
+
*/
|
|
158
|
+
async unregisterAll() {
|
|
159
|
+
const names = Array.from(this.plugins.keys());
|
|
160
|
+
for (const name of names) {
|
|
161
|
+
await this.unregister(name);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Check if a plugin is registered.
|
|
166
|
+
*
|
|
167
|
+
* @param name - Plugin name to check
|
|
168
|
+
* @returns True if plugin is registered
|
|
169
|
+
*/
|
|
170
|
+
has(name) {
|
|
171
|
+
return this.plugins.has(name);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Get a registered plugin by name.
|
|
175
|
+
*
|
|
176
|
+
* @param name - Plugin name
|
|
177
|
+
* @returns Plugin instance or undefined
|
|
178
|
+
*/
|
|
179
|
+
get(name) {
|
|
180
|
+
return this.plugins.get(name)?.plugin;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get all registered plugin names.
|
|
184
|
+
*
|
|
185
|
+
* @returns Array of plugin names
|
|
186
|
+
*/
|
|
187
|
+
getRegisteredPlugins() {
|
|
188
|
+
return Array.from(this.plugins.keys());
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Get plugin count.
|
|
192
|
+
*
|
|
193
|
+
* @returns Number of registered plugins
|
|
194
|
+
*/
|
|
195
|
+
get count() {
|
|
196
|
+
return this.plugins.size;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get plugin metadata (name, version, registration time).
|
|
200
|
+
*
|
|
201
|
+
* @returns Array of plugin metadata
|
|
202
|
+
*/
|
|
203
|
+
getPluginInfo() {
|
|
204
|
+
return Array.from(this.plugins.values()).map(metadata => ({
|
|
205
|
+
name: metadata.plugin.name,
|
|
206
|
+
version: metadata.plugin.version,
|
|
207
|
+
registeredAt: metadata.registeredAt
|
|
208
|
+
}));
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get a language parser that can handle the given file.
|
|
212
|
+
*
|
|
213
|
+
* @param filePath - File path to find parser for
|
|
214
|
+
* @returns LanguageParser instance or undefined
|
|
215
|
+
*/
|
|
216
|
+
getParserForFile(filePath) {
|
|
217
|
+
for (const metadata of this.plugins.values()) {
|
|
218
|
+
const plugin = metadata.plugin;
|
|
219
|
+
// Check if this is a LanguageParser plugin with canParse method
|
|
220
|
+
if (plugin.canParse && typeof plugin.canParse === 'function') {
|
|
221
|
+
if (plugin.canParse(filePath)) {
|
|
222
|
+
return plugin;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
exports.PluginRegistry = PluginRegistry;
|
|
230
|
+
//# sourceMappingURL=PluginRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginRegistry.js","sourceRoot":"","sources":["../../src/core/PluginRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QueryEngine - Orchestrator for search and graph traversal.
|
|
3
|
+
*
|
|
4
|
+
* Thin orchestrator that delegates to strategy classes:
|
|
5
|
+
* - TextSearchEngine: File path matching
|
|
6
|
+
* - SymbolSearchEngine: Symbol name matching
|
|
7
|
+
* - ResultProcessor: Post-processing and enrichment
|
|
8
|
+
* - DependencyTraversal: Graph traversal operations
|
|
9
|
+
*
|
|
10
|
+
* Architecture:
|
|
11
|
+
* - Pure query layer — no I/O, no side effects
|
|
12
|
+
* - Delegates all search logic to strategies
|
|
13
|
+
* - Coordinates multiple search modes
|
|
14
|
+
* - Manages result pagination and formatting
|
|
15
|
+
*
|
|
16
|
+
* @codemap.policy No file operations — graph queries only.
|
|
17
|
+
* @codemap.policy All search methods return sorted results (highest relevance first).
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const query = new QueryEngine(config);
|
|
22
|
+
*
|
|
23
|
+
* // Text search
|
|
24
|
+
* const results = query.search({ query: 'auth login', mode: 'text' });
|
|
25
|
+
*
|
|
26
|
+
* // Symbol search
|
|
27
|
+
* const symbols = query.search({ query: 'handleLogin', mode: 'symbol' });
|
|
28
|
+
*
|
|
29
|
+
* // Find dependencies
|
|
30
|
+
* const importers = query.findImporters('src/auth/login.ts');
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
import type { FileSystemGraph } from './FileSystemGraph';
|
|
34
|
+
import type { FileEntry } from '../types/core';
|
|
35
|
+
import type { SearchRequest, SearchResponse, SearchResult } from '../types/query';
|
|
36
|
+
import type { EventBus } from './EventBus';
|
|
37
|
+
import { HintRegistry } from './HintRegistry';
|
|
38
|
+
/**
|
|
39
|
+
* Configuration for QueryEngine.
|
|
40
|
+
*/
|
|
41
|
+
export interface QueryEngineConfig {
|
|
42
|
+
/**
|
|
43
|
+
* The graph to query against.
|
|
44
|
+
*/
|
|
45
|
+
graph: FileSystemGraph;
|
|
46
|
+
/**
|
|
47
|
+
* Default max results.
|
|
48
|
+
* Defaults to 5.
|
|
49
|
+
*/
|
|
50
|
+
defaultMaxResults?: number;
|
|
51
|
+
/**
|
|
52
|
+
* Optional: GroupStore for including group membership in search results.
|
|
53
|
+
*/
|
|
54
|
+
groupStore?: any;
|
|
55
|
+
/**
|
|
56
|
+
* Optional: HintRegistry for contextual hints.
|
|
57
|
+
*/
|
|
58
|
+
hintRegistry?: HintRegistry;
|
|
59
|
+
/**
|
|
60
|
+
* Optional: EventBus for emitting search events (plugin hooks).
|
|
61
|
+
*/
|
|
62
|
+
eventBus?: EventBus;
|
|
63
|
+
}
|
|
64
|
+
export declare class QueryEngine {
|
|
65
|
+
private graph;
|
|
66
|
+
private defaultMaxResults;
|
|
67
|
+
private defaultMaxSymbolsPerFile;
|
|
68
|
+
private groupStore?;
|
|
69
|
+
private hintRegistry;
|
|
70
|
+
private eventBus?;
|
|
71
|
+
private textSearch;
|
|
72
|
+
private symbolSearch;
|
|
73
|
+
private resultProcessor;
|
|
74
|
+
private dependencyTraversal;
|
|
75
|
+
constructor(config: QueryEngineConfig);
|
|
76
|
+
/**
|
|
77
|
+
* Execute a search query.
|
|
78
|
+
*
|
|
79
|
+
* Supports multiple search modes:
|
|
80
|
+
* - text: Keyword matching in file paths
|
|
81
|
+
* - symbol: Symbol name matching
|
|
82
|
+
* - hybrid: Combined text + symbol search
|
|
83
|
+
*
|
|
84
|
+
* @param request - Search request
|
|
85
|
+
* @returns Search results sorted by relevance
|
|
86
|
+
*/
|
|
87
|
+
search(request: SearchRequest): SearchResponse;
|
|
88
|
+
/**
|
|
89
|
+
* Find files by name pattern (supports * wildcard).
|
|
90
|
+
*/
|
|
91
|
+
findByName(pattern: string): FileEntry[];
|
|
92
|
+
/**
|
|
93
|
+
* Find files relevant to a task description.
|
|
94
|
+
* Uses keyword extraction + relevance scoring.
|
|
95
|
+
*/
|
|
96
|
+
findRelevant(task: string, maxResults?: number): SearchResult[];
|
|
97
|
+
/**
|
|
98
|
+
* Find all files that import a given file.
|
|
99
|
+
*/
|
|
100
|
+
findImporters(relativePath: string): FileEntry[];
|
|
101
|
+
/**
|
|
102
|
+
* Find all files imported by a given file.
|
|
103
|
+
*/
|
|
104
|
+
findImports(relativePath: string): FileEntry[];
|
|
105
|
+
/**
|
|
106
|
+
* Get related files (imports + importers).
|
|
107
|
+
*/
|
|
108
|
+
getRelated(relativePath: string): {
|
|
109
|
+
imports: FileEntry[];
|
|
110
|
+
importers: FileEntry[];
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Traverse dependency graph with BFS.
|
|
114
|
+
*/
|
|
115
|
+
traverse(startPath: string, direction: 'imports' | 'importers', maxDepth?: number): FileEntry[];
|
|
116
|
+
/**
|
|
117
|
+
* Search for DOM elements in template files.
|
|
118
|
+
*
|
|
119
|
+
* @param query - Element name or tag to search for
|
|
120
|
+
* @param tag - Optional tag filter
|
|
121
|
+
* @param hasId - Optional ID filter (true = explicit IDs, false = auto-numbered)
|
|
122
|
+
* @param maxResults - Max results to return
|
|
123
|
+
* @returns Element matches with file context
|
|
124
|
+
*/
|
|
125
|
+
searchElements(query: string, options?: {
|
|
126
|
+
tag?: string;
|
|
127
|
+
hasId?: boolean;
|
|
128
|
+
maxResults?: number;
|
|
129
|
+
}): Array<{
|
|
130
|
+
element: any;
|
|
131
|
+
file: FileEntry;
|
|
132
|
+
}>;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=QueryEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryEngine.d.ts","sourceRoot":"","sources":["../../src/core/QueryEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAM9C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,KAAK,EAAE,eAAe,CAAC;IAEvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,UAAU,CAAC,EAAE,GAAG,CAAC;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,UAAU,CAAC,CAAM;IACzB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAW;IAG5B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,mBAAmB,CAAsB;gBAErC,MAAM,EAAE,iBAAiB;IAoBrC;;;;;;;;;;OAUG;IACH,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc;IA2G9C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE;IAIxC;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IAS/D;;OAEG;IACH,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE;IAIhD;;OAEG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE;IAI9C;;OAEG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAAC,SAAS,EAAE,SAAS,EAAE,CAAA;KAAE;IAIlF;;OAEG;IACH,QAAQ,CACN,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,GAAG,WAAW,EAClC,QAAQ,GAAE,MAAU,GACnB,SAAS,EAAE;IAId;;;;;;;;OAQG;IACH,cAAc,CACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GACA,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CA4B5C"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueryEngine = void 0;
|
|
4
|
+
const HintRegistry_1 = require("./HintRegistry");
|
|
5
|
+
const TextSearchEngine_1 = require("./query/TextSearchEngine");
|
|
6
|
+
const SymbolSearchEngine_1 = require("./query/SymbolSearchEngine");
|
|
7
|
+
const ResultProcessor_1 = require("./query/ResultProcessor");
|
|
8
|
+
const DependencyTraversal_1 = require("./query/DependencyTraversal");
|
|
9
|
+
class QueryEngine {
|
|
10
|
+
graph;
|
|
11
|
+
defaultMaxResults;
|
|
12
|
+
defaultMaxSymbolsPerFile;
|
|
13
|
+
groupStore;
|
|
14
|
+
hintRegistry;
|
|
15
|
+
eventBus;
|
|
16
|
+
// Strategy instances
|
|
17
|
+
textSearch;
|
|
18
|
+
symbolSearch;
|
|
19
|
+
resultProcessor;
|
|
20
|
+
dependencyTraversal;
|
|
21
|
+
constructor(config) {
|
|
22
|
+
this.graph = config.graph;
|
|
23
|
+
this.defaultMaxResults = config.defaultMaxResults || 5; // Default to 5 files
|
|
24
|
+
this.defaultMaxSymbolsPerFile = 5; // Default to 5 symbols per file
|
|
25
|
+
this.groupStore = config.groupStore;
|
|
26
|
+
this.hintRegistry = config.hintRegistry || new HintRegistry_1.HintRegistry();
|
|
27
|
+
this.eventBus = config.eventBus;
|
|
28
|
+
// Initialize strategy instances
|
|
29
|
+
this.textSearch = new TextSearchEngine_1.TextSearchEngine(this.graph);
|
|
30
|
+
this.symbolSearch = new SymbolSearchEngine_1.SymbolSearchEngine(this.graph);
|
|
31
|
+
this.resultProcessor = new ResultProcessor_1.ResultProcessor(this.groupStore);
|
|
32
|
+
this.dependencyTraversal = new DependencyTraversal_1.DependencyTraversal(this.graph);
|
|
33
|
+
// Register default hints if no custom registry provided
|
|
34
|
+
if (!config.hintRegistry) {
|
|
35
|
+
this.hintRegistry.registerDefaults();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Execute a search query.
|
|
40
|
+
*
|
|
41
|
+
* Supports multiple search modes:
|
|
42
|
+
* - text: Keyword matching in file paths
|
|
43
|
+
* - symbol: Symbol name matching
|
|
44
|
+
* - hybrid: Combined text + symbol search
|
|
45
|
+
*
|
|
46
|
+
* @param request - Search request
|
|
47
|
+
* @returns Search results sorted by relevance
|
|
48
|
+
*/
|
|
49
|
+
search(request) {
|
|
50
|
+
const startTime = Date.now();
|
|
51
|
+
const mode = request.mode || 'hybrid';
|
|
52
|
+
const includeFull = request.includeFull || false;
|
|
53
|
+
const maxResults = includeFull ? 9999 : (request.maxResults || this.defaultMaxResults);
|
|
54
|
+
const maxSymbolsPerFile = includeFull ? 9999 : (request.maxSymbolsPerFile || this.defaultMaxSymbolsPerFile);
|
|
55
|
+
const symbolFormat = request.symbolFormat || 'full';
|
|
56
|
+
const useRegex = request.useRegex || false;
|
|
57
|
+
// Execute search based on mode - delegate to strategy classes
|
|
58
|
+
let results = [];
|
|
59
|
+
if (mode === 'text' || mode === 'hybrid') {
|
|
60
|
+
results = this.textSearch.search(request, useRegex);
|
|
61
|
+
}
|
|
62
|
+
if (mode === 'symbol' || mode === 'hybrid') {
|
|
63
|
+
const symbolResults = this.symbolSearch.search(request, useRegex);
|
|
64
|
+
results = this.resultProcessor.mergeResults(results, symbolResults);
|
|
65
|
+
}
|
|
66
|
+
// Apply filters
|
|
67
|
+
if (request.extensions) {
|
|
68
|
+
results = results.filter(r => request.extensions.some(ext => r.file.relativePath.endsWith(ext)));
|
|
69
|
+
}
|
|
70
|
+
if (request.pathPrefix) {
|
|
71
|
+
results = results.filter(r => r.file.relativePath.startsWith(request.pathPrefix));
|
|
72
|
+
}
|
|
73
|
+
// Sort by relevance (descending)
|
|
74
|
+
results.sort((a, b) => b.relevance - a.relevance);
|
|
75
|
+
// Limit results (unless includeFull is true)
|
|
76
|
+
const totalMatches = results.length;
|
|
77
|
+
if (!includeFull) {
|
|
78
|
+
results = results.slice(0, maxResults);
|
|
79
|
+
}
|
|
80
|
+
// Limit symbols per file (unless includeFull is true)
|
|
81
|
+
if (!includeFull) {
|
|
82
|
+
results = this.resultProcessor.limitSymbolsPerFile(results, maxSymbolsPerFile);
|
|
83
|
+
}
|
|
84
|
+
// Enrich with group membership BEFORE compacting symbols
|
|
85
|
+
// (enrichWithGroups needs matchedSymbols to find symbol-level groups)
|
|
86
|
+
if (this.groupStore) {
|
|
87
|
+
results = this.resultProcessor.enrichWithGroups(results);
|
|
88
|
+
}
|
|
89
|
+
// Convert symbols to compact format if requested
|
|
90
|
+
if (symbolFormat === 'compact') {
|
|
91
|
+
results = this.resultProcessor.compactSymbols(results, maxSymbolsPerFile);
|
|
92
|
+
}
|
|
93
|
+
// Strip full symbols array from file metadata for token efficiency (unless includeFull is true)
|
|
94
|
+
if (!includeFull) {
|
|
95
|
+
results = this.resultProcessor.stripFileSymbols(results);
|
|
96
|
+
}
|
|
97
|
+
// Generate contextual hints
|
|
98
|
+
const hints = this.hintRegistry.getHints({
|
|
99
|
+
results,
|
|
100
|
+
totalMatches,
|
|
101
|
+
query: request.query,
|
|
102
|
+
mode,
|
|
103
|
+
useRegex
|
|
104
|
+
});
|
|
105
|
+
const durationMs = Date.now() - startTime;
|
|
106
|
+
// Build response envelope
|
|
107
|
+
const envelope = {
|
|
108
|
+
success: true,
|
|
109
|
+
data: {
|
|
110
|
+
results,
|
|
111
|
+
totalMatches,
|
|
112
|
+
hints: hints.length > 0 ? hints : undefined
|
|
113
|
+
},
|
|
114
|
+
meta: {
|
|
115
|
+
durationMs,
|
|
116
|
+
timestamp: Date.now(),
|
|
117
|
+
operation: 'search',
|
|
118
|
+
query: request.query,
|
|
119
|
+
mode
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
// Plugin hook: before returning results (plugins can enrich metadata)
|
|
123
|
+
if (this.eventBus) {
|
|
124
|
+
this.eventBus.emit('search:result:before', envelope);
|
|
125
|
+
}
|
|
126
|
+
// Plugin hook: after enrichment (plugins can post-process)
|
|
127
|
+
if (this.eventBus) {
|
|
128
|
+
this.eventBus.emit('search:result:after', envelope);
|
|
129
|
+
}
|
|
130
|
+
return envelope;
|
|
131
|
+
}
|
|
132
|
+
// ── Public API Methods ─────────────────────────────────────────────────────
|
|
133
|
+
/**
|
|
134
|
+
* Find files by name pattern (supports * wildcard).
|
|
135
|
+
*/
|
|
136
|
+
findByName(pattern) {
|
|
137
|
+
return this.textSearch.findByName(pattern);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Find files relevant to a task description.
|
|
141
|
+
* Uses keyword extraction + relevance scoring.
|
|
142
|
+
*/
|
|
143
|
+
findRelevant(task, maxResults) {
|
|
144
|
+
const response = this.search({
|
|
145
|
+
query: task,
|
|
146
|
+
mode: 'hybrid',
|
|
147
|
+
maxResults: maxResults || this.defaultMaxResults
|
|
148
|
+
});
|
|
149
|
+
return response.data?.results || [];
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Find all files that import a given file.
|
|
153
|
+
*/
|
|
154
|
+
findImporters(relativePath) {
|
|
155
|
+
return this.dependencyTraversal.findImporters(relativePath);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Find all files imported by a given file.
|
|
159
|
+
*/
|
|
160
|
+
findImports(relativePath) {
|
|
161
|
+
return this.dependencyTraversal.findImports(relativePath);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get related files (imports + importers).
|
|
165
|
+
*/
|
|
166
|
+
getRelated(relativePath) {
|
|
167
|
+
return this.dependencyTraversal.getRelated(relativePath);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Traverse dependency graph with BFS.
|
|
171
|
+
*/
|
|
172
|
+
traverse(startPath, direction, maxDepth = 3) {
|
|
173
|
+
return this.dependencyTraversal.traverse(startPath, direction, maxDepth);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Search for DOM elements in template files.
|
|
177
|
+
*
|
|
178
|
+
* @param query - Element name or tag to search for
|
|
179
|
+
* @param tag - Optional tag filter
|
|
180
|
+
* @param hasId - Optional ID filter (true = explicit IDs, false = auto-numbered)
|
|
181
|
+
* @param maxResults - Max results to return
|
|
182
|
+
* @returns Element matches with file context
|
|
183
|
+
*/
|
|
184
|
+
searchElements(query, options) {
|
|
185
|
+
const queryLower = query.toLowerCase();
|
|
186
|
+
const results = [];
|
|
187
|
+
const maxResults = options?.maxResults || this.defaultMaxResults;
|
|
188
|
+
for (const file of this.graph.getAllFiles()) {
|
|
189
|
+
if (!file.elements || file.elements.length === 0)
|
|
190
|
+
continue;
|
|
191
|
+
for (const element of file.elements) {
|
|
192
|
+
// Apply filters
|
|
193
|
+
if (options?.tag && element.tag !== options.tag)
|
|
194
|
+
continue;
|
|
195
|
+
if (options?.hasId !== undefined && element.hasId !== options.hasId)
|
|
196
|
+
continue;
|
|
197
|
+
// Check if element name or tag matches query
|
|
198
|
+
const matchesQuery = element.name.toLowerCase().includes(queryLower) ||
|
|
199
|
+
element.tag.toLowerCase().includes(queryLower);
|
|
200
|
+
if (matchesQuery) {
|
|
201
|
+
results.push({ element, file });
|
|
202
|
+
if (results.length >= maxResults)
|
|
203
|
+
return results;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return results;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
exports.QueryEngine = QueryEngine;
|
|
211
|
+
//# sourceMappingURL=QueryEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryEngine.js","sourceRoot":"","sources":["../../src/core/QueryEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scanner - Orchestrator using strategy pattern.
|
|
3
|
+
*
|
|
4
|
+
* Delegates to strategy classes for clean separation of concerns:
|
|
5
|
+
* - IgnorePatternMatcher: Pattern matching and .gitignore handling
|
|
6
|
+
* - DirectoryWalker: Safe directory tree traversal
|
|
7
|
+
* - DependencyResolver: Import resolution and dependency graph
|
|
8
|
+
*/
|
|
9
|
+
import type { FileSystemProvider } from '../types/contracts/FileSystemProvider';
|
|
10
|
+
import type { FileEntry } from '../types/core';
|
|
11
|
+
import type { EventBus } from './EventBus';
|
|
12
|
+
import type { FileSystemGraph } from './FileSystemGraph';
|
|
13
|
+
/**
|
|
14
|
+
* Scanner configuration.
|
|
15
|
+
*/
|
|
16
|
+
export interface ScannerConfig {
|
|
17
|
+
rootPath: string;
|
|
18
|
+
provider: FileSystemProvider;
|
|
19
|
+
eventBus: EventBus;
|
|
20
|
+
graph: FileSystemGraph;
|
|
21
|
+
ignorePatterns?: string[];
|
|
22
|
+
bypassHardcodedIgnoreList?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Scan lifecycle event payloads.
|
|
26
|
+
*/
|
|
27
|
+
export interface ScanStartPayload {
|
|
28
|
+
rootPath: string;
|
|
29
|
+
startTime: number;
|
|
30
|
+
}
|
|
31
|
+
export interface ScanFilePayload {
|
|
32
|
+
file: FileEntry;
|
|
33
|
+
content: string;
|
|
34
|
+
}
|
|
35
|
+
export interface ScanCompletePayload {
|
|
36
|
+
rootPath: string;
|
|
37
|
+
filesScanned: number;
|
|
38
|
+
directoriesScanned: number;
|
|
39
|
+
durationMs: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Scanner - Thin orchestrator delegating to strategies.
|
|
43
|
+
*/
|
|
44
|
+
export declare class Scanner {
|
|
45
|
+
private rootPath;
|
|
46
|
+
private provider;
|
|
47
|
+
private eventBus;
|
|
48
|
+
private graph;
|
|
49
|
+
private debugLogPath;
|
|
50
|
+
private patternMatcher;
|
|
51
|
+
private directoryWalker;
|
|
52
|
+
private dependencyResolver;
|
|
53
|
+
constructor(config: ScannerConfig);
|
|
54
|
+
private debugLog;
|
|
55
|
+
/**
|
|
56
|
+
* Load .gitignore patterns before scan.
|
|
57
|
+
*/
|
|
58
|
+
loadGitignore(): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Execute full project scan.
|
|
61
|
+
*/
|
|
62
|
+
scan(): Promise<{
|
|
63
|
+
filesScanned: number;
|
|
64
|
+
directoriesScanned: number;
|
|
65
|
+
durationMs: number;
|
|
66
|
+
}>;
|
|
67
|
+
/**
|
|
68
|
+
* Process a single file: add to graph, emit event.
|
|
69
|
+
*/
|
|
70
|
+
private processFile;
|
|
71
|
+
/**
|
|
72
|
+
* Add ignore pattern.
|
|
73
|
+
*/
|
|
74
|
+
addIgnorePattern(pattern: string): void;
|
|
75
|
+
/**
|
|
76
|
+
* Remove ignore pattern.
|
|
77
|
+
*/
|
|
78
|
+
removeIgnorePattern(pattern: string): void;
|
|
79
|
+
/**
|
|
80
|
+
* Get current patterns.
|
|
81
|
+
*/
|
|
82
|
+
getIgnorePatterns(): string[];
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=Scanner.d.ts.map
|