@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,397 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SessionTransactionLog - Semi-Persistent Transaction Tracker
|
|
4
|
+
*
|
|
5
|
+
* Tracks all actions during a session and persists them to disk.
|
|
6
|
+
* File survives crashes/disconnects but is deleted on proper session close.
|
|
7
|
+
*
|
|
8
|
+
* Workflow:
|
|
9
|
+
* 1. Actions are immediately appended to .codemap/session-transactions.json
|
|
10
|
+
* 2. File persists across restarts until codemap_session_close is called
|
|
11
|
+
* 3. On session_start: if file exists, warn about premature termination
|
|
12
|
+
* 4. On session_close: load, display, keep in memory, then delete file
|
|
13
|
+
*
|
|
14
|
+
* @codemap.usage Track file operations, group modifications, annotations
|
|
15
|
+
* @codemap.policy All tracked actions must be immediately persisted to disk
|
|
16
|
+
*/
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
34
|
+
var ownKeys = function(o) {
|
|
35
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
36
|
+
var ar = [];
|
|
37
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
38
|
+
return ar;
|
|
39
|
+
};
|
|
40
|
+
return ownKeys(o);
|
|
41
|
+
};
|
|
42
|
+
return function (mod) {
|
|
43
|
+
if (mod && mod.__esModule) return mod;
|
|
44
|
+
var result = {};
|
|
45
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
46
|
+
__setModuleDefault(result, mod);
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
})();
|
|
50
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
+
exports.SessionTransactionLog = void 0;
|
|
52
|
+
const path = __importStar(require("node:path"));
|
|
53
|
+
class SessionTransactionLog {
|
|
54
|
+
provider;
|
|
55
|
+
sessionFilePath;
|
|
56
|
+
summariesDirPath;
|
|
57
|
+
sessionData = null;
|
|
58
|
+
constructor(provider, codemapRoot = '.codemap') {
|
|
59
|
+
this.provider = provider;
|
|
60
|
+
this.sessionFilePath = path.join(codemapRoot, 'session-transactions.json');
|
|
61
|
+
this.summariesDirPath = path.join(codemapRoot, 'sessions', 'summaries');
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Initialize a new session.
|
|
65
|
+
* Returns existing session data if file exists (premature termination case).
|
|
66
|
+
*/
|
|
67
|
+
async initializeSession() {
|
|
68
|
+
const exists = await this.provider.exists(this.sessionFilePath);
|
|
69
|
+
if (exists) {
|
|
70
|
+
// Orphaned session detected - load it into memory
|
|
71
|
+
const content = await this.provider.read(this.sessionFilePath);
|
|
72
|
+
this.sessionData = JSON.parse(content);
|
|
73
|
+
return this.sessionData;
|
|
74
|
+
}
|
|
75
|
+
// Create new session
|
|
76
|
+
this.sessionData = {
|
|
77
|
+
sessionId: new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19),
|
|
78
|
+
startedAt: new Date().toISOString(),
|
|
79
|
+
transactions: []
|
|
80
|
+
};
|
|
81
|
+
await this.saveToFile();
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Check if a session is currently active.
|
|
86
|
+
* Returns true if session data exists in memory, false otherwise.
|
|
87
|
+
*/
|
|
88
|
+
isSessionActive() {
|
|
89
|
+
return this.sessionData !== null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Track a transaction.
|
|
93
|
+
* Immediately persists to disk.
|
|
94
|
+
*
|
|
95
|
+
* @param action - Event type (must be a valid CodeMapEvent)
|
|
96
|
+
* @param target - Target identifier (file path, group name, etc.)
|
|
97
|
+
* @param details - Optional additional context
|
|
98
|
+
*/
|
|
99
|
+
async track(action, target, details) {
|
|
100
|
+
if (!this.sessionData) {
|
|
101
|
+
throw new Error('Session not initialized. Call initializeSession() first.');
|
|
102
|
+
}
|
|
103
|
+
const transaction = {
|
|
104
|
+
timestamp: new Date().toISOString(),
|
|
105
|
+
action,
|
|
106
|
+
target,
|
|
107
|
+
details
|
|
108
|
+
};
|
|
109
|
+
this.sessionData.transactions.push(transaction);
|
|
110
|
+
await this.saveToFile();
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get current session summary.
|
|
114
|
+
*
|
|
115
|
+
* @param summary - Optional user-provided summary of what was accomplished
|
|
116
|
+
*/
|
|
117
|
+
getSummary(summary) {
|
|
118
|
+
if (!this.sessionData) {
|
|
119
|
+
throw new Error('Session not initialized.');
|
|
120
|
+
}
|
|
121
|
+
const filesCreated = [];
|
|
122
|
+
const filesUpdated = [];
|
|
123
|
+
const filesDeleted = [];
|
|
124
|
+
const filesRenamed = [];
|
|
125
|
+
const groupsModified = new Set();
|
|
126
|
+
const notationsAdded = [];
|
|
127
|
+
const annotationsAdded = [];
|
|
128
|
+
for (const tx of this.sessionData.transactions) {
|
|
129
|
+
switch (tx.action) {
|
|
130
|
+
case 'file:create':
|
|
131
|
+
filesCreated.push(tx.target);
|
|
132
|
+
break;
|
|
133
|
+
case 'file:update':
|
|
134
|
+
filesUpdated.push(tx.target);
|
|
135
|
+
break;
|
|
136
|
+
case 'file:delete':
|
|
137
|
+
filesDeleted.push(tx.target);
|
|
138
|
+
break;
|
|
139
|
+
case 'file:rename':
|
|
140
|
+
filesRenamed.push({
|
|
141
|
+
from: tx.details?.from || '',
|
|
142
|
+
to: tx.details?.to || ''
|
|
143
|
+
});
|
|
144
|
+
break;
|
|
145
|
+
case 'group:add':
|
|
146
|
+
groupsModified.add(tx.target);
|
|
147
|
+
break;
|
|
148
|
+
case 'group:notate':
|
|
149
|
+
groupsModified.add(tx.target);
|
|
150
|
+
notationsAdded.push({
|
|
151
|
+
group: tx.target,
|
|
152
|
+
text: tx.details?.text || ''
|
|
153
|
+
});
|
|
154
|
+
break;
|
|
155
|
+
case 'annotation:add':
|
|
156
|
+
case 'annotation:add:source':
|
|
157
|
+
case 'annotation:add:meta':
|
|
158
|
+
annotationsAdded.push(tx.target);
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
const duration = this.formatDuration(new Date(this.sessionData.startedAt), new Date());
|
|
163
|
+
return {
|
|
164
|
+
sessionId: this.sessionData.sessionId,
|
|
165
|
+
startedAt: this.sessionData.startedAt,
|
|
166
|
+
duration,
|
|
167
|
+
summary, // Include user-provided summary
|
|
168
|
+
filesCreated,
|
|
169
|
+
filesUpdated,
|
|
170
|
+
filesDeleted,
|
|
171
|
+
filesRenamed,
|
|
172
|
+
groupsModified: Array.from(groupsModified),
|
|
173
|
+
notationsAdded,
|
|
174
|
+
annotationsAdded
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Close the session.
|
|
179
|
+
* Saves summary to backup, cleans up old summaries, then deletes transaction file.
|
|
180
|
+
*
|
|
181
|
+
* @param summary - Optional user-provided summary of what was accomplished
|
|
182
|
+
* @param retentionCount - Number of summaries to keep (0 = unlimited, default: 5)
|
|
183
|
+
*/
|
|
184
|
+
async closeSession(summary, retentionCount = 5) {
|
|
185
|
+
if (!this.sessionData) {
|
|
186
|
+
throw new Error('Session not initialized.');
|
|
187
|
+
}
|
|
188
|
+
const finalData = { ...this.sessionData };
|
|
189
|
+
const sessionSummary = this.getSummary(summary);
|
|
190
|
+
// Save summary to backup
|
|
191
|
+
await this.saveSummaryBackup(sessionSummary);
|
|
192
|
+
// Cleanup old summaries if retention limit set
|
|
193
|
+
if (retentionCount > 0) {
|
|
194
|
+
await this.cleanupOldSummaries(retentionCount);
|
|
195
|
+
}
|
|
196
|
+
// Delete the transaction file
|
|
197
|
+
await this.provider.remove(this.sessionFilePath);
|
|
198
|
+
// Clear in-memory data
|
|
199
|
+
this.sessionData = null;
|
|
200
|
+
return finalData;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Check if session file exists (orphaned session detection).
|
|
204
|
+
*/
|
|
205
|
+
async hasOrphanedSession() {
|
|
206
|
+
return await this.provider.exists(this.sessionFilePath);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Load orphaned session data without initializing new session.
|
|
210
|
+
*/
|
|
211
|
+
async loadOrphanedSession() {
|
|
212
|
+
const exists = await this.provider.exists(this.sessionFilePath);
|
|
213
|
+
if (!exists)
|
|
214
|
+
return null;
|
|
215
|
+
const content = await this.provider.read(this.sessionFilePath);
|
|
216
|
+
return JSON.parse(content);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Save session summary to backup directory.
|
|
220
|
+
*/
|
|
221
|
+
async saveSummaryBackup(summary) {
|
|
222
|
+
try {
|
|
223
|
+
// Ensure summaries directory exists
|
|
224
|
+
await this.provider.mkdir(this.summariesDirPath);
|
|
225
|
+
// Write summary file
|
|
226
|
+
const summaryPath = path.join(this.summariesDirPath, `${summary.sessionId}.json`);
|
|
227
|
+
const content = JSON.stringify(summary, null, 2);
|
|
228
|
+
await this.provider.write(summaryPath, content);
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
console.error('Failed to save session summary backup:', error);
|
|
232
|
+
// Don't throw - session close should still succeed
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Cleanup old summary backups beyond retention limit.
|
|
237
|
+
*/
|
|
238
|
+
async cleanupOldSummaries(retentionCount) {
|
|
239
|
+
try {
|
|
240
|
+
const fileNames = await this.provider.readdir(this.summariesDirPath);
|
|
241
|
+
if (!fileNames || fileNames.length <= retentionCount) {
|
|
242
|
+
return; // No cleanup needed
|
|
243
|
+
}
|
|
244
|
+
// Sort by filename (sessionId timestamp) descending (newest first)
|
|
245
|
+
const summaryFiles = fileNames
|
|
246
|
+
.filter((f) => f.endsWith('.json'))
|
|
247
|
+
.sort((a, b) => b.localeCompare(a));
|
|
248
|
+
// Delete files beyond retention count
|
|
249
|
+
const filesToDelete = summaryFiles.slice(retentionCount);
|
|
250
|
+
for (const file of filesToDelete) {
|
|
251
|
+
const filePath = path.join(this.summariesDirPath, file);
|
|
252
|
+
await this.provider.remove(filePath);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
console.error('Failed to cleanup old session summaries:', error);
|
|
257
|
+
// Don't throw - not critical
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Get the most recent session summary (either successfully closed or orphaned).
|
|
262
|
+
* Returns null if no summaries exist.
|
|
263
|
+
*/
|
|
264
|
+
async getLastSessionSummary() {
|
|
265
|
+
// First check if there's an orphaned session (takes priority)
|
|
266
|
+
const orphaned = await this.loadOrphanedSession();
|
|
267
|
+
if (orphaned) {
|
|
268
|
+
// Reconstruct summary from orphaned data
|
|
269
|
+
this.sessionData = orphaned;
|
|
270
|
+
const summary = this.getSummary();
|
|
271
|
+
this.sessionData = null; // Clear temp data
|
|
272
|
+
return {
|
|
273
|
+
summary,
|
|
274
|
+
wasOrphaned: true
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
// Otherwise, get the most recent saved summary
|
|
278
|
+
try {
|
|
279
|
+
await this.provider.mkdir(this.summariesDirPath);
|
|
280
|
+
const fileNames = await this.provider.readdir(this.summariesDirPath);
|
|
281
|
+
if (!fileNames || fileNames.length === 0) {
|
|
282
|
+
return null;
|
|
283
|
+
}
|
|
284
|
+
// Sort by filename (sessionId timestamp) descending
|
|
285
|
+
const summaryFiles = fileNames
|
|
286
|
+
.filter((f) => f.endsWith('.json'))
|
|
287
|
+
.sort((a, b) => b.localeCompare(a));
|
|
288
|
+
if (summaryFiles.length === 0) {
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
291
|
+
// Read the most recent summary
|
|
292
|
+
const latestPath = path.join(this.summariesDirPath, summaryFiles[0]);
|
|
293
|
+
const content = await this.provider.read(latestPath);
|
|
294
|
+
const summary = JSON.parse(content);
|
|
295
|
+
return {
|
|
296
|
+
summary,
|
|
297
|
+
wasOrphaned: false
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
catch (error) {
|
|
301
|
+
// Directory doesn't exist or other error
|
|
302
|
+
return null;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* List session summaries with pagination.
|
|
307
|
+
*
|
|
308
|
+
* @param page - Page number (1-based)
|
|
309
|
+
* @param pageSize - Number of sessions per page
|
|
310
|
+
* @returns Paginated session summaries
|
|
311
|
+
*/
|
|
312
|
+
async listSessions(page = 1, pageSize = 10) {
|
|
313
|
+
try {
|
|
314
|
+
await this.provider.mkdir(this.summariesDirPath);
|
|
315
|
+
const fileNames = await this.provider.readdir(this.summariesDirPath);
|
|
316
|
+
const summaryFiles = fileNames
|
|
317
|
+
.filter((f) => f.endsWith('.json'))
|
|
318
|
+
.sort((a, b) => b.localeCompare(a)); // Newest first
|
|
319
|
+
// Calculate pagination
|
|
320
|
+
const totalSessions = summaryFiles.length;
|
|
321
|
+
const totalPages = Math.ceil(totalSessions / pageSize);
|
|
322
|
+
const startIndex = (page - 1) * pageSize;
|
|
323
|
+
const endIndex = Math.min(startIndex + pageSize, totalSessions);
|
|
324
|
+
const pageFiles = summaryFiles.slice(startIndex, endIndex);
|
|
325
|
+
// Load summaries for this page
|
|
326
|
+
const sessions = [];
|
|
327
|
+
for (const fileName of pageFiles) {
|
|
328
|
+
const filePath = path.join(this.summariesDirPath, fileName);
|
|
329
|
+
const content = await this.provider.read(filePath);
|
|
330
|
+
const summary = JSON.parse(content);
|
|
331
|
+
sessions.push(summary);
|
|
332
|
+
}
|
|
333
|
+
return {
|
|
334
|
+
sessions,
|
|
335
|
+
pagination: {
|
|
336
|
+
page,
|
|
337
|
+
pageSize,
|
|
338
|
+
totalSessions,
|
|
339
|
+
totalPages,
|
|
340
|
+
hasMore: page < totalPages
|
|
341
|
+
}
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
catch (error) {
|
|
345
|
+
// Directory doesn't exist or other error
|
|
346
|
+
return {
|
|
347
|
+
sessions: [],
|
|
348
|
+
pagination: {
|
|
349
|
+
page,
|
|
350
|
+
pageSize,
|
|
351
|
+
totalSessions: 0,
|
|
352
|
+
totalPages: 0,
|
|
353
|
+
hasMore: false
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Read a specific session summary by ID.
|
|
360
|
+
*
|
|
361
|
+
* @param sessionId - Session ID to read
|
|
362
|
+
* @returns Session summary or null if not found
|
|
363
|
+
*/
|
|
364
|
+
async readSession(sessionId) {
|
|
365
|
+
try {
|
|
366
|
+
const filePath = path.join(this.summariesDirPath, `${sessionId}.json`);
|
|
367
|
+
const exists = await this.provider.exists(filePath);
|
|
368
|
+
if (!exists) {
|
|
369
|
+
return null;
|
|
370
|
+
}
|
|
371
|
+
const content = await this.provider.read(filePath);
|
|
372
|
+
return JSON.parse(content);
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
return null;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
// ── Private Helpers ────────────────────────────────────────────────────────
|
|
379
|
+
async saveToFile() {
|
|
380
|
+
if (!this.sessionData)
|
|
381
|
+
return;
|
|
382
|
+
const content = JSON.stringify(this.sessionData, null, 2);
|
|
383
|
+
await this.provider.write(this.sessionFilePath, content);
|
|
384
|
+
}
|
|
385
|
+
formatDuration(start, end) {
|
|
386
|
+
const diffMs = end.getTime() - start.getTime();
|
|
387
|
+
const minutes = Math.floor(diffMs / 60000);
|
|
388
|
+
if (minutes < 60) {
|
|
389
|
+
return `${minutes} minute${minutes !== 1 ? 's' : ''}`;
|
|
390
|
+
}
|
|
391
|
+
const hours = Math.floor(minutes / 60);
|
|
392
|
+
const remainingMinutes = minutes % 60;
|
|
393
|
+
return `${hours} hour${hours !== 1 ? 's' : ''} ${remainingMinutes} minute${remainingMinutes !== 1 ? 's' : ''}`;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
exports.SessionTransactionLog = SessionTransactionLog;
|
|
397
|
+
//# sourceMappingURL=SessionTransactionLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionTransactionLog.js","sourceRoot":"","sources":["../../src/core/SessionTransactionLog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Target parser with support for wildcards and line ranges.
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Wildcards: "src/components/*.vue" or "src.components.*"
|
|
6
|
+
* - Line ranges: "file.ts:1-50" or "file.ts:10" (1-indexed)
|
|
7
|
+
* - Dot notation: "src.components.TaskCard" → "src/components/TaskCard"
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const parser = new TargetParser();
|
|
12
|
+
*
|
|
13
|
+
* // Simple file
|
|
14
|
+
* parser.parse("TaskCard.vue")
|
|
15
|
+
* // → { basePath: "TaskCard.vue", isWildcard: false }
|
|
16
|
+
*
|
|
17
|
+
* // With line range
|
|
18
|
+
* parser.parse("TaskCard.vue:1-50")
|
|
19
|
+
* // → { basePath: "TaskCard.vue", isWildcard: false, lineRange: { start: 1, end: 50 } }
|
|
20
|
+
*
|
|
21
|
+
* // Wildcard
|
|
22
|
+
* parser.parse("src/components/*.vue")
|
|
23
|
+
* // → { basePath: "src/components/*.vue", isWildcard: true }
|
|
24
|
+
*
|
|
25
|
+
* // Dot notation
|
|
26
|
+
* parser.parse("src.components.TaskCard")
|
|
27
|
+
* // → { basePath: "src/components/TaskCard", isWildcard: false }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
import type { ParsedTarget } from '../types';
|
|
31
|
+
export declare class TargetParser {
|
|
32
|
+
/**
|
|
33
|
+
* Parse a target string into structured components.
|
|
34
|
+
*
|
|
35
|
+
* @param target - Target string (may include wildcards and/or line range)
|
|
36
|
+
* @returns Parsed target structure
|
|
37
|
+
*/
|
|
38
|
+
parse(target: string): ParsedTarget;
|
|
39
|
+
/**
|
|
40
|
+
* Parse multiple targets.
|
|
41
|
+
*
|
|
42
|
+
* @param targets - Array of target strings
|
|
43
|
+
* @returns Array of parsed targets
|
|
44
|
+
*/
|
|
45
|
+
parseMany(targets: string[]): ParsedTarget[];
|
|
46
|
+
/**
|
|
47
|
+
* Check if a path contains wildcard characters.
|
|
48
|
+
*
|
|
49
|
+
* @param path - Path to check
|
|
50
|
+
* @returns True if path contains * or ?
|
|
51
|
+
*/
|
|
52
|
+
hasWildcard(path: string): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Normalize path separators.
|
|
55
|
+
*
|
|
56
|
+
* Supports both:
|
|
57
|
+
* - Forward slashes: "src/components/TaskCard"
|
|
58
|
+
* - Dot notation: "src.components.TaskCard"
|
|
59
|
+
*
|
|
60
|
+
* Always returns forward-slash format for consistency.
|
|
61
|
+
*
|
|
62
|
+
* @param path - Path with any separator style
|
|
63
|
+
* @returns Path with forward slashes
|
|
64
|
+
*/
|
|
65
|
+
normalizePath(path: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* Validate a parsed target.
|
|
68
|
+
*
|
|
69
|
+
* @param parsed - Parsed target to validate
|
|
70
|
+
* @throws Error if target is invalid
|
|
71
|
+
*/
|
|
72
|
+
validate(parsed: ParsedTarget): void;
|
|
73
|
+
/**
|
|
74
|
+
* Extract line range from file content.
|
|
75
|
+
*
|
|
76
|
+
* @param content - Full file content
|
|
77
|
+
* @param lineRange - Line range (1-indexed, inclusive)
|
|
78
|
+
* @returns Extracted lines joined with newlines
|
|
79
|
+
*/
|
|
80
|
+
extractLineRange(content: string, lineRange: {
|
|
81
|
+
start: number;
|
|
82
|
+
end: number;
|
|
83
|
+
}): string;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=TargetParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TargetParser.d.ts","sourceRoot":"","sources":["../../src/core/TargetParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,qBAAa,YAAY;IAEvB;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAwCnC;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE;IAI5C;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA2BnC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAwBpC;;;;;;OAMG;IACH,gBAAgB,CACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GACxC,MAAM;CAeV"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Target parser with support for wildcards and line ranges.
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Wildcards: "src/components/*.vue" or "src.components.*"
|
|
7
|
+
* - Line ranges: "file.ts:1-50" or "file.ts:10" (1-indexed)
|
|
8
|
+
* - Dot notation: "src.components.TaskCard" → "src/components/TaskCard"
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const parser = new TargetParser();
|
|
13
|
+
*
|
|
14
|
+
* // Simple file
|
|
15
|
+
* parser.parse("TaskCard.vue")
|
|
16
|
+
* // → { basePath: "TaskCard.vue", isWildcard: false }
|
|
17
|
+
*
|
|
18
|
+
* // With line range
|
|
19
|
+
* parser.parse("TaskCard.vue:1-50")
|
|
20
|
+
* // → { basePath: "TaskCard.vue", isWildcard: false, lineRange: { start: 1, end: 50 } }
|
|
21
|
+
*
|
|
22
|
+
* // Wildcard
|
|
23
|
+
* parser.parse("src/components/*.vue")
|
|
24
|
+
* // → { basePath: "src/components/*.vue", isWildcard: true }
|
|
25
|
+
*
|
|
26
|
+
* // Dot notation
|
|
27
|
+
* parser.parse("src.components.TaskCard")
|
|
28
|
+
* // → { basePath: "src/components/TaskCard", isWildcard: false }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.TargetParser = void 0;
|
|
33
|
+
class TargetParser {
|
|
34
|
+
/**
|
|
35
|
+
* Parse a target string into structured components.
|
|
36
|
+
*
|
|
37
|
+
* @param target - Target string (may include wildcards and/or line range)
|
|
38
|
+
* @returns Parsed target structure
|
|
39
|
+
*/
|
|
40
|
+
parse(target) {
|
|
41
|
+
if (!target || target.trim().length === 0) {
|
|
42
|
+
throw new Error('Target cannot be empty');
|
|
43
|
+
}
|
|
44
|
+
const trimmed = target.trim();
|
|
45
|
+
// Check for line range suffix: "file.ts:10" or "file.ts:10-20"
|
|
46
|
+
const lineRangeMatch = trimmed.match(/^(.+):(\d+)(?:-(\d+))?$/);
|
|
47
|
+
if (lineRangeMatch) {
|
|
48
|
+
const [, basePath, startStr, endStr] = lineRangeMatch;
|
|
49
|
+
const start = parseInt(startStr, 10);
|
|
50
|
+
const end = endStr ? parseInt(endStr, 10) : start;
|
|
51
|
+
// Validate 1-indexed line numbers
|
|
52
|
+
if (start < 1 || end < 1) {
|
|
53
|
+
throw new Error(`Line numbers must be >= 1 (got start=${start}, end=${end})`);
|
|
54
|
+
}
|
|
55
|
+
if (start > end) {
|
|
56
|
+
throw new Error(`Line range start (${start}) cannot be greater than end (${end})`);
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
basePath: this.normalizePath(basePath),
|
|
60
|
+
isWildcard: this.hasWildcard(basePath),
|
|
61
|
+
lineRange: { start, end },
|
|
62
|
+
original: trimmed
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// No line range
|
|
66
|
+
return {
|
|
67
|
+
basePath: this.normalizePath(trimmed),
|
|
68
|
+
isWildcard: this.hasWildcard(trimmed),
|
|
69
|
+
original: trimmed
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Parse multiple targets.
|
|
74
|
+
*
|
|
75
|
+
* @param targets - Array of target strings
|
|
76
|
+
* @returns Array of parsed targets
|
|
77
|
+
*/
|
|
78
|
+
parseMany(targets) {
|
|
79
|
+
return targets.map(t => this.parse(t));
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Check if a path contains wildcard characters.
|
|
83
|
+
*
|
|
84
|
+
* @param path - Path to check
|
|
85
|
+
* @returns True if path contains * or ?
|
|
86
|
+
*/
|
|
87
|
+
hasWildcard(path) {
|
|
88
|
+
return path.includes('*') || path.includes('?');
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Normalize path separators.
|
|
92
|
+
*
|
|
93
|
+
* Supports both:
|
|
94
|
+
* - Forward slashes: "src/components/TaskCard"
|
|
95
|
+
* - Dot notation: "src.components.TaskCard"
|
|
96
|
+
*
|
|
97
|
+
* Always returns forward-slash format for consistency.
|
|
98
|
+
*
|
|
99
|
+
* @param path - Path with any separator style
|
|
100
|
+
* @returns Path with forward slashes
|
|
101
|
+
*/
|
|
102
|
+
normalizePath(path) {
|
|
103
|
+
// CRITICAL: Skip dot-notation conversion for absolute paths
|
|
104
|
+
// Absolute paths should be treated literally - dots are just dots
|
|
105
|
+
// Examples:
|
|
106
|
+
// P:\Sandbox\Testing\test.helper.ts → keep as-is
|
|
107
|
+
// /usr/local/bin/test.helper.sh → keep as-is
|
|
108
|
+
// C:/Users/test.config.json → keep as-is
|
|
109
|
+
// Check if path is absolute (Windows or Unix)
|
|
110
|
+
const isAbsolute = /^([A-Za-z]:[\\/]|[\\/])/.test(path);
|
|
111
|
+
if (isAbsolute) {
|
|
112
|
+
return path; // No dot-notation conversion for absolute paths
|
|
113
|
+
}
|
|
114
|
+
// For relative paths, apply dot-notation conversion
|
|
115
|
+
// Don't convert dots that are part of file extensions
|
|
116
|
+
// Example: "TaskCard.vue" should stay "TaskCard.vue"
|
|
117
|
+
// But: "src.components.TaskCard.vue" → "src/components/TaskCard.vue"
|
|
118
|
+
// Strategy: Only convert dots before the last dot (preserves file extensions)
|
|
119
|
+
const lastDotIndex = path.lastIndexOf('.');
|
|
120
|
+
if (lastDotIndex === -1 || path.indexOf('.') === lastDotIndex)
|
|
121
|
+
return path;
|
|
122
|
+
const pathPart = path.slice(0, lastDotIndex);
|
|
123
|
+
const extension = path.slice(lastDotIndex);
|
|
124
|
+
return pathPart.replace(/\./g, '/') + extension;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Validate a parsed target.
|
|
128
|
+
*
|
|
129
|
+
* @param parsed - Parsed target to validate
|
|
130
|
+
* @throws Error if target is invalid
|
|
131
|
+
*/
|
|
132
|
+
validate(parsed) {
|
|
133
|
+
// Cannot have wildcards AND line ranges
|
|
134
|
+
if (parsed.isWildcard && parsed.lineRange) {
|
|
135
|
+
throw new Error(`Target cannot have both wildcards and line range: "${parsed.original}"`);
|
|
136
|
+
}
|
|
137
|
+
// Line range validation
|
|
138
|
+
if (parsed.lineRange) {
|
|
139
|
+
const { start, end } = parsed.lineRange;
|
|
140
|
+
if (start < 1 || end < 1) {
|
|
141
|
+
throw new Error(`Line numbers must be >= 1 in "${parsed.original}"`);
|
|
142
|
+
}
|
|
143
|
+
if (start > end) {
|
|
144
|
+
throw new Error(`Line range start (${start}) > end (${end}) in "${parsed.original}"`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Extract line range from file content.
|
|
150
|
+
*
|
|
151
|
+
* @param content - Full file content
|
|
152
|
+
* @param lineRange - Line range (1-indexed, inclusive)
|
|
153
|
+
* @returns Extracted lines joined with newlines
|
|
154
|
+
*/
|
|
155
|
+
extractLineRange(content, lineRange) {
|
|
156
|
+
const lines = content.split('\n');
|
|
157
|
+
// Convert 1-indexed to 0-indexed
|
|
158
|
+
const startIdx = lineRange.start - 1;
|
|
159
|
+
const endIdx = lineRange.end - 1;
|
|
160
|
+
if (startIdx < 0 || endIdx >= lines.length || startIdx > endIdx) {
|
|
161
|
+
throw new Error(`Invalid line range ${lineRange.start}-${lineRange.end} for file with ${lines.length} lines`);
|
|
162
|
+
}
|
|
163
|
+
return lines.slice(startIdx, endIdx + 1).join('\n');
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
exports.TargetParser = TargetParser;
|
|
167
|
+
//# sourceMappingURL=TargetParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TargetParser.js","sourceRoot":"","sources":["../../src/core/TargetParser.ts"],"names":[],"mappings":"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"}
|