lmgrep 0.1.18 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +226 -63
- 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 +97 -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/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 +61 -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 +21 -0
- package/dist/infrastructure/ai/OllamaProbe.js +69 -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 +13 -0
- package/dist/infrastructure/ai/ProviderModuleLoader.js +49 -0
- package/dist/infrastructure/ai/ProviderModuleLoader.js.map +1 -0
- package/dist/infrastructure/ai/ProviderRegistry.d.ts +37 -0
- package/dist/infrastructure/ai/ProviderRegistry.js +55 -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/LanguageCatalog.d.ts +30 -0
- package/dist/{lib/chunker/languages.js → infrastructure/treesitter/LanguageCatalog.js} +34 -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 +163 -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 +55 -0
- package/dist/presentation/cli/commands/ConfigCommands.js +204 -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 +84 -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
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
import { readFileSync } from "node:fs";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { Language, Parser } from "web-tree-sitter";
|
|
5
|
-
import { buildContextString, classifyRole, extractLeadingComment, extractScope, } from "./context.js";
|
|
6
|
-
import { getLanguageForFile, getWasmPath, } from "./languages.js";
|
|
7
|
-
const MAX_CHUNK_TOKENS = 8192;
|
|
8
|
-
let parserInstance;
|
|
9
|
-
const loadedLanguages = new Map();
|
|
10
|
-
async function getParser() {
|
|
11
|
-
if (!parserInstance) {
|
|
12
|
-
await Parser.init();
|
|
13
|
-
parserInstance = new Parser();
|
|
14
|
-
}
|
|
15
|
-
return parserInstance;
|
|
16
|
-
}
|
|
17
|
-
async function getLanguage(langConfig) {
|
|
18
|
-
const cached = loadedLanguages.get(langConfig.id);
|
|
19
|
-
if (cached)
|
|
20
|
-
return cached;
|
|
21
|
-
const wasmPath = getWasmPath(langConfig);
|
|
22
|
-
if (!wasmPath)
|
|
23
|
-
return undefined;
|
|
24
|
-
const lang = await Language.load(wasmPath);
|
|
25
|
-
loadedLanguages.set(langConfig.id, lang);
|
|
26
|
-
return lang;
|
|
27
|
-
}
|
|
28
|
-
/** Chunk a single file into context-enriched chunks */
|
|
29
|
-
export async function chunkFile(filePath, cwd) {
|
|
30
|
-
const langConfig = getLanguageForFile(filePath);
|
|
31
|
-
if (!langConfig)
|
|
32
|
-
return fallbackChunk(filePath, cwd);
|
|
33
|
-
const parser = await getParser();
|
|
34
|
-
const language = await getLanguage(langConfig);
|
|
35
|
-
if (!language)
|
|
36
|
-
return fallbackChunk(filePath, cwd);
|
|
37
|
-
parser.setLanguage(language);
|
|
38
|
-
const absolutePath = join(cwd, filePath);
|
|
39
|
-
const source = readFileSync(absolutePath, "utf-8");
|
|
40
|
-
const tree = parser.parse(source);
|
|
41
|
-
if (!tree)
|
|
42
|
-
return fallbackChunk(filePath, cwd);
|
|
43
|
-
if (langConfig.id === "markdown") {
|
|
44
|
-
const md = markdownChunks(tree.rootNode, filePath, source);
|
|
45
|
-
return md.length > 0 ? md : fallbackChunk(filePath, cwd);
|
|
46
|
-
}
|
|
47
|
-
const chunks = [];
|
|
48
|
-
collectChunks(tree.rootNode, langConfig, filePath, source, chunks);
|
|
49
|
-
if (chunks.length === 0) {
|
|
50
|
-
return fallbackChunk(filePath, cwd);
|
|
51
|
-
}
|
|
52
|
-
return chunks;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Markdown-specific chunking. The block grammar's `section` nodes nest by
|
|
56
|
-
* heading level, so emitting them whole collapses a doc into one chunk. Instead
|
|
57
|
-
* we split at every heading the grammar reports (so a `#` inside a fenced code
|
|
58
|
-
* block isn't mistaken for one) — each chunk spans a heading and its body up to
|
|
59
|
-
* the next heading. Result: complete, non-overlapping, heading-granular chunks.
|
|
60
|
-
*/
|
|
61
|
-
function markdownChunks(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
|
-
// Split points: start of file plus each heading row, sorted and deduped.
|
|
73
|
-
const starts = [...new Set([0, ...headingRows])].sort((a, b) => a - b);
|
|
74
|
-
const chunks = [];
|
|
75
|
-
for (let i = 0; i < starts.length; i++) {
|
|
76
|
-
const start = starts[i];
|
|
77
|
-
const end = i + 1 < starts.length ? starts[i + 1] : lines.length;
|
|
78
|
-
const content = lines.slice(start, end).join("\n");
|
|
79
|
-
if (content.trim().length === 0)
|
|
80
|
-
continue;
|
|
81
|
-
const headingText = (lines[start] ?? "").replace(/^\s*#+\s*/, "").trim();
|
|
82
|
-
const name = headingText.slice(0, 80) || `lines_${start + 1}_${end}`;
|
|
83
|
-
const hash = createHash("sha256")
|
|
84
|
-
.update(content)
|
|
85
|
-
.digest("hex")
|
|
86
|
-
.slice(0, 16);
|
|
87
|
-
chunks.push({
|
|
88
|
-
id: `${filePath}:${start}:${hash}`,
|
|
89
|
-
filePath,
|
|
90
|
-
startLine: start + 1,
|
|
91
|
-
endLine: end,
|
|
92
|
-
type: "section",
|
|
93
|
-
name,
|
|
94
|
-
content,
|
|
95
|
-
context: `[file: ${filePath}]`,
|
|
96
|
-
hash,
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
return chunks;
|
|
100
|
-
}
|
|
101
|
-
function collectChunks(node, langConfig, filePath, source, chunks) {
|
|
102
|
-
if (langConfig.chunkTypes.includes(node.type)) {
|
|
103
|
-
const content = node.text;
|
|
104
|
-
// If too large, recurse into children instead
|
|
105
|
-
const estimatedTokens = Math.ceil(content.length / 4);
|
|
106
|
-
if (estimatedTokens > MAX_CHUNK_TOKENS &&
|
|
107
|
-
hasChunkableDescendants(node, langConfig)) {
|
|
108
|
-
for (const child of node.children) {
|
|
109
|
-
collectChunks(child, langConfig, filePath, source, chunks);
|
|
110
|
-
}
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
const name = extractNodeName(node) ?? `anonymous_${node.startPosition.row}`;
|
|
114
|
-
// Skip very small chunks
|
|
115
|
-
if (content.split("\n").length < 2 && content.length < 50) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const scope = extractScope(node, langConfig);
|
|
119
|
-
const leadingComment = extractLeadingComment(node, source);
|
|
120
|
-
const role = classifyRole(node);
|
|
121
|
-
const context = buildContextString({
|
|
122
|
-
filePath,
|
|
123
|
-
scope,
|
|
124
|
-
leadingComment,
|
|
125
|
-
role,
|
|
126
|
-
});
|
|
127
|
-
const hash = createHash("sha256")
|
|
128
|
-
.update(content)
|
|
129
|
-
.digest("hex")
|
|
130
|
-
.slice(0, 16);
|
|
131
|
-
chunks.push({
|
|
132
|
-
id: `${filePath}:${node.startPosition.row}:${hash}`,
|
|
133
|
-
filePath,
|
|
134
|
-
startLine: node.startPosition.row + 1,
|
|
135
|
-
endLine: node.endPosition.row + 1,
|
|
136
|
-
type: node.type,
|
|
137
|
-
name,
|
|
138
|
-
content,
|
|
139
|
-
context,
|
|
140
|
-
hash,
|
|
141
|
-
});
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
for (const child of node.children) {
|
|
145
|
-
collectChunks(child, langConfig, filePath, source, chunks);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
function hasChunkableDescendants(node, langConfig) {
|
|
149
|
-
for (const child of node.children) {
|
|
150
|
-
if (langConfig.chunkTypes.includes(child.type))
|
|
151
|
-
return true;
|
|
152
|
-
if (hasChunkableDescendants(child, langConfig))
|
|
153
|
-
return true;
|
|
154
|
-
}
|
|
155
|
-
return false;
|
|
156
|
-
}
|
|
157
|
-
function extractNodeName(node) {
|
|
158
|
-
const nameNode = node.childForFieldName("name") ??
|
|
159
|
-
node.children.find((c) => c.type === "identifier" ||
|
|
160
|
-
c.type === "type_identifier" ||
|
|
161
|
-
// nix bindings name their target via an attrpath (e.g. `outputs = ...`)
|
|
162
|
-
c.type === "attrpath");
|
|
163
|
-
return nameNode?.text;
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Fallback: chunk by sliding window for files with no grammar or no chunkable
|
|
167
|
-
* structure (e.g. linear shell scripts). A small window overlap keeps a passage
|
|
168
|
-
* spanning a window boundary recallable; it's kept light (20%) because the
|
|
169
|
-
* extra rows are pure index bloat now that search dedups overlapping results.
|
|
170
|
-
*/
|
|
171
|
-
function fallbackChunk(filePath, cwd) {
|
|
172
|
-
const absolutePath = join(cwd, filePath);
|
|
173
|
-
const source = readFileSync(absolutePath, "utf-8");
|
|
174
|
-
const lines = source.split("\n");
|
|
175
|
-
if (lines.length === 0)
|
|
176
|
-
return [];
|
|
177
|
-
const WINDOW = 50;
|
|
178
|
-
const STRIDE = 40;
|
|
179
|
-
const chunks = [];
|
|
180
|
-
for (let i = 0; i < lines.length; i += STRIDE) {
|
|
181
|
-
const slice = lines.slice(i, i + WINDOW);
|
|
182
|
-
const content = slice.join("\n");
|
|
183
|
-
if (content.trim().length === 0)
|
|
184
|
-
continue;
|
|
185
|
-
const hash = createHash("sha256")
|
|
186
|
-
.update(content)
|
|
187
|
-
.digest("hex")
|
|
188
|
-
.slice(0, 16);
|
|
189
|
-
chunks.push({
|
|
190
|
-
id: `${filePath}:${i}:${hash}`,
|
|
191
|
-
filePath,
|
|
192
|
-
startLine: i + 1,
|
|
193
|
-
endLine: Math.min(i + WINDOW, lines.length),
|
|
194
|
-
type: "block",
|
|
195
|
-
name: `lines_${i + 1}_${Math.min(i + WINDOW, lines.length)}`,
|
|
196
|
-
content,
|
|
197
|
-
context: `[file: ${filePath}]`,
|
|
198
|
-
hash,
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
return chunks;
|
|
202
|
-
}
|
|
203
|
-
/** Default chunker using tree-sitter with sliding-window fallback */
|
|
204
|
-
export class TreeSitterChunker {
|
|
205
|
-
async chunk(filePath, cwd) {
|
|
206
|
-
return chunkFile(filePath, cwd);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/chunker/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
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
|
-
export declare function getLanguageForFile(filePath: string): LanguageConfig | undefined;
|
|
15
|
-
export declare function getWasmPath(lang: LanguageConfig): string | undefined;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../src/lib/chunker/languages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AA0C/C,MAAM,CAAC,MAAM,SAAS,GAAqB;IAC1C;QACC,EAAE,EAAE,YAAY;QAChB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QAC3B,QAAQ,EAAE,6BAA6B;QACvC,UAAU,EAAE;YACX,sBAAsB;YACtB,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;YACnB,kBAAkB;YAClB,qBAAqB;SACrB;QACD,WAAW,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;QACpD,UAAU,EAAE,CAAC,mBAAmB,EAAE,YAAY,CAAC;KAC/C;IACD;QACC,EAAE,EAAE,YAAY;QAChB,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,QAAQ,EAAE,6BAA6B;QACvC,UAAU,EAAE;YACX,sBAAsB;YACtB,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;YACnB,uBAAuB;YACvB,wBAAwB;YACxB,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;SACrB;QACD,WAAW,EAAE,CAAC,kBAAkB,CAAC;QACjC,UAAU,EAAE;YACX,mBAAmB;YACnB,uBAAuB;YACvB,QAAQ;YACR,uBAAuB;SACvB;KACD;IACD;QACC,EAAE,EAAE,KAAK;QACT,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,sBAAsB;QAChC,UAAU,EAAE;YACX,sBAAsB;YACtB,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;YACnB,uBAAuB;YACvB,wBAAwB;YACxB,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;SACrB;QACD,WAAW,EAAE,CAAC,kBAAkB,CAAC;QACjC,UAAU,EAAE;YACX,mBAAmB;YACnB,uBAAuB;YACvB,QAAQ;YACR,uBAAuB;SACvB;KACD;IACD;QACC,EAAE,EAAE,QAAQ;QACZ,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,QAAQ,EAAE,yBAAyB;QACnC,UAAU,EAAE;YACX,qBAAqB;YACrB,kBAAkB;YAClB,sBAAsB;SACtB;QACD,WAAW,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;QAC1D,UAAU,EAAE,CAAC,kBAAkB,EAAE,QAAQ,CAAC;KAC1C;IACD;QACC,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,QAAQ,EAAE,uBAAuB;QACjC,UAAU,EAAE;YACX,eAAe;YACf,WAAW;YACX,aAAa;YACb,WAAW;YACX,YAAY;YACZ,WAAW;YACX,YAAY;YACZ,aAAa;YACb,kBAAkB;SAClB;QACD,WAAW,EAAE,CAAC,iBAAiB,CAAC;QAChC,UAAU,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC;KACnD;IACD;QACC,EAAE,EAAE,IAAI;QACR,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,QAAQ,EAAE,qBAAqB;QAC/B,UAAU,EAAE;YACX,sBAAsB;YACtB,oBAAoB;YACpB,kBAAkB;YAClB,mBAAmB;YACnB,iBAAiB;SACjB;QACD,WAAW,EAAE,CAAC,oBAAoB,CAAC;QACnC,UAAU,EAAE,CAAC,kBAAkB,CAAC;KAChC;IACD;QACC,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,QAAQ,EAAE,uBAAuB;QACjC,UAAU,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,QAAQ,CAAC;QAC7D,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC/B;IACD;QACC,EAAE,EAAE,GAAG;QACP,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QACxB,QAAQ,EAAE,oBAAoB;QAC9B,UAAU,EAAE;YACX,qBAAqB;YACrB,kBAAkB;YAClB,gBAAgB;YAChB,iBAAiB;YACjB,aAAa;SACb;QACD,WAAW,EAAE,CAAC,iBAAiB,CAAC;QAChC,UAAU,EAAE,CAAC,kBAAkB,CAAC;KAChC;IACD;QACC,EAAE,EAAE,KAAK;QACT,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;QACnC,QAAQ,EAAE,sBAAsB;QAChC,UAAU,EAAE;YACX,qBAAqB;YACrB,iBAAiB;YACjB,kBAAkB;YAClB,sBAAsB;YACtB,sBAAsB;YACtB,gBAAgB;SAChB;QACD,WAAW,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;QACrD,UAAU,EAAE;YACX,iBAAiB;YACjB,kBAAkB;YAClB,sBAAsB;SACtB;KACD;IACD;QACC,EAAE,EAAE,OAAO;QACX,UAAU,EAAE,CAAC,QAAQ,CAAC;QACtB,QAAQ,EAAE,wBAAwB;QAClC,yEAAyE;QACzE,uEAAuE;QACvE,UAAU,EAAE;YACX,sBAAsB;YACtB,mBAAmB;YACnB,sBAAsB;SACtB;QACD,WAAW,EAAE,CAAC,oBAAoB,CAAC;QACnC,UAAU,EAAE,CAAC,mBAAmB,CAAC;KACjC;IACD;QACC,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,CAAC,OAAO,CAAC;QACrB,QAAQ,EAAE,uBAAuB;QACjC,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,CAAC,QAAQ,CAAC;KACtB;IACD;QACC,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7B,QAAQ,EAAE,uBAAuB;QACjC,UAAU,EAAE,CAAC,oBAAoB,CAAC;QAClC,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,CAAC,eAAe,CAAC;KAC7B;IACD;QACC,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,CAAC,OAAO,CAAC;QACrB,QAAQ,EAAE,uBAAuB;QACjC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,CAAC,OAAO,CAAC;KACrB;IACD;QACC,EAAE,EAAE,KAAK;QACT,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,sBAAsB;QAChC,2EAA2E;QAC3E,UAAU,EAAE,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;QAC3D,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,UAAU,EAAE,EAAE;KACd;IACD;QACC,EAAE,EAAE,OAAO;QACX,UAAU,EAAE,CAAC,QAAQ,CAAC;QACtB,QAAQ,EAAE,wBAAwB;QAClC,UAAU,EAAE;YACX,qBAAqB;YACrB,gBAAgB;YAChB,gBAAgB;YAChB,kBAAkB;YAClB,mBAAmB;YACnB,kBAAkB;SAClB;QACD,WAAW,EAAE,CAAC,oBAAoB,CAAC;QACnC,UAAU,EAAE;YACX,kBAAkB;YAClB,mBAAmB;YACnB,kBAAkB;SAClB;KACD;IACD;QACC,EAAE,EAAE,KAAK;QACT,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,sBAAsB;QAChC,UAAU,EAAE;YACX,sBAAsB;YACtB,sBAAsB;YACtB,kBAAkB;SAClB;QACD,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC;KAC3E;IACD;QACC,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;QAC5B,QAAQ,EAAE,uBAAuB;QACjC,UAAU,EAAE,CAAC,qBAAqB,CAAC;QACnC,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,UAAU,EAAE,EAAE;KACd;IACD;QACC,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,CAAC,OAAO,CAAC;QACrB,QAAQ,EAAE,uBAAuB;QACjC,UAAU,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,eAAe,CAAC;QAC1D,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,CAAC,SAAS,CAAC;KACvB;IACD;QACC,EAAE,EAAE,KAAK;QACT,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QAC7B,QAAQ,EAAE,sBAAsB;QAChC,UAAU,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,qBAAqB,CAAC;QAClE,WAAW,EAAE,CAAC,kBAAkB,CAAC;QACjC,UAAU,EAAE,EAAE;KACd;IACD;QACC,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,CAAC,OAAO,CAAC;QACrB,QAAQ,EAAE,uBAAuB;QACjC,UAAU,EAAE;YACX,mBAAmB;YACnB,uBAAuB;YACvB,kBAAkB;YAClB,oBAAoB;YACpB,yBAAyB;YACzB,oBAAoB;SACpB;QACD,WAAW,EAAE,CAAC,oBAAoB,CAAC;QACnC,UAAU,EAAE,CAAC,mBAAmB,EAAE,uBAAuB,CAAC;KAC1D;IACD;QACC,EAAE,EAAE,QAAQ;QACZ,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,QAAQ,EAAE,yBAAyB;QACnC,UAAU,EAAE;YACX,mBAAmB;YACnB,oBAAoB;YACpB,sBAAsB;YACtB,sBAAsB;SACtB;QACD,WAAW,EAAE,CAAC,eAAe,CAAC;QAC9B,UAAU,EAAE,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;KACvD;IACD;QACC,EAAE,EAAE,KAAK;QACT,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,sBAAsB;QAChC,UAAU,EAAE;YACX,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;YACnB,kBAAkB;YAClB,qBAAqB;YACrB,oBAAoB;SACpB;QACD,WAAW,EAAE,CAAC,2BAA2B,CAAC;QAC1C,UAAU,EAAE;YACX,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;SACnB;KACD;IACD;QACC,EAAE,EAAE,SAAS;QACb,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,QAAQ,EAAE,yBAAyB;QACnC,UAAU,EAAE;YACX,mBAAmB;YACnB,uBAAuB;YACvB,oBAAoB;YACpB,kBAAkB;YAClB,oBAAoB;YACpB,oBAAoB;YACpB,yBAAyB;YACzB,sBAAsB;SACtB;QACD,WAAW,EAAE,CAAC,iBAAiB,CAAC;QAChC,UAAU,EAAE;YACX,mBAAmB;YACnB,uBAAuB;YACvB,oBAAoB;YACpB,uBAAuB;SACvB;KACD;IACD;QACC,EAAE,EAAE,KAAK;QACT,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,sBAAsB;QAChC,UAAU,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,CAAC;QACnE,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,EAAE;KACd;IACD;QACC,EAAE,EAAE,UAAU;QACd,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC;QACxC,QAAQ,EAAE,2BAA2B;QACrC,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,UAAU,EAAE,CAAC,SAAS,CAAC;QACvB,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,CAAC,SAAS,CAAC;KACvB;IACD;QACC,EAAE,EAAE,KAAK;QACT,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,sBAAsB;QAChC,UAAU,EAAE,CAAC,SAAS,CAAC;QACvB,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,CAAC,oBAAoB,EAAE,aAAa,CAAC;KACjD;CACD,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;AACpD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;AACF,CAAC;AAED,MAAM,UAAU,kBAAkB,CACjC,QAAgB;IAEhB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAoB;IAC/C,6EAA6E;IAC7E,6EAA6E;IAC7E,2EAA2E;IAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC/E,IAAI,CAAC;QACJ,OAAO,OAAO,CAAC,OAAO,CAAC,kBAAkB,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC"}
|
package/dist/lib/config.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { LmgrepConfig } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Return the XDG-compliant global config directory for lmgrep.
|
|
4
|
-
* Linux: $XDG_CONFIG_HOME/lmgrep or ~/.config/lmgrep
|
|
5
|
-
* macOS: ~/Library/Application Support/lmgrep
|
|
6
|
-
*/
|
|
7
|
-
export declare function getConfigDir(): string;
|
|
8
|
-
/**
|
|
9
|
-
* Return the path to the global config file.
|
|
10
|
-
*/
|
|
11
|
-
export declare function getGlobalConfigPath(): string;
|
|
12
|
-
export declare function loadConfig(cwd: string): LmgrepConfig;
|
package/dist/lib/config.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { readFileSync, existsSync } from "node:fs";
|
|
2
|
-
import { homedir, platform } from "node:os";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { parse } from "yaml";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
const ConfigSchema = z.object({
|
|
7
|
-
model: z
|
|
8
|
-
.string()
|
|
9
|
-
.regex(/^.+:.+$/, 'Model must be in "provider:model" format (e.g. "ollama:nomic-embed-text")'),
|
|
10
|
-
provider: z.string().optional(),
|
|
11
|
-
baseURL: z.string().url().optional(),
|
|
12
|
-
local: z.boolean().optional(),
|
|
13
|
-
batchSize: z.number().int().positive().default(100),
|
|
14
|
-
dimensions: z.number().int().positive().optional(),
|
|
15
|
-
queryPrefix: z.string().optional(),
|
|
16
|
-
documentPrefix: z.string().optional(),
|
|
17
|
-
maxTokens: z.number().int().positive().optional(),
|
|
18
|
-
ignore: z.array(z.string()).optional(),
|
|
19
|
-
extensions: z
|
|
20
|
-
.object({
|
|
21
|
-
include: z.array(z.string()).optional(),
|
|
22
|
-
exclude: z.array(z.string()).optional(),
|
|
23
|
-
})
|
|
24
|
-
.optional(),
|
|
25
|
-
});
|
|
26
|
-
const CONFIG_FILE = "config.yml";
|
|
27
|
-
const DEFAULTS = {
|
|
28
|
-
batchSize: 100,
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Return the XDG-compliant global config directory for lmgrep.
|
|
32
|
-
* Linux: $XDG_CONFIG_HOME/lmgrep or ~/.config/lmgrep
|
|
33
|
-
* macOS: ~/Library/Application Support/lmgrep
|
|
34
|
-
*/
|
|
35
|
-
export function getConfigDir() {
|
|
36
|
-
if (platform() === "darwin") {
|
|
37
|
-
return join(homedir(), "Library", "Application Support", "lmgrep");
|
|
38
|
-
}
|
|
39
|
-
const xdg = process.env.XDG_CONFIG_HOME;
|
|
40
|
-
return join(xdg || join(homedir(), ".config"), "lmgrep");
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Return the path to the global config file.
|
|
44
|
-
*/
|
|
45
|
-
export function getGlobalConfigPath() {
|
|
46
|
-
return join(getConfigDir(), CONFIG_FILE);
|
|
47
|
-
}
|
|
48
|
-
function tryLoadFile(path) {
|
|
49
|
-
if (!existsSync(path))
|
|
50
|
-
return undefined;
|
|
51
|
-
const raw = readFileSync(path, "utf-8");
|
|
52
|
-
const parsed = parse(raw);
|
|
53
|
-
if (parsed == null || typeof parsed !== "object")
|
|
54
|
-
return undefined;
|
|
55
|
-
return ConfigSchema.partial().parse(parsed);
|
|
56
|
-
}
|
|
57
|
-
export function loadConfig(cwd) {
|
|
58
|
-
// Project-local config (.lmgrep.yml in project root)
|
|
59
|
-
for (const name of [".lmgrep.yml", ".lmgrep.yaml"]) {
|
|
60
|
-
const found = tryLoadFile(join(cwd, name));
|
|
61
|
-
if (found)
|
|
62
|
-
return validateConfig({ ...DEFAULTS, ...found });
|
|
63
|
-
}
|
|
64
|
-
// Global config (XDG config dir)
|
|
65
|
-
const globalConfig = tryLoadFile(getGlobalConfigPath());
|
|
66
|
-
if (globalConfig)
|
|
67
|
-
return validateConfig({ ...DEFAULTS, ...globalConfig });
|
|
68
|
-
// Legacy: ~/.lmgrep.yml (for backwards compat)
|
|
69
|
-
for (const name of [".lmgrep.yml", ".lmgrep.yaml"]) {
|
|
70
|
-
const found = tryLoadFile(join(homedir(), name));
|
|
71
|
-
if (found)
|
|
72
|
-
return validateConfig({ ...DEFAULTS, ...found });
|
|
73
|
-
}
|
|
74
|
-
throw new Error("No configuration found. Run `lmgrep init` to set up your embedding model.");
|
|
75
|
-
}
|
|
76
|
-
function validateConfig(config) {
|
|
77
|
-
if (!config.model) {
|
|
78
|
-
throw new Error("No model configured. Set `model` in .lmgrep.yml (e.g. `model: ollama:nomic-embed-text`).\n" +
|
|
79
|
-
"Run `lmgrep init` to auto-detect your setup.");
|
|
80
|
-
}
|
|
81
|
-
return config;
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/embedder.d.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import type { LmgrepConfig } from "./types.js";
|
|
2
|
-
export interface Embedder {
|
|
3
|
-
embed(texts: string[]): Promise<number[][]>;
|
|
4
|
-
embedQuery(query: string): Promise<number[]>;
|
|
5
|
-
}
|
|
6
|
-
export interface EmbedderEvents {
|
|
7
|
-
onBatchStart?: (batchNum: number, totalBatches: number) => void;
|
|
8
|
-
onBatchDone?: (batchNum: number, succeeded: number, failed: number) => void;
|
|
9
|
-
onReload?: (attempt: number, maxAttempts: number) => void;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Thrown when too many consecutive embedding batches fail.
|
|
13
|
-
* The caller should persist any successful chunks before surfacing this error.
|
|
14
|
-
*/
|
|
15
|
-
export declare class EmbeddingAbortError extends Error {
|
|
16
|
-
readonly vectors: (number[] | null)[];
|
|
17
|
-
readonly failedIndices: Set<number>;
|
|
18
|
-
readonly total: number;
|
|
19
|
-
constructor(vectors: (number[] | null)[], failedIndices: Set<number>, total: number);
|
|
20
|
-
}
|
|
21
|
-
export declare class AISDKEmbedder implements Embedder {
|
|
22
|
-
private cachedModel;
|
|
23
|
-
private config;
|
|
24
|
-
private validated;
|
|
25
|
-
constructor(config: LmgrepConfig);
|
|
26
|
-
private validateDimension;
|
|
27
|
-
private getModel;
|
|
28
|
-
embed(texts: string[]): Promise<number[][]>;
|
|
29
|
-
embedQuery(query: string): Promise<number[]>;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Resilient embedder that retries failed batches individually.
|
|
33
|
-
* On too many consecutive failures, throws EmbeddingAbortError so the caller
|
|
34
|
-
* can persist partial progress and exit cleanly.
|
|
35
|
-
*
|
|
36
|
-
* For local LM Studio setups with baseURL set to localhost, it will attempt
|
|
37
|
-
* to reload the model before aborting.
|
|
38
|
-
*/
|
|
39
|
-
export declare class ResilientEmbedder {
|
|
40
|
-
private embedder;
|
|
41
|
-
private config;
|
|
42
|
-
private events?;
|
|
43
|
-
private consecutiveFailures;
|
|
44
|
-
private reloads;
|
|
45
|
-
private readonly isLocal;
|
|
46
|
-
constructor(embedder: Embedder, config: LmgrepConfig, events?: EmbedderEvents | undefined);
|
|
47
|
-
private static readonly BATCH_DELAY_MS;
|
|
48
|
-
private static readonly MAX_CONSECUTIVE_FAILURES;
|
|
49
|
-
private static readonly MAX_RELOADS;
|
|
50
|
-
/**
|
|
51
|
-
* Embed `texts` batch by batch. After each batch, `onBatch` (if given) is
|
|
52
|
-
* awaited with the items that just embedded successfully, so the caller can
|
|
53
|
-
* persist incrementally rather than buffering every vector until the end —
|
|
54
|
-
* embeddings then survive a hard crash and resume skips completed work.
|
|
55
|
-
* Each successful index is reported through `onBatch` exactly once.
|
|
56
|
-
*/
|
|
57
|
-
embedBatched(texts: string[], onBatch?: (items: Array<{
|
|
58
|
-
index: number;
|
|
59
|
-
vector: number[];
|
|
60
|
-
}>) => Promise<void>): Promise<{
|
|
61
|
-
vectors: (number[] | null)[];
|
|
62
|
-
failedIndices: Set<number>;
|
|
63
|
-
}>;
|
|
64
|
-
private reloadModel;
|
|
65
|
-
}
|
package/dist/lib/embedder.js
DELETED
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import { embed, embedMany } from "ai";
|
|
2
|
-
import { createProviderRegistry } from "ai";
|
|
3
|
-
import { importProvider } from "./providers.js";
|
|
4
|
-
/**
|
|
5
|
-
* Thrown when too many consecutive embedding batches fail.
|
|
6
|
-
* The caller should persist any successful chunks before surfacing this error.
|
|
7
|
-
*/
|
|
8
|
-
export class EmbeddingAbortError extends Error {
|
|
9
|
-
vectors;
|
|
10
|
-
failedIndices;
|
|
11
|
-
total;
|
|
12
|
-
constructor(vectors, failedIndices, total) {
|
|
13
|
-
const succeeded = vectors.filter((v) => v !== null).length;
|
|
14
|
-
super(`Embedding aborted after ${failedIndices.size} failures. ` +
|
|
15
|
-
`${succeeded}/${total} chunks embedded successfully. ` +
|
|
16
|
-
`Check your embedding provider and run \`lmgrep index\` to resume.`);
|
|
17
|
-
this.vectors = vectors;
|
|
18
|
-
this.failedIndices = failedIndices;
|
|
19
|
-
this.total = total;
|
|
20
|
-
this.name = "EmbeddingAbortError";
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
export class AISDKEmbedder {
|
|
24
|
-
cachedModel;
|
|
25
|
-
config;
|
|
26
|
-
validated = false;
|
|
27
|
-
constructor(config) {
|
|
28
|
-
this.config = config;
|
|
29
|
-
}
|
|
30
|
-
validateDimension(vector) {
|
|
31
|
-
if (this.validated)
|
|
32
|
-
return;
|
|
33
|
-
this.validated = true;
|
|
34
|
-
if (this.config.dimensions != null &&
|
|
35
|
-
vector.length !== this.config.dimensions) {
|
|
36
|
-
throw new Error(`Embedding dimension mismatch: expected ${this.config.dimensions}, got ${vector.length}. Check your model and config.dimensions.`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
async getModel() {
|
|
40
|
-
if (this.cachedModel)
|
|
41
|
-
return this.cachedModel;
|
|
42
|
-
const colonIdx = this.config.model.indexOf(":");
|
|
43
|
-
if (colonIdx === -1) {
|
|
44
|
-
throw new Error(`Model must be in "provider:model" format. Got: "${this.config.model}"`);
|
|
45
|
-
}
|
|
46
|
-
const providerName = this.config.model.slice(0, colonIdx);
|
|
47
|
-
const pkg = this.config.provider ?? `@ai-sdk/${providerName}`;
|
|
48
|
-
const providerModule = await importProvider(pkg);
|
|
49
|
-
let providerInstance = providerModule[providerName];
|
|
50
|
-
if (!providerInstance) {
|
|
51
|
-
const factoryKey = Object.keys(providerModule).find((k) => k.startsWith("create"));
|
|
52
|
-
if (factoryKey) {
|
|
53
|
-
const factory = providerModule[factoryKey];
|
|
54
|
-
providerInstance = factory({
|
|
55
|
-
name: providerName,
|
|
56
|
-
...(this.config.baseURL ? { baseURL: this.config.baseURL } : {}),
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (!providerInstance) {
|
|
61
|
-
throw new Error(`Package "${pkg}" has no usable provider export. Available: ${Object.keys(providerModule).join(", ")}`);
|
|
62
|
-
}
|
|
63
|
-
const registry = createProviderRegistry({
|
|
64
|
-
[providerName]: providerInstance,
|
|
65
|
-
});
|
|
66
|
-
this.cachedModel = registry.embeddingModel(this.config.model);
|
|
67
|
-
return this.cachedModel;
|
|
68
|
-
}
|
|
69
|
-
async embed(texts) {
|
|
70
|
-
const model = await this.getModel();
|
|
71
|
-
const prefix = this.config.documentPrefix ?? "";
|
|
72
|
-
const allEmbeddings = [];
|
|
73
|
-
for (let i = 0; i < texts.length; i += this.config.batchSize) {
|
|
74
|
-
const batch = texts.slice(i, i + this.config.batchSize);
|
|
75
|
-
const values = prefix ? batch.map((t) => prefix + t) : batch;
|
|
76
|
-
const { embeddings } = await embedMany({ model, values });
|
|
77
|
-
if (embeddings.length > 0)
|
|
78
|
-
this.validateDimension(embeddings[0]);
|
|
79
|
-
allEmbeddings.push(...embeddings);
|
|
80
|
-
}
|
|
81
|
-
return allEmbeddings;
|
|
82
|
-
}
|
|
83
|
-
async embedQuery(query) {
|
|
84
|
-
const model = await this.getModel();
|
|
85
|
-
const prefix = this.config.queryPrefix ?? "";
|
|
86
|
-
const { embedding } = await embed({ model, value: prefix + query });
|
|
87
|
-
this.validateDimension(embedding);
|
|
88
|
-
return embedding;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Resilient embedder that retries failed batches individually.
|
|
93
|
-
* On too many consecutive failures, throws EmbeddingAbortError so the caller
|
|
94
|
-
* can persist partial progress and exit cleanly.
|
|
95
|
-
*
|
|
96
|
-
* For local LM Studio setups with baseURL set to localhost, it will attempt
|
|
97
|
-
* to reload the model before aborting.
|
|
98
|
-
*/
|
|
99
|
-
export class ResilientEmbedder {
|
|
100
|
-
embedder;
|
|
101
|
-
config;
|
|
102
|
-
events;
|
|
103
|
-
consecutiveFailures = 0;
|
|
104
|
-
reloads = 0;
|
|
105
|
-
isLocal;
|
|
106
|
-
constructor(embedder, config, events) {
|
|
107
|
-
this.embedder = embedder;
|
|
108
|
-
this.config = config;
|
|
109
|
-
this.events = events;
|
|
110
|
-
this.isLocal = isLocalProvider(config.baseURL);
|
|
111
|
-
}
|
|
112
|
-
static BATCH_DELAY_MS = 200;
|
|
113
|
-
static MAX_CONSECUTIVE_FAILURES = 3;
|
|
114
|
-
static MAX_RELOADS = 3;
|
|
115
|
-
/**
|
|
116
|
-
* Embed `texts` batch by batch. After each batch, `onBatch` (if given) is
|
|
117
|
-
* awaited with the items that just embedded successfully, so the caller can
|
|
118
|
-
* persist incrementally rather than buffering every vector until the end —
|
|
119
|
-
* embeddings then survive a hard crash and resume skips completed work.
|
|
120
|
-
* Each successful index is reported through `onBatch` exactly once.
|
|
121
|
-
*/
|
|
122
|
-
async embedBatched(texts, onBatch) {
|
|
123
|
-
const batchSize = this.config.batchSize;
|
|
124
|
-
const vectors = new Array(texts.length).fill(null);
|
|
125
|
-
const failedIndices = new Set();
|
|
126
|
-
const totalBatches = Math.ceil(texts.length / batchSize);
|
|
127
|
-
for (let i = 0; i < texts.length; i += batchSize) {
|
|
128
|
-
const batchNum = Math.floor(i / batchSize) + 1;
|
|
129
|
-
const end = Math.min(i + batchSize, texts.length);
|
|
130
|
-
const batch = texts.slice(i, end);
|
|
131
|
-
this.events?.onBatchStart?.(batchNum, totalBatches);
|
|
132
|
-
const persisted = [];
|
|
133
|
-
try {
|
|
134
|
-
const batchVectors = await this.embedder.embed(batch);
|
|
135
|
-
for (let j = 0; j < batch.length; j++) {
|
|
136
|
-
vectors[i + j] = batchVectors[j];
|
|
137
|
-
persisted.push({ index: i + j, vector: batchVectors[j] });
|
|
138
|
-
}
|
|
139
|
-
this.consecutiveFailures = 0;
|
|
140
|
-
}
|
|
141
|
-
catch {
|
|
142
|
-
// Batch failed — retry individually
|
|
143
|
-
let batchFailed = 0;
|
|
144
|
-
for (let j = 0; j < batch.length; j++) {
|
|
145
|
-
try {
|
|
146
|
-
const [vec] = await this.embedder.embed([batch[j]]);
|
|
147
|
-
vectors[i + j] = vec;
|
|
148
|
-
persisted.push({ index: i + j, vector: vec });
|
|
149
|
-
}
|
|
150
|
-
catch (err) {
|
|
151
|
-
failedIndices.add(i + j);
|
|
152
|
-
batchFailed++;
|
|
153
|
-
console.error(` ! Failed (~${Math.ceil(batch[j].length / 4)} tok): ${err instanceof Error ? err.message : err}`);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
if (batchFailed === batch.length) {
|
|
157
|
-
this.consecutiveFailures++;
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
this.consecutiveFailures = 0;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
// Persist this batch's successes before any abort below, so partial
|
|
164
|
-
// progress is durable even if the next batches force an abort.
|
|
165
|
-
if (onBatch && persisted.length > 0) {
|
|
166
|
-
await onBatch(persisted);
|
|
167
|
-
}
|
|
168
|
-
const succeeded = vectors.filter((v) => v !== null).length;
|
|
169
|
-
this.events?.onBatchDone?.(batchNum, succeeded, failedIndices.size);
|
|
170
|
-
// Handle consecutive failures
|
|
171
|
-
if (this.consecutiveFailures >=
|
|
172
|
-
ResilientEmbedder.MAX_CONSECUTIVE_FAILURES) {
|
|
173
|
-
// For local providers, try reloading the model
|
|
174
|
-
if (this.isLocal && this.reloads < ResilientEmbedder.MAX_RELOADS) {
|
|
175
|
-
this.reloads++;
|
|
176
|
-
this.events?.onReload?.(this.reloads, ResilientEmbedder.MAX_RELOADS);
|
|
177
|
-
const ok = await this.reloadModel();
|
|
178
|
-
if (ok) {
|
|
179
|
-
this.consecutiveFailures = 0;
|
|
180
|
-
i -= ResilientEmbedder.MAX_CONSECUTIVE_FAILURES * batchSize;
|
|
181
|
-
continue;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
// Mark remaining as failed
|
|
185
|
-
for (let k = end; k < texts.length; k++) {
|
|
186
|
-
failedIndices.add(k);
|
|
187
|
-
}
|
|
188
|
-
// Abort — carry partial results so the caller can persist them
|
|
189
|
-
throw new EmbeddingAbortError(vectors, failedIndices, texts.length);
|
|
190
|
-
}
|
|
191
|
-
// Cooldown between batches
|
|
192
|
-
if (end < texts.length) {
|
|
193
|
-
await new Promise((r) => setTimeout(r, ResilientEmbedder.BATCH_DELAY_MS));
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
return { vectors, failedIndices };
|
|
197
|
-
}
|
|
198
|
-
async reloadModel() {
|
|
199
|
-
const modelId = this.config.model.split(":").slice(1).join(":");
|
|
200
|
-
const baseURL = this.config.baseURL ?? "http://localhost:1234";
|
|
201
|
-
const apiBase = baseURL.replace(/\/v1\/?$/, "");
|
|
202
|
-
try {
|
|
203
|
-
await fetch(`${apiBase}/api/v1/models/unload`, {
|
|
204
|
-
method: "POST",
|
|
205
|
-
headers: { "Content-Type": "application/json" },
|
|
206
|
-
body: JSON.stringify({ instance_id: modelId }),
|
|
207
|
-
});
|
|
208
|
-
await new Promise((r) => setTimeout(r, 2000));
|
|
209
|
-
const res = await fetch(`${apiBase}/api/v1/models/load`, {
|
|
210
|
-
method: "POST",
|
|
211
|
-
headers: { "Content-Type": "application/json" },
|
|
212
|
-
body: JSON.stringify({
|
|
213
|
-
model: modelId,
|
|
214
|
-
context_length: this.config.maxTokens ?? 8192,
|
|
215
|
-
}),
|
|
216
|
-
});
|
|
217
|
-
await res.json();
|
|
218
|
-
return true;
|
|
219
|
-
}
|
|
220
|
-
catch {
|
|
221
|
-
return false;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
function isLocalProvider(baseURL) {
|
|
226
|
-
if (!baseURL)
|
|
227
|
-
return false;
|
|
228
|
-
try {
|
|
229
|
-
const host = new URL(baseURL).hostname;
|
|
230
|
-
return host === "localhost" || host === "127.0.0.1" || host === "0.0.0.0";
|
|
231
|
-
}
|
|
232
|
-
catch {
|
|
233
|
-
return false;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
//# sourceMappingURL=embedder.js.map
|