lmgrep 0.1.18 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +253 -62
- package/completions/_lmgrep +49 -40
- package/dist/application/Lmgrep.d.ts +107 -0
- package/dist/application/Lmgrep.js +99 -0
- package/dist/application/Lmgrep.js.map +1 -0
- package/dist/application/LmgrepFactory.d.ts +40 -0
- package/dist/application/LmgrepFactory.js +155 -0
- package/dist/application/LmgrepFactory.js.map +1 -0
- package/dist/application/indexing/BranchBootstrapper.d.ts +21 -0
- package/dist/application/indexing/BranchBootstrapper.js +52 -0
- package/dist/application/indexing/BranchBootstrapper.js.map +1 -0
- package/dist/application/indexing/BranchManifestSweeper.d.ts +17 -0
- package/dist/application/indexing/BranchManifestSweeper.js +35 -0
- package/dist/application/indexing/BranchManifestSweeper.js.map +1 -0
- package/dist/application/indexing/Duration.d.ts +9 -0
- package/dist/application/indexing/Duration.js +25 -0
- package/dist/application/indexing/Duration.js.map +1 -0
- package/dist/application/indexing/EmbeddingAbortError.d.ts +11 -0
- package/dist/application/indexing/EmbeddingAbortError.js +20 -0
- package/dist/application/indexing/EmbeddingAbortError.js.map +1 -0
- package/dist/application/indexing/EmbeddingPipeline.d.ts +59 -0
- package/dist/application/indexing/EmbeddingPipeline.js +140 -0
- package/dist/application/indexing/EmbeddingPipeline.js.map +1 -0
- package/dist/application/indexing/IndexBuilder.d.ts +112 -0
- package/dist/application/indexing/IndexBuilder.js +370 -0
- package/dist/application/indexing/IndexBuilder.js.map +1 -0
- package/dist/application/indexing/IndexingProgress.d.ts +34 -0
- package/dist/application/indexing/IndexingProgress.js +2 -0
- package/dist/application/indexing/IndexingProgress.js.map +1 -0
- package/dist/application/operations/Deadline.d.ts +13 -0
- package/dist/application/operations/Deadline.js +29 -0
- package/dist/application/operations/Deadline.js.map +1 -0
- package/dist/application/operations/HealthMonitor.d.ts +58 -0
- package/dist/application/operations/HealthMonitor.js +128 -0
- package/dist/application/operations/HealthMonitor.js.map +1 -0
- package/dist/application/operations/IndexAlternatives.d.ts +35 -0
- package/dist/application/operations/IndexAlternatives.js +61 -0
- package/dist/application/operations/IndexAlternatives.js.map +1 -0
- package/dist/application/operations/IndexInventory.d.ts +69 -0
- package/dist/application/operations/IndexInventory.js +99 -0
- package/dist/application/operations/IndexInventory.js.map +1 -0
- package/dist/application/operations/StatusService.d.ts +90 -0
- package/dist/application/operations/StatusService.js +171 -0
- package/dist/application/operations/StatusService.js.map +1 -0
- package/dist/application/operations/WatchService.d.ts +67 -0
- package/dist/application/operations/WatchService.js +145 -0
- package/dist/application/operations/WatchService.js.map +1 -0
- package/dist/application/operations/WorkingTreeDiff.d.ts +19 -0
- package/dist/application/operations/WorkingTreeDiff.js +36 -0
- package/dist/application/operations/WorkingTreeDiff.js.map +1 -0
- package/dist/application/research/ResearchAgent.d.ts +68 -0
- package/dist/application/research/ResearchAgent.js +201 -0
- package/dist/application/research/ResearchAgent.js.map +1 -0
- package/dist/application/research/ResearchPrompts.d.ts +16 -0
- package/dist/application/research/ResearchPrompts.js +34 -0
- package/dist/application/research/ResearchPrompts.js.map +1 -0
- package/dist/application/search/SearchCriteria.d.ts +37 -0
- package/dist/application/search/SearchCriteria.js +48 -0
- package/dist/application/search/SearchCriteria.js.map +1 -0
- package/dist/application/search/SearchService.d.ts +36 -0
- package/dist/application/search/SearchService.js +108 -0
- package/dist/application/search/SearchService.js.map +1 -0
- package/dist/application/search/SearchTargetResolver.d.ts +56 -0
- package/dist/application/search/SearchTargetResolver.js +104 -0
- package/dist/application/search/SearchTargetResolver.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +4 -953
- package/dist/cli.js.map +1 -1
- package/dist/domain/config/ConfigSource.d.ts +16 -0
- package/dist/domain/config/ConfigSource.js +2 -0
- package/dist/domain/config/ConfigSource.js.map +1 -0
- package/dist/domain/config/LmgrepConfig.d.ts +53 -0
- package/dist/domain/config/LmgrepConfig.js +2 -0
- package/dist/domain/config/LmgrepConfig.js.map +1 -0
- package/dist/domain/corpus/Chunk.d.ts +49 -0
- package/dist/domain/corpus/Chunk.js +60 -0
- package/dist/domain/corpus/Chunk.js.map +1 -0
- package/dist/domain/corpus/CodeLocation.d.ts +18 -0
- package/dist/domain/corpus/CodeLocation.js +34 -0
- package/dist/domain/corpus/CodeLocation.js.map +1 -0
- package/dist/domain/corpus/ContentHash.d.ts +15 -0
- package/dist/domain/corpus/ContentHash.js +30 -0
- package/dist/domain/corpus/ContentHash.js.map +1 -0
- package/dist/domain/corpus/FileVersion.d.ts +31 -0
- package/dist/domain/corpus/FileVersion.js +47 -0
- package/dist/domain/corpus/FileVersion.js.map +1 -0
- package/dist/domain/corpus/SourceFile.d.ts +26 -0
- package/dist/domain/corpus/SourceFile.js +47 -0
- package/dist/domain/corpus/SourceFile.js.map +1 -0
- package/dist/domain/corpus/Vector.d.ts +37 -0
- package/dist/domain/corpus/Vector.js +96 -0
- package/dist/domain/corpus/Vector.js.map +1 -0
- package/dist/domain/ports/ChatModelPort.d.ts +57 -0
- package/dist/domain/ports/ChatModelPort.js +2 -0
- package/dist/domain/ports/ChatModelPort.js.map +1 -0
- package/dist/domain/ports/ChunkRepositoryPort.d.ts +42 -0
- package/dist/domain/ports/ChunkRepositoryPort.js +2 -0
- package/dist/domain/ports/ChunkRepositoryPort.js.map +1 -0
- package/dist/domain/ports/ChunkerPort.d.ts +5 -0
- package/dist/domain/ports/ChunkerPort.js +2 -0
- package/dist/domain/ports/ChunkerPort.js.map +1 -0
- package/dist/domain/ports/DatabaseSessionPort.d.ts +10 -0
- package/dist/domain/ports/DatabaseSessionPort.js +2 -0
- package/dist/domain/ports/DatabaseSessionPort.js.map +1 -0
- package/dist/domain/ports/EmbedderPort.d.ts +14 -0
- package/dist/domain/ports/EmbedderPort.js +2 -0
- package/dist/domain/ports/EmbedderPort.js.map +1 -0
- package/dist/domain/ports/FileManifestRepositoryPort.d.ts +32 -0
- package/dist/domain/ports/FileManifestRepositoryPort.js +2 -0
- package/dist/domain/ports/FileManifestRepositoryPort.js.map +1 -0
- package/dist/domain/ports/GitPort.d.ts +24 -0
- package/dist/domain/ports/GitPort.js +2 -0
- package/dist/domain/ports/GitPort.js.map +1 -0
- package/dist/domain/ports/IndexMaintenancePort.d.ts +58 -0
- package/dist/domain/ports/IndexMaintenancePort.js +2 -0
- package/dist/domain/ports/IndexMaintenancePort.js.map +1 -0
- package/dist/domain/ports/IndexMetadataPort.d.ts +23 -0
- package/dist/domain/ports/IndexMetadataPort.js +2 -0
- package/dist/domain/ports/IndexMetadataPort.js.map +1 -0
- package/dist/domain/ports/LockPort.d.ts +17 -0
- package/dist/domain/ports/LockPort.js +2 -0
- package/dist/domain/ports/LockPort.js.map +1 -0
- package/dist/domain/ports/LoggerPort.d.ts +5 -0
- package/dist/domain/ports/LoggerPort.js +2 -0
- package/dist/domain/ports/LoggerPort.js.map +1 -0
- package/dist/domain/ports/ProjectIndexesPort.d.ts +20 -0
- package/dist/domain/ports/ProjectIndexesPort.js +2 -0
- package/dist/domain/ports/ProjectIndexesPort.js.map +1 -0
- package/dist/domain/ports/ProjectRegistryPort.d.ts +42 -0
- package/dist/domain/ports/ProjectRegistryPort.js +2 -0
- package/dist/domain/ports/ProjectRegistryPort.js.map +1 -0
- package/dist/domain/ports/StateDirectoryPort.d.ts +29 -0
- package/dist/domain/ports/StateDirectoryPort.js +2 -0
- package/dist/domain/ports/StateDirectoryPort.js.map +1 -0
- package/dist/domain/ports/WorkspacePort.d.ts +38 -0
- package/dist/domain/ports/WorkspacePort.js +2 -0
- package/dist/domain/ports/WorkspacePort.js.map +1 -0
- package/dist/domain/project/Branch.d.ts +20 -0
- package/dist/domain/project/Branch.js +33 -0
- package/dist/domain/project/Branch.js.map +1 -0
- package/dist/domain/project/DatabaseLocation.d.ts +32 -0
- package/dist/domain/project/DatabaseLocation.js +35 -0
- package/dist/domain/project/DatabaseLocation.js.map +1 -0
- package/dist/domain/project/IndexMetadata.d.ts +17 -0
- package/dist/domain/project/IndexMetadata.js +2 -0
- package/dist/domain/project/IndexMetadata.js.map +1 -0
- package/dist/domain/project/ModelIdentity.d.ts +58 -0
- package/dist/domain/project/ModelIdentity.js +94 -0
- package/dist/domain/project/ModelIdentity.js.map +1 -0
- package/dist/domain/project/Project.d.ts +17 -0
- package/dist/domain/project/Project.js +21 -0
- package/dist/domain/project/Project.js.map +1 -0
- package/dist/domain/project/ProjectId.d.ts +28 -0
- package/dist/domain/project/ProjectId.js +58 -0
- package/dist/domain/project/ProjectId.js.map +1 -0
- package/dist/domain/project/ProjectLocator.d.ts +112 -0
- package/dist/domain/project/ProjectLocator.js +178 -0
- package/dist/domain/project/ProjectLocator.js.map +1 -0
- package/dist/domain/research/Citation.d.ts +27 -0
- package/dist/domain/research/Citation.js +43 -0
- package/dist/domain/research/Citation.js.map +1 -0
- package/dist/domain/research/EvidenceLedger.d.ts +47 -0
- package/dist/domain/research/EvidenceLedger.js +111 -0
- package/dist/domain/research/EvidenceLedger.js.map +1 -0
- package/dist/domain/research/ResearchTrace.d.ts +19 -0
- package/dist/domain/research/ResearchTrace.js +22 -0
- package/dist/domain/research/ResearchTrace.js.map +1 -0
- package/dist/domain/retrieval/Hit.d.ts +19 -0
- package/dist/domain/retrieval/Hit.js +28 -0
- package/dist/domain/retrieval/Hit.js.map +1 -0
- package/dist/domain/retrieval/HitList.d.ts +35 -0
- package/dist/domain/retrieval/HitList.js +81 -0
- package/dist/domain/retrieval/HitList.js.map +1 -0
- package/dist/domain/retrieval/MissingIndexError.d.ts +11 -0
- package/dist/domain/retrieval/MissingIndexError.js +15 -0
- package/dist/domain/retrieval/MissingIndexError.js.map +1 -0
- package/dist/index.d.ts +43 -45
- package/dist/index.js +30 -567
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/ai/AiSdkChatModel.d.ts +31 -0
- package/dist/infrastructure/ai/AiSdkChatModel.js +137 -0
- package/dist/infrastructure/ai/AiSdkChatModel.js.map +1 -0
- package/dist/infrastructure/ai/AiSdkEmbedder.d.ts +28 -0
- package/dist/infrastructure/ai/AiSdkEmbedder.js +79 -0
- package/dist/infrastructure/ai/AiSdkEmbedder.js.map +1 -0
- package/dist/infrastructure/ai/DockerModelRunnerProbe.d.ts +16 -0
- package/dist/infrastructure/ai/DockerModelRunnerProbe.js +52 -0
- package/dist/infrastructure/ai/DockerModelRunnerProbe.js.map +1 -0
- package/dist/infrastructure/ai/EmbeddingPrefixes.d.ts +21 -0
- package/dist/infrastructure/ai/EmbeddingPrefixes.js +40 -0
- package/dist/infrastructure/ai/EmbeddingPrefixes.js.map +1 -0
- package/dist/infrastructure/ai/LmStudioProbe.d.ts +18 -0
- package/dist/infrastructure/ai/LmStudioProbe.js +49 -0
- package/dist/infrastructure/ai/LmStudioProbe.js.map +1 -0
- package/dist/infrastructure/ai/LocalModelReloader.d.ts +21 -0
- package/dist/infrastructure/ai/LocalModelReloader.js +61 -0
- package/dist/infrastructure/ai/LocalModelReloader.js.map +1 -0
- package/dist/infrastructure/ai/LocalRuntimeDetector.d.ts +36 -0
- package/dist/infrastructure/ai/LocalRuntimeDetector.js +63 -0
- package/dist/infrastructure/ai/LocalRuntimeDetector.js.map +1 -0
- package/dist/infrastructure/ai/ModelRuntime.d.ts +32 -0
- package/dist/infrastructure/ai/ModelRuntime.js +2 -0
- package/dist/infrastructure/ai/ModelRuntime.js.map +1 -0
- package/dist/infrastructure/ai/OllamaProbe.d.ts +22 -0
- package/dist/infrastructure/ai/OllamaProbe.js +71 -0
- package/dist/infrastructure/ai/OllamaProbe.js.map +1 -0
- package/dist/infrastructure/ai/ProviderFailure.d.ts +16 -0
- package/dist/infrastructure/ai/ProviderFailure.js +35 -0
- package/dist/infrastructure/ai/ProviderFailure.js.map +1 -0
- package/dist/infrastructure/ai/ProviderModuleLoader.d.ts +14 -0
- package/dist/infrastructure/ai/ProviderModuleLoader.js +56 -0
- package/dist/infrastructure/ai/ProviderModuleLoader.js.map +1 -0
- package/dist/infrastructure/ai/ProviderRegistry.d.ts +38 -0
- package/dist/infrastructure/ai/ProviderRegistry.js +63 -0
- package/dist/infrastructure/ai/ProviderRegistry.js.map +1 -0
- package/dist/infrastructure/fs/ConfigLoader.d.ts +59 -0
- package/dist/infrastructure/fs/ConfigLoader.js +194 -0
- package/dist/infrastructure/fs/ConfigLoader.js.map +1 -0
- package/dist/infrastructure/fs/DatabaseLocks.d.ts +52 -0
- package/dist/infrastructure/fs/DatabaseLocks.js +92 -0
- package/dist/infrastructure/fs/DatabaseLocks.js.map +1 -0
- package/dist/infrastructure/fs/DiskUsage.d.ts +6 -0
- package/dist/infrastructure/fs/DiskUsage.js +41 -0
- package/dist/infrastructure/fs/DiskUsage.js.map +1 -0
- package/dist/infrastructure/fs/IndexableFileRules.d.ts +33 -0
- package/dist/infrastructure/fs/IndexableFileRules.js +177 -0
- package/dist/infrastructure/fs/IndexableFileRules.js.map +1 -0
- package/dist/infrastructure/fs/Loggers.d.ts +14 -0
- package/dist/infrastructure/fs/Loggers.js +18 -0
- package/dist/infrastructure/fs/Loggers.js.map +1 -0
- package/dist/infrastructure/fs/PidFileLock.d.ts +40 -0
- package/dist/infrastructure/fs/PidFileLock.js +97 -0
- package/dist/infrastructure/fs/PidFileLock.js.map +1 -0
- package/dist/infrastructure/fs/ProjectIndexes.d.ts +8 -0
- package/dist/infrastructure/fs/ProjectIndexes.js +35 -0
- package/dist/infrastructure/fs/ProjectIndexes.js.map +1 -0
- package/dist/infrastructure/fs/ProjectMetadataStore.d.ts +42 -0
- package/dist/infrastructure/fs/ProjectMetadataStore.js +86 -0
- package/dist/infrastructure/fs/ProjectMetadataStore.js.map +1 -0
- package/dist/infrastructure/fs/ProjectRegistry.d.ts +25 -0
- package/dist/infrastructure/fs/ProjectRegistry.js +83 -0
- package/dist/infrastructure/fs/ProjectRegistry.js.map +1 -0
- package/dist/infrastructure/fs/StateDirectory.d.ts +28 -0
- package/dist/infrastructure/fs/StateDirectory.js +71 -0
- package/dist/infrastructure/fs/StateDirectory.js.map +1 -0
- package/dist/infrastructure/fs/Workspace.d.ts +25 -0
- package/dist/infrastructure/fs/Workspace.js +90 -0
- package/dist/infrastructure/fs/Workspace.js.map +1 -0
- package/dist/infrastructure/git/GitClient.d.ts +34 -0
- package/dist/infrastructure/git/GitClient.js +74 -0
- package/dist/infrastructure/git/GitClient.js.map +1 -0
- package/dist/infrastructure/lancedb/ChunkRepository.d.ts +38 -0
- package/dist/infrastructure/lancedb/ChunkRepository.js +166 -0
- package/dist/infrastructure/lancedb/ChunkRepository.js.map +1 -0
- package/dist/infrastructure/lancedb/DatabaseImporter.d.ts +22 -0
- package/dist/infrastructure/lancedb/DatabaseImporter.js +74 -0
- package/dist/infrastructure/lancedb/DatabaseImporter.js.map +1 -0
- package/dist/infrastructure/lancedb/FileManifestRepository.d.ts +34 -0
- package/dist/infrastructure/lancedb/FileManifestRepository.js +137 -0
- package/dist/infrastructure/lancedb/FileManifestRepository.js.map +1 -0
- package/dist/infrastructure/lancedb/IndexMaintenance.d.ts +53 -0
- package/dist/infrastructure/lancedb/IndexMaintenance.js +227 -0
- package/dist/infrastructure/lancedb/IndexMaintenance.js.map +1 -0
- package/dist/infrastructure/lancedb/LanceTables.d.ts +67 -0
- package/dist/infrastructure/lancedb/LanceTables.js +159 -0
- package/dist/infrastructure/lancedb/LanceTables.js.map +1 -0
- package/dist/{lib/native-tuning.js → infrastructure/lancedb/NativeTuning.js} +1 -1
- package/dist/infrastructure/lancedb/NativeTuning.js.map +1 -0
- package/dist/infrastructure/lancedb/RowReplication.d.ts +27 -0
- package/dist/infrastructure/lancedb/RowReplication.js +82 -0
- package/dist/infrastructure/lancedb/RowReplication.js.map +1 -0
- package/dist/infrastructure/lancedb/VectorIndexPolicy.d.ts +60 -0
- package/dist/infrastructure/lancedb/VectorIndexPolicy.js +72 -0
- package/dist/infrastructure/lancedb/VectorIndexPolicy.js.map +1 -0
- package/dist/infrastructure/p2p/IndexShare.d.ts +45 -0
- package/dist/infrastructure/p2p/IndexShare.js +160 -0
- package/dist/infrastructure/p2p/IndexShare.js.map +1 -0
- package/dist/infrastructure/p2p/PeerSwarm.d.ts +16 -0
- package/dist/infrastructure/p2p/PeerSwarm.js +41 -0
- package/dist/infrastructure/p2p/PeerSwarm.js.map +1 -0
- package/dist/infrastructure/p2p/SecureChannel.d.ts +60 -0
- package/dist/infrastructure/p2p/SecureChannel.js +71 -0
- package/dist/infrastructure/p2p/SecureChannel.js.map +1 -0
- package/dist/infrastructure/p2p/ShareCode.d.ts +25 -0
- package/dist/infrastructure/p2p/ShareCode.js +304 -0
- package/dist/infrastructure/p2p/ShareCode.js.map +1 -0
- package/dist/infrastructure/process/ProcessRegistry.d.ts +50 -0
- package/dist/infrastructure/process/ProcessRegistry.js +109 -0
- package/dist/infrastructure/process/ProcessRegistry.js.map +1 -0
- package/dist/infrastructure/treesitter/ChunkContextBuilder.d.ts +45 -0
- package/dist/infrastructure/treesitter/ChunkContextBuilder.js +159 -0
- package/dist/infrastructure/treesitter/ChunkContextBuilder.js.map +1 -0
- package/dist/infrastructure/treesitter/EmbeddedTreeSitterAssets.d.ts +8 -0
- package/dist/infrastructure/treesitter/EmbeddedTreeSitterAssets.js +12 -0
- package/dist/infrastructure/treesitter/EmbeddedTreeSitterAssets.js.map +1 -0
- package/dist/infrastructure/treesitter/LanguageCatalog.d.ts +30 -0
- package/dist/{lib/chunker/languages.js → infrastructure/treesitter/LanguageCatalog.js} +38 -29
- package/dist/infrastructure/treesitter/LanguageCatalog.js.map +1 -0
- package/dist/infrastructure/treesitter/SlidingWindowChunker.d.ts +15 -0
- package/dist/infrastructure/treesitter/SlidingWindowChunker.js +42 -0
- package/dist/infrastructure/treesitter/SlidingWindowChunker.js.map +1 -0
- package/dist/infrastructure/treesitter/TreeSitterChunker.d.ts +42 -0
- package/dist/infrastructure/treesitter/TreeSitterChunker.js +165 -0
- package/dist/infrastructure/treesitter/TreeSitterChunker.js.map +1 -0
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.js +14 -72
- package/dist/mcp.js.map +1 -1
- package/dist/presentation/cli/Cli.d.ts +31 -0
- package/dist/presentation/cli/Cli.js +120 -0
- package/dist/presentation/cli/Cli.js.map +1 -0
- package/dist/presentation/cli/CliOptions.d.ts +18 -0
- package/dist/presentation/cli/CliOptions.js +25 -0
- package/dist/presentation/cli/CliOptions.js.map +1 -0
- package/dist/presentation/cli/CommandContext.d.ts +50 -0
- package/dist/presentation/cli/CommandContext.js +88 -0
- package/dist/presentation/cli/CommandContext.js.map +1 -0
- package/dist/presentation/cli/ConfigTemplate.d.ts +31 -0
- package/dist/presentation/cli/ConfigTemplate.js +83 -0
- package/dist/presentation/cli/ConfigTemplate.js.map +1 -0
- package/dist/presentation/cli/Renderer.d.ts +90 -0
- package/dist/presentation/cli/Renderer.js +290 -0
- package/dist/presentation/cli/Renderer.js.map +1 -0
- package/dist/presentation/cli/commands/AskCommand.d.ts +14 -0
- package/dist/presentation/cli/commands/AskCommand.js +48 -0
- package/dist/presentation/cli/commands/AskCommand.js.map +1 -0
- package/dist/presentation/cli/commands/CompletionsCommand.d.ts +18 -0
- package/dist/presentation/cli/commands/CompletionsCommand.js +96 -0
- package/dist/presentation/cli/commands/CompletionsCommand.js.map +1 -0
- package/dist/presentation/cli/commands/ConfigCommands.d.ts +56 -0
- package/dist/presentation/cli/commands/ConfigCommands.js +220 -0
- package/dist/presentation/cli/commands/ConfigCommands.js.map +1 -0
- package/dist/presentation/cli/commands/IndexCommand.d.ts +18 -0
- package/dist/presentation/cli/commands/IndexCommand.js +54 -0
- package/dist/presentation/cli/commands/IndexCommand.js.map +1 -0
- package/dist/presentation/cli/commands/ProjectsCommand.d.ts +48 -0
- package/dist/presentation/cli/commands/ProjectsCommand.js +240 -0
- package/dist/presentation/cli/commands/ProjectsCommand.js.map +1 -0
- package/dist/presentation/cli/commands/SearchCommand.d.ts +19 -0
- package/dist/presentation/cli/commands/SearchCommand.js +55 -0
- package/dist/presentation/cli/commands/SearchCommand.js.map +1 -0
- package/dist/presentation/cli/commands/ServerCommands.d.ts +13 -0
- package/dist/presentation/cli/commands/ServerCommands.js +40 -0
- package/dist/presentation/cli/commands/ServerCommands.js.map +1 -0
- package/dist/presentation/cli/commands/ShareCommands.d.ts +22 -0
- package/dist/presentation/cli/commands/ShareCommands.js +134 -0
- package/dist/presentation/cli/commands/ShareCommands.js.map +1 -0
- package/dist/presentation/cli/commands/StatusCommand.d.ts +15 -0
- package/dist/presentation/cli/commands/StatusCommand.js +53 -0
- package/dist/presentation/cli/commands/StatusCommand.js.map +1 -0
- package/dist/presentation/mcp/HitFormatter.d.ts +17 -0
- package/dist/presentation/mcp/HitFormatter.js +42 -0
- package/dist/presentation/mcp/HitFormatter.js.map +1 -0
- package/dist/presentation/mcp/IndexWatchController.d.ts +17 -0
- package/dist/presentation/mcp/IndexWatchController.js +31 -0
- package/dist/presentation/mcp/IndexWatchController.js.map +1 -0
- package/dist/presentation/mcp/LmgrepCore.d.ts +66 -0
- package/dist/presentation/mcp/LmgrepCore.js +178 -0
- package/dist/presentation/mcp/LmgrepCore.js.map +1 -0
- package/dist/presentation/mcp/McpServer.d.ts +18 -0
- package/dist/presentation/mcp/McpServer.js +63 -0
- package/dist/presentation/mcp/McpServer.js.map +1 -0
- package/dist/presentation/mcp/ToolDescriptions.d.ts +40 -0
- package/dist/presentation/mcp/ToolDescriptions.js +85 -0
- package/dist/presentation/mcp/ToolDescriptions.js.map +1 -0
- package/package.json +93 -89
- package/dist/lib/build.d.ts +0 -21
- package/dist/lib/build.js +0 -374
- package/dist/lib/build.js.map +0 -1
- package/dist/lib/chunker/context.d.ts +0 -21
- package/dist/lib/chunker/context.js +0 -131
- package/dist/lib/chunker/context.js.map +0 -1
- package/dist/lib/chunker/index.d.ts +0 -7
- package/dist/lib/chunker/index.js +0 -209
- package/dist/lib/chunker/index.js.map +0 -1
- package/dist/lib/chunker/languages.d.ts +0 -15
- package/dist/lib/chunker/languages.js.map +0 -1
- package/dist/lib/config.d.ts +0 -12
- package/dist/lib/config.js +0 -83
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/embedder.d.ts +0 -65
- package/dist/lib/embedder.js +0 -236
- package/dist/lib/embedder.js.map +0 -1
- package/dist/lib/facet-session.d.ts +0 -44
- package/dist/lib/facet-session.js +0 -125
- package/dist/lib/facet-session.js.map +0 -1
- package/dist/lib/native-tuning.js.map +0 -1
- package/dist/lib/p2p.d.ts +0 -32
- package/dist/lib/p2p.js +0 -281
- package/dist/lib/p2p.js.map +0 -1
- package/dist/lib/providers.d.ts +0 -1
- package/dist/lib/providers.js +0 -41
- package/dist/lib/providers.js.map +0 -1
- package/dist/lib/repair.d.ts +0 -10
- package/dist/lib/repair.js +0 -57
- package/dist/lib/repair.js.map +0 -1
- package/dist/lib/scanner.d.ts +0 -34
- package/dist/lib/scanner.js +0 -242
- package/dist/lib/scanner.js.map +0 -1
- package/dist/lib/search-tool.d.ts +0 -55
- package/dist/lib/search-tool.js +0 -319
- package/dist/lib/search-tool.js.map +0 -1
- package/dist/lib/serve.d.ts +0 -11
- package/dist/lib/serve.js +0 -144
- package/dist/lib/serve.js.map +0 -1
- package/dist/lib/store.d.ts +0 -252
- package/dist/lib/store.js +0 -1216
- package/dist/lib/store.js.map +0 -1
- package/dist/lib/types.d.ts +0 -194
- package/dist/lib/types.js +0 -13
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/vocab.d.ts +0 -20
- package/dist/lib/vocab.js +0 -275
- package/dist/lib/vocab.js.map +0 -1
- /package/dist/{lib/native-tuning.d.ts → infrastructure/lancedb/NativeTuning.d.ts} +0 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds the context header prepended to a chunk before embedding.
|
|
3
|
+
*
|
|
4
|
+
* The header is what makes an isolated function retrievable: on its own,
|
|
5
|
+
* `async function handle(req)` shares little vocabulary with "how are webhooks
|
|
6
|
+
* authenticated", but stamped with its file, enclosing class and doc comment
|
|
7
|
+
* it does. Retrieval quality depends on this at least as much as on the text.
|
|
8
|
+
*/
|
|
9
|
+
export class ChunkContextBuilder {
|
|
10
|
+
/** How far above a node to look for its doc comment. */
|
|
11
|
+
static MAX_COMMENT_LOOKBACK = 10;
|
|
12
|
+
/** AST node type -> the word used for it in the header. */
|
|
13
|
+
static SCOPE_KINDS = {
|
|
14
|
+
// TypeScript / JavaScript
|
|
15
|
+
class_declaration: "class",
|
|
16
|
+
class_body: "class",
|
|
17
|
+
interface_declaration: "interface",
|
|
18
|
+
module: "module",
|
|
19
|
+
namespace_declaration: "namespace",
|
|
20
|
+
// Python
|
|
21
|
+
class_definition: "class",
|
|
22
|
+
// Rust
|
|
23
|
+
impl_item: "impl",
|
|
24
|
+
trait_item: "trait",
|
|
25
|
+
mod_item: "mod",
|
|
26
|
+
// Go
|
|
27
|
+
type_declaration: "type",
|
|
28
|
+
// Ruby
|
|
29
|
+
class: "class",
|
|
30
|
+
// C / C++
|
|
31
|
+
struct_specifier: "struct",
|
|
32
|
+
class_specifier: "class",
|
|
33
|
+
namespace_definition: "namespace",
|
|
34
|
+
// Swift
|
|
35
|
+
struct_declaration: "struct",
|
|
36
|
+
extension_declaration: "extension",
|
|
37
|
+
// Scala
|
|
38
|
+
object_definition: "object",
|
|
39
|
+
trait_definition: "trait",
|
|
40
|
+
// Generic
|
|
41
|
+
ContainerDecl: "container",
|
|
42
|
+
};
|
|
43
|
+
/** Node types that declare a shape rather than behaviour. */
|
|
44
|
+
static DEFINITION_TYPES = new Set([
|
|
45
|
+
"class_declaration",
|
|
46
|
+
"class_definition",
|
|
47
|
+
"interface_declaration",
|
|
48
|
+
"type_alias_declaration",
|
|
49
|
+
"enum_declaration",
|
|
50
|
+
"struct_item",
|
|
51
|
+
"enum_item",
|
|
52
|
+
"trait_item",
|
|
53
|
+
"type_item",
|
|
54
|
+
"type_declaration",
|
|
55
|
+
"struct_specifier",
|
|
56
|
+
"class_specifier",
|
|
57
|
+
"enum_specifier",
|
|
58
|
+
"type_definition",
|
|
59
|
+
"struct_declaration",
|
|
60
|
+
"protocol_declaration",
|
|
61
|
+
"trait_definition",
|
|
62
|
+
"ContainerDecl",
|
|
63
|
+
]);
|
|
64
|
+
/** Node types that wire things together rather than implement them. */
|
|
65
|
+
static ORCHESTRATION_TYPES = new Set([
|
|
66
|
+
"export_statement",
|
|
67
|
+
"decorated_definition",
|
|
68
|
+
]);
|
|
69
|
+
/** The full header for one chunk. */
|
|
70
|
+
build(node, filePath, source, language) {
|
|
71
|
+
const lines = [
|
|
72
|
+
`[file: ${filePath}]`,
|
|
73
|
+
`[role: ${this.classifyRole(node)}]`,
|
|
74
|
+
];
|
|
75
|
+
const scope = this.extractScope(node, language);
|
|
76
|
+
if (scope.length > 0) {
|
|
77
|
+
lines.push(`[scope: ${scope.map((s) => `${s.kind} ${s.name}`).join(" > ")}]`);
|
|
78
|
+
}
|
|
79
|
+
const comment = this.extractLeadingComment(node, source);
|
|
80
|
+
if (comment)
|
|
81
|
+
lines.push(`[doc: ${comment}]`);
|
|
82
|
+
return lines.join("\n");
|
|
83
|
+
}
|
|
84
|
+
/** The minimal header for a file with no parsed structure. */
|
|
85
|
+
buildFileOnly(filePath) {
|
|
86
|
+
return `[file: ${filePath}]`;
|
|
87
|
+
}
|
|
88
|
+
/** Walk up from a node collecting the named scopes that enclose it. */
|
|
89
|
+
extractScope(node, language) {
|
|
90
|
+
const scopes = [];
|
|
91
|
+
let current = node.parent;
|
|
92
|
+
while (current) {
|
|
93
|
+
if (language.scopeTypes.includes(current.type)) {
|
|
94
|
+
const name = this.nodeName(current);
|
|
95
|
+
if (name) {
|
|
96
|
+
scopes.unshift({
|
|
97
|
+
kind: ChunkContextBuilder.SCOPE_KINDS[current.type] ?? current.type,
|
|
98
|
+
name,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
current = current.parent;
|
|
103
|
+
}
|
|
104
|
+
return scopes;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Collect the comment block or decorators immediately above a node.
|
|
108
|
+
*
|
|
109
|
+
* A blank line ends the block only once something has been collected, so a
|
|
110
|
+
* comment separated from its node by whitespace is still picked up, while
|
|
111
|
+
* unrelated code above it is not.
|
|
112
|
+
*/
|
|
113
|
+
extractLeadingComment(node, source) {
|
|
114
|
+
const lines = source.split("\n");
|
|
115
|
+
const start = node.startPosition.row;
|
|
116
|
+
const collected = [];
|
|
117
|
+
for (let i = start - 1; i >= 0 && i >= start - ChunkContextBuilder.MAX_COMMENT_LOOKBACK; i--) {
|
|
118
|
+
const line = lines[i].trim();
|
|
119
|
+
if (this.looksLikeCommentOrDecorator(line)) {
|
|
120
|
+
collected.unshift(lines[i]);
|
|
121
|
+
}
|
|
122
|
+
else if (line === "") {
|
|
123
|
+
if (collected.length > 0)
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return collected.length === 0 ? null : collected.join("\n").trim();
|
|
131
|
+
}
|
|
132
|
+
classifyRole(node) {
|
|
133
|
+
if (ChunkContextBuilder.DEFINITION_TYPES.has(node.type)) {
|
|
134
|
+
return "definition";
|
|
135
|
+
}
|
|
136
|
+
if (ChunkContextBuilder.ORCHESTRATION_TYPES.has(node.type)) {
|
|
137
|
+
return "orchestration";
|
|
138
|
+
}
|
|
139
|
+
return "implementation";
|
|
140
|
+
}
|
|
141
|
+
/** Comment syntax across every supported language, plus decorators. */
|
|
142
|
+
looksLikeCommentOrDecorator(line) {
|
|
143
|
+
return (line.startsWith("//") ||
|
|
144
|
+
line.startsWith("#") ||
|
|
145
|
+
line.startsWith("*") ||
|
|
146
|
+
line.startsWith("/*") ||
|
|
147
|
+
line.startsWith("*/") ||
|
|
148
|
+
line.startsWith("///") ||
|
|
149
|
+
line.startsWith("--") ||
|
|
150
|
+
line.startsWith("@") ||
|
|
151
|
+
line.startsWith('"""') ||
|
|
152
|
+
line.startsWith("'''"));
|
|
153
|
+
}
|
|
154
|
+
nodeName(node) {
|
|
155
|
+
return (node.childForFieldName("name") ??
|
|
156
|
+
node.children.find((c) => c.type === "identifier" || c.type === "type_identifier"))?.text;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=ChunkContextBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChunkContextBuilder.js","sourceRoot":"","sources":["../../../src/infrastructure/treesitter/ChunkContextBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface EmbeddedTreeSitterAssets {
|
|
2
|
+
parser: string;
|
|
3
|
+
grammars: Readonly<Record<string, string>>;
|
|
4
|
+
}
|
|
5
|
+
/** Registers paths embedded by the standalone Bun entry point. */
|
|
6
|
+
export declare function registerEmbeddedTreeSitterAssets(assets: EmbeddedTreeSitterAssets): void;
|
|
7
|
+
export declare function embeddedParserPath(): string | undefined;
|
|
8
|
+
export declare function embeddedGrammarPath(wasmFile: string): string | undefined;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
let embedded;
|
|
2
|
+
/** Registers paths embedded by the standalone Bun entry point. */
|
|
3
|
+
export function registerEmbeddedTreeSitterAssets(assets) {
|
|
4
|
+
embedded = assets;
|
|
5
|
+
}
|
|
6
|
+
export function embeddedParserPath() {
|
|
7
|
+
return embedded?.parser;
|
|
8
|
+
}
|
|
9
|
+
export function embeddedGrammarPath(wasmFile) {
|
|
10
|
+
return embedded?.grammars[wasmFile];
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=EmbeddedTreeSitterAssets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbeddedTreeSitterAssets.js","sourceRoot":"","sources":["../../../src/infrastructure/treesitter/EmbeddedTreeSitterAssets.ts"],"names":[],"mappings":"AAKA,IAAI,QAA8C,CAAC;AAEnD,kEAAkE;AAClE,MAAM,UAAU,gCAAgC,CAC/C,MAAgC;IAEhC,QAAQ,GAAG,MAAM,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB;IACjC,OAAO,QAAQ,EAAE,MAAM,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IACnD,OAAO,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type LanguageId = "javascript" | "typescript" | "tsx" | "python" | "rust" | "go" | "ruby" | "c" | "cpp" | "swift" | "json" | "yaml" | "toml" | "lua" | "scala" | "zig" | "bash" | "html" | "css" | "java" | "kotlin" | "php" | "c_sharp" | "vue" | "markdown" | "nix";
|
|
2
|
+
export interface LanguageConfig {
|
|
3
|
+
id: LanguageId;
|
|
4
|
+
extensions: string[];
|
|
5
|
+
wasmFile: string;
|
|
6
|
+
/** AST node types that represent top-level or nestable definitions */
|
|
7
|
+
chunkTypes: string[];
|
|
8
|
+
/** AST node types that represent import/require statements */
|
|
9
|
+
importTypes: string[];
|
|
10
|
+
/** AST node types that represent class/struct/module wrappers */
|
|
11
|
+
scopeTypes: string[];
|
|
12
|
+
}
|
|
13
|
+
export declare const LANGUAGES: LanguageConfig[];
|
|
14
|
+
/**
|
|
15
|
+
* The grammar table and the lookups over it.
|
|
16
|
+
*
|
|
17
|
+
* Grammars ship as separate `@lumis-sh/wasm-<slug>` packages built for the
|
|
18
|
+
* current web-tree-sitter ABI, so resolution is a runtime `require.resolve`
|
|
19
|
+
* that may legitimately fail — a missing grammar means "chunk this file by
|
|
20
|
+
* sliding window", not an error.
|
|
21
|
+
*/
|
|
22
|
+
export declare class LanguageCatalog {
|
|
23
|
+
private readonly languages;
|
|
24
|
+
private readonly byExtension;
|
|
25
|
+
constructor(languages?: readonly LanguageConfig[]);
|
|
26
|
+
/** Grammar for a path's extension, or undefined when none is known. */
|
|
27
|
+
forFile(filePath: string): LanguageConfig | undefined;
|
|
28
|
+
/** Absolute path to a grammar's wasm, or undefined when not installed. */
|
|
29
|
+
wasmPathFor(lang: LanguageConfig): string | undefined;
|
|
30
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
|
+
import { embeddedGrammarPath } from "./EmbeddedTreeSitterAssets.js";
|
|
2
3
|
const require = createRequire(import.meta.url);
|
|
3
4
|
export const LANGUAGES = [
|
|
4
5
|
{
|
|
@@ -141,11 +142,7 @@ export const LANGUAGES = [
|
|
|
141
142
|
"enum_specifier",
|
|
142
143
|
],
|
|
143
144
|
importTypes: ["preproc_include", "using_declaration"],
|
|
144
|
-
scopeTypes: [
|
|
145
|
-
"class_specifier",
|
|
146
|
-
"struct_specifier",
|
|
147
|
-
"namespace_definition",
|
|
148
|
-
],
|
|
145
|
+
scopeTypes: ["class_specifier", "struct_specifier", "namespace_definition"],
|
|
149
146
|
},
|
|
150
147
|
{
|
|
151
148
|
id: "swift",
|
|
@@ -207,11 +204,7 @@ export const LANGUAGES = [
|
|
|
207
204
|
"trait_definition",
|
|
208
205
|
],
|
|
209
206
|
importTypes: ["import_declaration"],
|
|
210
|
-
scopeTypes: [
|
|
211
|
-
"class_definition",
|
|
212
|
-
"object_definition",
|
|
213
|
-
"trait_definition",
|
|
214
|
-
],
|
|
207
|
+
scopeTypes: ["class_definition", "object_definition", "trait_definition"],
|
|
215
208
|
},
|
|
216
209
|
{
|
|
217
210
|
id: "zig",
|
|
@@ -346,26 +339,42 @@ export const LANGUAGES = [
|
|
|
346
339
|
scopeTypes: ["attrset_expression", "binding_set"],
|
|
347
340
|
},
|
|
348
341
|
];
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
342
|
+
/**
|
|
343
|
+
* The grammar table and the lookups over it.
|
|
344
|
+
*
|
|
345
|
+
* Grammars ship as separate `@lumis-sh/wasm-<slug>` packages built for the
|
|
346
|
+
* current web-tree-sitter ABI, so resolution is a runtime `require.resolve`
|
|
347
|
+
* that may legitimately fail — a missing grammar means "chunk this file by
|
|
348
|
+
* sliding window", not an error.
|
|
349
|
+
*/
|
|
350
|
+
export class LanguageCatalog {
|
|
351
|
+
languages;
|
|
352
|
+
byExtension = new Map();
|
|
353
|
+
constructor(languages = LANGUAGES) {
|
|
354
|
+
this.languages = languages;
|
|
355
|
+
for (const lang of this.languages) {
|
|
356
|
+
for (const ext of lang.extensions)
|
|
357
|
+
this.byExtension.set(ext, lang);
|
|
358
|
+
}
|
|
353
359
|
}
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
return extToLang.get(ext);
|
|
358
|
-
}
|
|
359
|
-
export function getWasmPath(lang) {
|
|
360
|
-
// Grammars ship as per-language @lumis-sh/wasm-<slug> packages built for the
|
|
361
|
-
// current web-tree-sitter ABI. The wasm is named tree-sitter-<slug>.wasm and
|
|
362
|
-
// the slug is wasmFile minus the "tree-sitter-" prefix and ".wasm" suffix.
|
|
363
|
-
const slug = lang.wasmFile.replace(/^tree-sitter-/, "").replace(/\.wasm$/, "");
|
|
364
|
-
try {
|
|
365
|
-
return require.resolve(`@lumis-sh/wasm-${slug}/${lang.wasmFile}`);
|
|
360
|
+
/** Grammar for a path's extension, or undefined when none is known. */
|
|
361
|
+
forFile(filePath) {
|
|
362
|
+
return this.byExtension.get(filePath.slice(filePath.lastIndexOf(".")));
|
|
366
363
|
}
|
|
367
|
-
|
|
368
|
-
|
|
364
|
+
/** Absolute path to a grammar's wasm, or undefined when not installed. */
|
|
365
|
+
wasmPathFor(lang) {
|
|
366
|
+
const bundled = embeddedGrammarPath(lang.wasmFile);
|
|
367
|
+
if (bundled)
|
|
368
|
+
return bundled;
|
|
369
|
+
const slug = lang.wasmFile
|
|
370
|
+
.replace(/^tree-sitter-/, "")
|
|
371
|
+
.replace(/\.wasm$/, "");
|
|
372
|
+
try {
|
|
373
|
+
return require.resolve(`@lumis-sh/wasm-${slug}/${lang.wasmFile}`);
|
|
374
|
+
}
|
|
375
|
+
catch {
|
|
376
|
+
return undefined;
|
|
377
|
+
}
|
|
369
378
|
}
|
|
370
379
|
}
|
|
371
|
-
//# sourceMappingURL=
|
|
380
|
+
//# sourceMappingURL=LanguageCatalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LanguageCatalog.js","sourceRoot":"","sources":["../../../src/infrastructure/treesitter/LanguageCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Chunk } from "../../domain/corpus/Chunk.js";
|
|
2
|
+
import type { ChunkerPort } from "../../domain/ports/ChunkerPort.js";
|
|
3
|
+
/**
|
|
4
|
+
* Fixed-size windows over a file, for sources with no grammar or no chunkable
|
|
5
|
+
* structure (a linear shell script, say).
|
|
6
|
+
*
|
|
7
|
+
* Windows overlap slightly so a passage straddling a boundary is still
|
|
8
|
+
* retrievable. The overlap is kept small because search deduplicates
|
|
9
|
+
* overlapping hits anyway, making a larger one pure index bloat.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SlidingWindowChunker implements ChunkerPort {
|
|
12
|
+
private static readonly WINDOW_LINES;
|
|
13
|
+
private static readonly STRIDE_LINES;
|
|
14
|
+
chunk(filePath: string, cwd: string): Promise<Chunk[]>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { Chunk } from "../../domain/corpus/Chunk.js";
|
|
4
|
+
import { CodeLocation } from "../../domain/corpus/CodeLocation.js";
|
|
5
|
+
import { ContentHash } from "../../domain/corpus/ContentHash.js";
|
|
6
|
+
/**
|
|
7
|
+
* Fixed-size windows over a file, for sources with no grammar or no chunkable
|
|
8
|
+
* structure (a linear shell script, say).
|
|
9
|
+
*
|
|
10
|
+
* Windows overlap slightly so a passage straddling a boundary is still
|
|
11
|
+
* retrievable. The overlap is kept small because search deduplicates
|
|
12
|
+
* overlapping hits anyway, making a larger one pure index bloat.
|
|
13
|
+
*/
|
|
14
|
+
export class SlidingWindowChunker {
|
|
15
|
+
static WINDOW_LINES = 50;
|
|
16
|
+
static STRIDE_LINES = 40;
|
|
17
|
+
async chunk(filePath, cwd) {
|
|
18
|
+
const source = readFileSync(join(cwd, filePath), "utf-8");
|
|
19
|
+
const lines = source.split("\n");
|
|
20
|
+
if (lines.length === 0)
|
|
21
|
+
return [];
|
|
22
|
+
const chunks = [];
|
|
23
|
+
for (let i = 0; i < lines.length; i += SlidingWindowChunker.STRIDE_LINES) {
|
|
24
|
+
const content = lines
|
|
25
|
+
.slice(i, i + SlidingWindowChunker.WINDOW_LINES)
|
|
26
|
+
.join("\n");
|
|
27
|
+
if (content.trim().length === 0)
|
|
28
|
+
continue;
|
|
29
|
+
const endLine = Math.min(i + SlidingWindowChunker.WINDOW_LINES, lines.length);
|
|
30
|
+
chunks.push(new Chunk({
|
|
31
|
+
location: new CodeLocation(filePath, i + 1, endLine),
|
|
32
|
+
type: "block",
|
|
33
|
+
name: `lines_${i + 1}_${endLine}`,
|
|
34
|
+
content,
|
|
35
|
+
context: `[file: ${filePath}]`,
|
|
36
|
+
hash: ContentHash.of(content),
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
return chunks;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=SlidingWindowChunker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlidingWindowChunker.js","sourceRoot":"","sources":["../../../src/infrastructure/treesitter/SlidingWindowChunker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAGjE;;;;;;;GAOG;AACH,MAAM,OAAO,oBAAoB;IACxB,MAAM,CAAU,YAAY,GAAG,EAAE,CAAC;IAClC,MAAM,CAAU,YAAY,GAAG,EAAE,CAAC;IAE1C,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,GAAW;QACxC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAElC,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,oBAAoB,CAAC,YAAY,EAAE,CAAC;YAC1E,MAAM,OAAO,GAAG,KAAK;iBACnB,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC;iBAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAE1C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACvB,CAAC,GAAG,oBAAoB,CAAC,YAAY,EACrC,KAAK,CAAC,MAAM,CACZ,CAAC;YACF,MAAM,CAAC,IAAI,CACV,IAAI,KAAK,CAAC;gBACT,QAAQ,EAAE,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;gBACpD,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE;gBACjC,OAAO;gBACP,OAAO,EAAE,UAAU,QAAQ,GAAG;gBAC9B,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC;aAC7B,CAAC,CACF,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Chunk } from "../../domain/corpus/Chunk.js";
|
|
2
|
+
import type { ChunkerPort } from "../../domain/ports/ChunkerPort.js";
|
|
3
|
+
import { ChunkContextBuilder } from "./ChunkContextBuilder.js";
|
|
4
|
+
import { LanguageCatalog } from "./LanguageCatalog.js";
|
|
5
|
+
import { SlidingWindowChunker } from "./SlidingWindowChunker.js";
|
|
6
|
+
/**
|
|
7
|
+
* Splits source into chunks along AST boundaries.
|
|
8
|
+
*
|
|
9
|
+
* Node-bounded chunks are what make results readable: a hit is a whole
|
|
10
|
+
* function or class, not an arbitrary window through the middle of one. Files
|
|
11
|
+
* with no grammar, or no chunkable structure, fall back to a sliding window.
|
|
12
|
+
*/
|
|
13
|
+
export declare class TreeSitterChunker implements ChunkerPort {
|
|
14
|
+
private readonly catalog;
|
|
15
|
+
private readonly context;
|
|
16
|
+
private readonly fallback;
|
|
17
|
+
/** Chunks larger than this are split by recursing into their children. */
|
|
18
|
+
private static readonly MAX_CHUNK_TOKENS;
|
|
19
|
+
/** A one-line fragment shorter than this is noise, not a unit of code. */
|
|
20
|
+
private static readonly MIN_CHUNK_CHARS;
|
|
21
|
+
private parser;
|
|
22
|
+
private readonly loaded;
|
|
23
|
+
constructor(catalog?: LanguageCatalog, context?: ChunkContextBuilder, fallback?: SlidingWindowChunker);
|
|
24
|
+
chunk(filePath: string, cwd: string): Promise<Chunk[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Markdown needs its own pass: the block grammar nests `section` nodes by
|
|
27
|
+
* heading level, so emitting them whole would collapse a document into one
|
|
28
|
+
* chunk. Splitting at every heading the grammar reports (so a `#` inside a
|
|
29
|
+
* fenced code block is not mistaken for one) gives complete,
|
|
30
|
+
* non-overlapping, heading-granular chunks instead.
|
|
31
|
+
*/
|
|
32
|
+
private chunkMarkdown;
|
|
33
|
+
private collect;
|
|
34
|
+
private hasChunkableDescendants;
|
|
35
|
+
private nodeName;
|
|
36
|
+
private getParser;
|
|
37
|
+
/**
|
|
38
|
+
* Grammars are cached for the process lifetime. They are wasm modules whose
|
|
39
|
+
* linear memory only ever grows, so loading one repeatedly would leak.
|
|
40
|
+
*/
|
|
41
|
+
private loadGrammar;
|
|
42
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { Language, Parser } from "web-tree-sitter";
|
|
4
|
+
import { Chunk } from "../../domain/corpus/Chunk.js";
|
|
5
|
+
import { CodeLocation } from "../../domain/corpus/CodeLocation.js";
|
|
6
|
+
import { ContentHash } from "../../domain/corpus/ContentHash.js";
|
|
7
|
+
import { ChunkContextBuilder } from "./ChunkContextBuilder.js";
|
|
8
|
+
import { embeddedParserPath } from "./EmbeddedTreeSitterAssets.js";
|
|
9
|
+
import { LanguageCatalog } from "./LanguageCatalog.js";
|
|
10
|
+
import { SlidingWindowChunker } from "./SlidingWindowChunker.js";
|
|
11
|
+
/**
|
|
12
|
+
* Splits source into chunks along AST boundaries.
|
|
13
|
+
*
|
|
14
|
+
* Node-bounded chunks are what make results readable: a hit is a whole
|
|
15
|
+
* function or class, not an arbitrary window through the middle of one. Files
|
|
16
|
+
* with no grammar, or no chunkable structure, fall back to a sliding window.
|
|
17
|
+
*/
|
|
18
|
+
export class TreeSitterChunker {
|
|
19
|
+
catalog;
|
|
20
|
+
context;
|
|
21
|
+
fallback;
|
|
22
|
+
/** Chunks larger than this are split by recursing into their children. */
|
|
23
|
+
static MAX_CHUNK_TOKENS = 8192;
|
|
24
|
+
/** A one-line fragment shorter than this is noise, not a unit of code. */
|
|
25
|
+
static MIN_CHUNK_CHARS = 50;
|
|
26
|
+
parser;
|
|
27
|
+
loaded = new Map();
|
|
28
|
+
constructor(catalog = new LanguageCatalog(), context = new ChunkContextBuilder(), fallback = new SlidingWindowChunker()) {
|
|
29
|
+
this.catalog = catalog;
|
|
30
|
+
this.context = context;
|
|
31
|
+
this.fallback = fallback;
|
|
32
|
+
}
|
|
33
|
+
async chunk(filePath, cwd) {
|
|
34
|
+
const language = this.catalog.forFile(filePath);
|
|
35
|
+
if (!language)
|
|
36
|
+
return this.fallback.chunk(filePath, cwd);
|
|
37
|
+
// Parser.init() must run before any Language.load(): it bootstraps the
|
|
38
|
+
// wasm runtime that grammar loading calls into. Reversing these two
|
|
39
|
+
// lines fails with "cannot read loadWebAssemblyModule of undefined".
|
|
40
|
+
const parser = await this.getParser();
|
|
41
|
+
const grammar = await this.loadGrammar(language);
|
|
42
|
+
if (!grammar)
|
|
43
|
+
return this.fallback.chunk(filePath, cwd);
|
|
44
|
+
parser.setLanguage(grammar);
|
|
45
|
+
const source = readFileSync(join(cwd, filePath), "utf-8");
|
|
46
|
+
const tree = parser.parse(source);
|
|
47
|
+
if (!tree)
|
|
48
|
+
return this.fallback.chunk(filePath, cwd);
|
|
49
|
+
const chunks = language.id === "markdown"
|
|
50
|
+
? this.chunkMarkdown(tree.rootNode, filePath, source)
|
|
51
|
+
: this.collect(tree.rootNode, language, filePath, source, []);
|
|
52
|
+
return chunks.length > 0 ? chunks : this.fallback.chunk(filePath, cwd);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Markdown needs its own pass: the block grammar nests `section` nodes by
|
|
56
|
+
* heading level, so emitting them whole would collapse a document into one
|
|
57
|
+
* chunk. Splitting at every heading the grammar reports (so a `#` inside a
|
|
58
|
+
* fenced code block is not mistaken for one) gives complete,
|
|
59
|
+
* non-overlapping, heading-granular chunks instead.
|
|
60
|
+
*/
|
|
61
|
+
chunkMarkdown(root, filePath, source) {
|
|
62
|
+
const lines = source.split("\n");
|
|
63
|
+
const headingRows = [];
|
|
64
|
+
const visit = (node) => {
|
|
65
|
+
if (node.type === "atx_heading" || node.type === "setext_heading") {
|
|
66
|
+
headingRows.push(node.startPosition.row);
|
|
67
|
+
}
|
|
68
|
+
for (const child of node.children)
|
|
69
|
+
visit(child);
|
|
70
|
+
};
|
|
71
|
+
visit(root);
|
|
72
|
+
const starts = [...new Set([0, ...headingRows])].sort((a, b) => a - b);
|
|
73
|
+
const chunks = [];
|
|
74
|
+
for (let i = 0; i < starts.length; i++) {
|
|
75
|
+
const start = starts[i];
|
|
76
|
+
const end = i + 1 < starts.length ? starts[i + 1] : lines.length;
|
|
77
|
+
const content = lines.slice(start, end).join("\n");
|
|
78
|
+
if (content.trim().length === 0)
|
|
79
|
+
continue;
|
|
80
|
+
const heading = (lines[start] ?? "").replace(/^\s*#+\s*/, "").trim();
|
|
81
|
+
chunks.push(new Chunk({
|
|
82
|
+
location: new CodeLocation(filePath, start + 1, end),
|
|
83
|
+
type: "section",
|
|
84
|
+
name: heading.slice(0, 80) || `lines_${start + 1}_${end}`,
|
|
85
|
+
content,
|
|
86
|
+
context: this.context.buildFileOnly(filePath),
|
|
87
|
+
hash: ContentHash.of(content),
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
return chunks;
|
|
91
|
+
}
|
|
92
|
+
collect(node, language, filePath, source, chunks) {
|
|
93
|
+
if (!language.chunkTypes.includes(node.type)) {
|
|
94
|
+
for (const child of node.children) {
|
|
95
|
+
this.collect(child, language, filePath, source, chunks);
|
|
96
|
+
}
|
|
97
|
+
return chunks;
|
|
98
|
+
}
|
|
99
|
+
const content = node.text;
|
|
100
|
+
// Too large to embed whole: descend instead, so a big class becomes its
|
|
101
|
+
// methods rather than being truncated or skipped.
|
|
102
|
+
const estimatedTokens = Math.ceil(content.length / 4);
|
|
103
|
+
if (estimatedTokens > TreeSitterChunker.MAX_CHUNK_TOKENS &&
|
|
104
|
+
this.hasChunkableDescendants(node, language)) {
|
|
105
|
+
for (const child of node.children) {
|
|
106
|
+
this.collect(child, language, filePath, source, chunks);
|
|
107
|
+
}
|
|
108
|
+
return chunks;
|
|
109
|
+
}
|
|
110
|
+
// A short one-liner carries no retrievable meaning on its own.
|
|
111
|
+
if (content.split("\n").length < 2 &&
|
|
112
|
+
content.length < TreeSitterChunker.MIN_CHUNK_CHARS) {
|
|
113
|
+
return chunks;
|
|
114
|
+
}
|
|
115
|
+
chunks.push(new Chunk({
|
|
116
|
+
location: new CodeLocation(filePath, node.startPosition.row + 1, node.endPosition.row + 1),
|
|
117
|
+
type: node.type,
|
|
118
|
+
name: this.nodeName(node) ?? `anonymous_${node.startPosition.row}`,
|
|
119
|
+
content,
|
|
120
|
+
context: this.context.build(node, filePath, source, language),
|
|
121
|
+
hash: ContentHash.of(content),
|
|
122
|
+
}));
|
|
123
|
+
return chunks;
|
|
124
|
+
}
|
|
125
|
+
hasChunkableDescendants(node, language) {
|
|
126
|
+
for (const child of node.children) {
|
|
127
|
+
if (language.chunkTypes.includes(child.type))
|
|
128
|
+
return true;
|
|
129
|
+
if (this.hasChunkableDescendants(child, language))
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
nodeName(node) {
|
|
135
|
+
return (node.childForFieldName("name") ??
|
|
136
|
+
node.children.find((c) => c.type === "identifier" ||
|
|
137
|
+
c.type === "type_identifier" ||
|
|
138
|
+
// nix binds its target via an attrpath (e.g. `outputs = ...`)
|
|
139
|
+
c.type === "attrpath"))?.text;
|
|
140
|
+
}
|
|
141
|
+
async getParser() {
|
|
142
|
+
if (!this.parser) {
|
|
143
|
+
const parserWasm = embeddedParserPath();
|
|
144
|
+
await Parser.init(parserWasm ? { locateFile: () => parserWasm } : undefined);
|
|
145
|
+
this.parser = new Parser();
|
|
146
|
+
}
|
|
147
|
+
return this.parser;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Grammars are cached for the process lifetime. They are wasm modules whose
|
|
151
|
+
* linear memory only ever grows, so loading one repeatedly would leak.
|
|
152
|
+
*/
|
|
153
|
+
async loadGrammar(language) {
|
|
154
|
+
const cached = this.loaded.get(language.id);
|
|
155
|
+
if (cached)
|
|
156
|
+
return cached;
|
|
157
|
+
const wasmPath = this.catalog.wasmPathFor(language);
|
|
158
|
+
if (!wasmPath)
|
|
159
|
+
return undefined;
|
|
160
|
+
const grammar = await Language.load(wasmPath);
|
|
161
|
+
this.loaded.set(language.id, grammar);
|
|
162
|
+
return grammar;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=TreeSitterChunker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeSitterChunker.js","sourceRoot":"","sources":["../../../src/infrastructure/treesitter/TreeSitterChunker.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "./
|
|
2
|
+
import "./infrastructure/lancedb/NativeTuning.js";
|