chunkhound 2.4.2__tar.gz → 2.4.4__tar.gz
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.
- {chunkhound-2.4.2 → chunkhound-2.4.4}/CHANGELOG.md +14 -1
- {chunkhound-2.4.2 → chunkhound-2.4.4}/PKG-INFO +125 -8
- {chunkhound-2.4.2 → chunkhound-2.4.4}/README.md +124 -7
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/cli/commands/mcp.py +21 -6
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/config/config.py +5 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/mcp_server.py +1 -4
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/periodic_indexer.py +21 -2
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/version.py +1 -1
- {chunkhound-2.4.2 → chunkhound-2.4.4}/mcp_launcher.py +3 -5
- {chunkhound-2.4.2 → chunkhound-2.4.4}/pyproject.toml +1 -1
- chunkhound-2.4.4/tickets/closed/2025-07-09T20:36:38+03:00-bug-mcp-server-taskgroup-error-different-directory.md +97 -0
- chunkhound-2.4.4/tickets/closed/2025-07-09T21:03:35+03:00-bug-mcp-positional-path-incomplete-project-scope.md +131 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/uv.lock +1 -1
- {chunkhound-2.4.2 → chunkhound-2.4.4}/.claude/commands/qa.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/.dockerignore +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/.github/workflows/cross-platform-build.yml +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/.github/workflows/test-windows-only.yml +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/.github/workflows/test-windows.yml +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/.gitignore +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/CLAUDE.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/Dockerfile +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/Dockerfile.ubuntu20 +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/IDE-SETUP.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/LICENSE +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/MIGRATION_GUIDE.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/cli/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/cli/commands/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/cli/commands/run.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/cli/main.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/cli/parsers/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/cli/parsers/main_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/cli/parsers/mcp_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/cli/parsers/run_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/cli/utils/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/cli/utils/config_helpers.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/cli/utils/output.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/api/cli/utils/validation.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/chunker.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/config/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/config/database_config.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/config/embedding_config.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/config/embedding_factory.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/config/indexing_config.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/config/mcp_config.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/config/settings_sources.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/config/unified_config.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/exceptions/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/exceptions/core.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/models/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/models/chunk.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/models/embedding.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/models/file.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/types/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/core/types/common.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/database.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/database_factory.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/embeddings.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/file_discovery_cache.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/file_watcher.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/interfaces/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/interfaces/database_provider.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/interfaces/embedding_provider.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/interfaces/language_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/mcp_entry.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/process_detection.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/database/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/database/duckdb/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/database/duckdb/chunk_repository.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/database/duckdb/connection_manager.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/database/duckdb/embedding_repository.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/database/duckdb/file_repository.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/database/duckdb_provider.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/database/lancedb_provider.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/database/serial_database_provider.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/database/serial_executor.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/embeddings/README.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/embeddings/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/embeddings/batch_utils.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/embeddings/openai_provider.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/base_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/bash_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/c_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/cpp_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/csharp_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/go_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/groovy_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/java_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/javascript_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/kotlin_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/makefile_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/markdown_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/matlab_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/python_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/rust_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/text_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/toml_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/providers/parsing/typescript_parser.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/py.typed +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/registry/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/services/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/services/base_service.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/services/chunk_cache_service.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/services/embedding_service.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/services/indexing_coordinator.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/services/search_service.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/signal_coordinator.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/task_coordinator.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/tree_cache.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/utils/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound/utils/project_detection.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/chunkhound-fast +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/cli_wrapper.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/docker-compose.build.yml +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/docs/ARCHITECTURE.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/docs/CROSS_PLATFORM_BUILD.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/docs/DOCKER_BUILD.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/docs/PHASE3_CICD_OPTIMIZATION.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/docs/STANDALONE_BUILD.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/docs/VERSION_MANAGEMENT.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/examples/README.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/examples/bge_icl_performance_benchmark.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/examples/bge_in_icl_phase3_demo.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/examples/csharp_example.cs +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/examples/path_filtering_demo.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/requirements-dev.txt +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/requirements-lock.txt +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/requirements.txt +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/scripts/backup/build-all-platforms.sh +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/scripts/backup/docker-build-all.sh +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/scripts/build.sh +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/scripts/dev-setup.sh +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/scripts/mcp-server.sh +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/scripts/prepare_release.sh +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/scripts/setup.sh +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/scripts/sync_version.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/scripts/test-examples.sh +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/scripts/update_version.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/scripts/validate.sh +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/spec.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tests/__init__.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tests/fixtures/cpp/Sample.cpp +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tests/fixtures/cpp/Sample.hpp +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tests/fixtures/csharp/Sample.cs +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tests/fixtures/java/Sample.java +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tests/fixtures/kotlin/Sample.kt +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tests/manual_test_modification.py +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/2025/2025-07-03-chunkhound-json-complete-config-storage.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/2025/2025-07-03-cli-info-command.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/2025/2025-07-03-consolidate-embedding-provider-creation.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/2025-01-09-consolidate-package-structure.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/2025-07-07-refactor-configuration-system.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/2025-07-08-bug-mcp-server-stderr-vscode-ubuntu.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/CLAUDE.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/closed/02-serialize-duckdb-operations.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/closed/03-consolidate-connection-management.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/closed/04-service-layer-pattern-override-architectural-violation.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/closed/07-duckdb-foreign-key-constraint-transaction-bug.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/closed/2025-01-07-duckdb-thread-safety-violation-freeze.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/closed/2025-01-07-lancedb-path-normalization-fix.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/closed/2025-01-07-lancedb-serial-executor-alignment.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/closed/2025-01-09-lancedb-storage-growth-no-garbage-collection.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/closed/2025-01-09-mcp-server-import-structure-fix.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/closed/2025-07-02-parser-architecture-inconsistencies.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/closed/2025-08-01-mcp-server-database-duplication-root-cause.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/closed/python-parser-cli-mcp-divergence.md +0 -0
- {chunkhound-2.4.2 → chunkhound-2.4.4}/tickets/closed/refactor-database-serial-executor.md +0 -0
|
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.4.4] - 2025-01-09
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Ubuntu TaskGroup crash fixed by removing problematic directory change in MCP launcher
|
|
14
|
+
|
|
15
|
+
## [2.4.3] - 2025-01-09
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
- MCP server now works correctly when launched from any directory, not just the project root
|
|
19
|
+
- Fixed path resolution inconsistencies that caused TaskGroup errors on Ubuntu deployments
|
|
20
|
+
|
|
10
21
|
## [2.4.2] - 2025-01-09
|
|
11
22
|
|
|
12
23
|
### Added
|
|
@@ -260,7 +271,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
260
271
|
|
|
261
272
|
For more information, visit: https://github.com/chunkhound/chunkhound
|
|
262
273
|
|
|
263
|
-
[Unreleased]: https://github.com/chunkhound/chunkhound/compare/v2.4.
|
|
274
|
+
[Unreleased]: https://github.com/chunkhound/chunkhound/compare/v2.4.4...HEAD
|
|
275
|
+
[2.4.4]: https://github.com/chunkhound/chunkhound/compare/v2.4.3...v2.4.4
|
|
276
|
+
[2.4.3]: https://github.com/chunkhound/chunkhound/compare/v2.4.2...v2.4.3
|
|
264
277
|
[2.4.2]: https://github.com/chunkhound/chunkhound/compare/v2.4.1...v2.4.2
|
|
265
278
|
[2.4.1]: https://github.com/chunkhound/chunkhound/compare/v2.4.0...v2.4.1
|
|
266
279
|
[2.4.0]: https://github.com/chunkhound/chunkhound/compare/v2.3.1...v2.4.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: chunkhound
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.4
|
|
4
4
|
Summary: Local-first semantic code search with vector and regex capabilities for AI assistants via MCP
|
|
5
5
|
Project-URL: Homepage, https://github.com/chunkhound/chunkhound
|
|
6
6
|
Project-URL: Repository, https://github.com/chunkhound/chunkhound
|
|
@@ -105,6 +105,12 @@ uv run chunkhound index
|
|
|
105
105
|
# 2. Start MCP server for AI assistants (auto-watches for changes)
|
|
106
106
|
uv run chunkhound mcp
|
|
107
107
|
|
|
108
|
+
# Work with any project directory - complete project scope control
|
|
109
|
+
uv run chunkhound mcp /path/to/your/project
|
|
110
|
+
# This sets database to /path/to/your/project/.chunkhound/db
|
|
111
|
+
# Searches for config at /path/to/your/project/.chunkhound.json
|
|
112
|
+
# Watches /path/to/your/project for changes
|
|
113
|
+
|
|
108
114
|
# Optional: Set OpenAI API key for semantic search
|
|
109
115
|
export CHUNKHOUND_EMBEDDING__API_KEY="sk-your-key-here"
|
|
110
116
|
|
|
@@ -114,17 +120,28 @@ uv run chunkhound index --config /path/to/different-config.json
|
|
|
114
120
|
|
|
115
121
|
### Automatic Configuration Detection
|
|
116
122
|
|
|
117
|
-
|
|
118
|
-
1. Looks for `.chunkhound.json` in that directory
|
|
119
|
-
2. Loads it if found (no `--config` flag needed)
|
|
120
|
-
3. Uses those settings for indexing
|
|
123
|
+
ChunkHound automatically detects and uses project configurations:
|
|
121
124
|
|
|
122
|
-
|
|
125
|
+
**For `index` command:**
|
|
123
126
|
```bash
|
|
124
127
|
cd /my/project # Has .chunkhound.json
|
|
125
128
|
uv run chunkhound index # Automatically uses /my/project/.chunkhound.json
|
|
126
129
|
```
|
|
127
130
|
|
|
131
|
+
**For `mcp` command with positional path:**
|
|
132
|
+
```bash
|
|
133
|
+
uv run chunkhound mcp /my/project
|
|
134
|
+
# Automatically uses /my/project/.chunkhound.json
|
|
135
|
+
# Sets database to /my/project/.chunkhound/db
|
|
136
|
+
# Watches /my/project for changes
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**For `mcp` command without path:**
|
|
140
|
+
```bash
|
|
141
|
+
cd /my/project # Has .chunkhound.json
|
|
142
|
+
uv run chunkhound mcp # Automatically uses /my/project/.chunkhound.json
|
|
143
|
+
```
|
|
144
|
+
|
|
128
145
|
## Features
|
|
129
146
|
|
|
130
147
|
**Always Available:**
|
|
@@ -157,6 +174,18 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
|
157
174
|
}
|
|
158
175
|
}
|
|
159
176
|
```
|
|
177
|
+
|
|
178
|
+
**For specific project directories:**
|
|
179
|
+
```json
|
|
180
|
+
{
|
|
181
|
+
"mcpServers": {
|
|
182
|
+
"chunkhound": {
|
|
183
|
+
"command": "uv",
|
|
184
|
+
"args": ["run", "chunkhound", "mcp", "/path/to/your/project"]
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
```
|
|
160
189
|
</details>
|
|
161
190
|
|
|
162
191
|
<details>
|
|
@@ -173,6 +202,18 @@ Add to `~/.claude.json`:
|
|
|
173
202
|
}
|
|
174
203
|
}
|
|
175
204
|
```
|
|
205
|
+
|
|
206
|
+
**For specific project directories:**
|
|
207
|
+
```json
|
|
208
|
+
{
|
|
209
|
+
"mcpServers": {
|
|
210
|
+
"chunkhound": {
|
|
211
|
+
"command": "uv",
|
|
212
|
+
"args": ["run", "chunkhound", "mcp", "/path/to/your/project"]
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
```
|
|
176
217
|
</details>
|
|
177
218
|
|
|
178
219
|
<details>
|
|
@@ -189,6 +230,18 @@ Add to `.vscode/mcp.json` in your project:
|
|
|
189
230
|
}
|
|
190
231
|
}
|
|
191
232
|
```
|
|
233
|
+
|
|
234
|
+
**For specific project directories:**
|
|
235
|
+
```json
|
|
236
|
+
{
|
|
237
|
+
"servers": {
|
|
238
|
+
"chunkhound": {
|
|
239
|
+
"command": "uv",
|
|
240
|
+
"args": ["run", "chunkhound", "mcp", "/path/to/your/project"]
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
```
|
|
192
245
|
</details>
|
|
193
246
|
|
|
194
247
|
<details>
|
|
@@ -205,6 +258,18 @@ Add to `.cursor/mcp.json` in your project:
|
|
|
205
258
|
}
|
|
206
259
|
}
|
|
207
260
|
```
|
|
261
|
+
|
|
262
|
+
**For specific project directories:**
|
|
263
|
+
```json
|
|
264
|
+
{
|
|
265
|
+
"mcpServers": {
|
|
266
|
+
"chunkhound": {
|
|
267
|
+
"command": "uv",
|
|
268
|
+
"args": ["run", "chunkhound", "mcp", "/path/to/your/project"]
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
```
|
|
208
273
|
</details>
|
|
209
274
|
|
|
210
275
|
<details>
|
|
@@ -221,6 +286,18 @@ Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
|
221
286
|
}
|
|
222
287
|
}
|
|
223
288
|
```
|
|
289
|
+
|
|
290
|
+
**For specific project directories:**
|
|
291
|
+
```json
|
|
292
|
+
{
|
|
293
|
+
"mcpServers": {
|
|
294
|
+
"chunkhound": {
|
|
295
|
+
"command": "uv",
|
|
296
|
+
"args": ["run", "chunkhound", "mcp", "/path/to/your/project"]
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
```
|
|
224
301
|
</details>
|
|
225
302
|
|
|
226
303
|
<details>
|
|
@@ -240,6 +317,21 @@ Add to settings.json (Preferences > Open Settings):
|
|
|
240
317
|
}
|
|
241
318
|
}
|
|
242
319
|
```
|
|
320
|
+
|
|
321
|
+
**For specific project directories:**
|
|
322
|
+
```json
|
|
323
|
+
{
|
|
324
|
+
"context_servers": {
|
|
325
|
+
"chunkhound": {
|
|
326
|
+
"source": "custom",
|
|
327
|
+
"command": {
|
|
328
|
+
"path": "uv",
|
|
329
|
+
"args": ["run", "chunkhound", "mcp", "/path/to/your/project"]
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
```
|
|
243
335
|
</details>
|
|
244
336
|
|
|
245
337
|
<details>
|
|
@@ -250,6 +342,12 @@ Go to Settings > Tools > AI Assistant > Model Context Protocol (MCP) and add:
|
|
|
250
342
|
- **Command**: uv
|
|
251
343
|
- **Arguments**: run chunkhound mcp
|
|
252
344
|
- **Working Directory**: (leave empty or set to project root)
|
|
345
|
+
|
|
346
|
+
**For specific project directories:**
|
|
347
|
+
- **Name**: chunkhound
|
|
348
|
+
- **Command**: uv
|
|
349
|
+
- **Arguments**: run chunkhound mcp /path/to/your/project
|
|
350
|
+
- **Working Directory**: (leave empty)
|
|
253
351
|
</details>
|
|
254
352
|
|
|
255
353
|
</details>
|
|
@@ -285,10 +383,24 @@ ChunkHound loads configuration in this order (highest priority first):
|
|
|
285
383
|
|
|
286
384
|
### Database Location
|
|
287
385
|
|
|
288
|
-
|
|
386
|
+
ChunkHound automatically determines the database location based on project scope:
|
|
289
387
|
|
|
290
|
-
|
|
388
|
+
**With positional path argument:**
|
|
389
|
+
```bash
|
|
390
|
+
uv run chunkhound mcp /my/project
|
|
391
|
+
# Database automatically created at: /my/project/.chunkhound/db
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
**Without positional path (current directory):**
|
|
395
|
+
```bash
|
|
396
|
+
cd /my/project
|
|
397
|
+
uv run chunkhound mcp
|
|
398
|
+
# Database created at: /my/project/.chunkhound/db
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
**Manual overrides** (in priority order):
|
|
291
402
|
- **Command line**: `--database-path /path/to/my-chunks`
|
|
403
|
+
- **Config file**: Add to `.chunkhound.json`: `{"database": {"path": "/path/to/.chunkhound.db"}}`
|
|
292
404
|
- **Environment variable**: `CHUNKHOUND_DATABASE__PATH="/path/to/.chunkhound.db"`
|
|
293
405
|
|
|
294
406
|
### Configuration File Format
|
|
@@ -571,6 +683,11 @@ ChunkHound indexes your codebase in three layers:
|
|
|
571
683
|
2. **Background scan** - MCP server checks for changes every 5 minutes
|
|
572
684
|
3. **Real-time updates** - File system events trigger immediate updates
|
|
573
685
|
|
|
686
|
+
**Project Scope Control:**
|
|
687
|
+
- `chunkhound mcp` - Uses current directory as project root
|
|
688
|
+
- `chunkhound mcp /path/to/project` - Uses specified path as project root
|
|
689
|
+
- Database, config, and watch paths all scoped to project root
|
|
690
|
+
|
|
574
691
|
**Processing pipeline:**
|
|
575
692
|
Scan → Parse → Index → Embed → Search
|
|
576
693
|
|
|
@@ -45,6 +45,12 @@ uv run chunkhound index
|
|
|
45
45
|
# 2. Start MCP server for AI assistants (auto-watches for changes)
|
|
46
46
|
uv run chunkhound mcp
|
|
47
47
|
|
|
48
|
+
# Work with any project directory - complete project scope control
|
|
49
|
+
uv run chunkhound mcp /path/to/your/project
|
|
50
|
+
# This sets database to /path/to/your/project/.chunkhound/db
|
|
51
|
+
# Searches for config at /path/to/your/project/.chunkhound.json
|
|
52
|
+
# Watches /path/to/your/project for changes
|
|
53
|
+
|
|
48
54
|
# Optional: Set OpenAI API key for semantic search
|
|
49
55
|
export CHUNKHOUND_EMBEDDING__API_KEY="sk-your-key-here"
|
|
50
56
|
|
|
@@ -54,17 +60,28 @@ uv run chunkhound index --config /path/to/different-config.json
|
|
|
54
60
|
|
|
55
61
|
### Automatic Configuration Detection
|
|
56
62
|
|
|
57
|
-
|
|
58
|
-
1. Looks for `.chunkhound.json` in that directory
|
|
59
|
-
2. Loads it if found (no `--config` flag needed)
|
|
60
|
-
3. Uses those settings for indexing
|
|
63
|
+
ChunkHound automatically detects and uses project configurations:
|
|
61
64
|
|
|
62
|
-
|
|
65
|
+
**For `index` command:**
|
|
63
66
|
```bash
|
|
64
67
|
cd /my/project # Has .chunkhound.json
|
|
65
68
|
uv run chunkhound index # Automatically uses /my/project/.chunkhound.json
|
|
66
69
|
```
|
|
67
70
|
|
|
71
|
+
**For `mcp` command with positional path:**
|
|
72
|
+
```bash
|
|
73
|
+
uv run chunkhound mcp /my/project
|
|
74
|
+
# Automatically uses /my/project/.chunkhound.json
|
|
75
|
+
# Sets database to /my/project/.chunkhound/db
|
|
76
|
+
# Watches /my/project for changes
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**For `mcp` command without path:**
|
|
80
|
+
```bash
|
|
81
|
+
cd /my/project # Has .chunkhound.json
|
|
82
|
+
uv run chunkhound mcp # Automatically uses /my/project/.chunkhound.json
|
|
83
|
+
```
|
|
84
|
+
|
|
68
85
|
## Features
|
|
69
86
|
|
|
70
87
|
**Always Available:**
|
|
@@ -97,6 +114,18 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
|
97
114
|
}
|
|
98
115
|
}
|
|
99
116
|
```
|
|
117
|
+
|
|
118
|
+
**For specific project directories:**
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"mcpServers": {
|
|
122
|
+
"chunkhound": {
|
|
123
|
+
"command": "uv",
|
|
124
|
+
"args": ["run", "chunkhound", "mcp", "/path/to/your/project"]
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
100
129
|
</details>
|
|
101
130
|
|
|
102
131
|
<details>
|
|
@@ -113,6 +142,18 @@ Add to `~/.claude.json`:
|
|
|
113
142
|
}
|
|
114
143
|
}
|
|
115
144
|
```
|
|
145
|
+
|
|
146
|
+
**For specific project directories:**
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"mcpServers": {
|
|
150
|
+
"chunkhound": {
|
|
151
|
+
"command": "uv",
|
|
152
|
+
"args": ["run", "chunkhound", "mcp", "/path/to/your/project"]
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
```
|
|
116
157
|
</details>
|
|
117
158
|
|
|
118
159
|
<details>
|
|
@@ -129,6 +170,18 @@ Add to `.vscode/mcp.json` in your project:
|
|
|
129
170
|
}
|
|
130
171
|
}
|
|
131
172
|
```
|
|
173
|
+
|
|
174
|
+
**For specific project directories:**
|
|
175
|
+
```json
|
|
176
|
+
{
|
|
177
|
+
"servers": {
|
|
178
|
+
"chunkhound": {
|
|
179
|
+
"command": "uv",
|
|
180
|
+
"args": ["run", "chunkhound", "mcp", "/path/to/your/project"]
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
132
185
|
</details>
|
|
133
186
|
|
|
134
187
|
<details>
|
|
@@ -145,6 +198,18 @@ Add to `.cursor/mcp.json` in your project:
|
|
|
145
198
|
}
|
|
146
199
|
}
|
|
147
200
|
```
|
|
201
|
+
|
|
202
|
+
**For specific project directories:**
|
|
203
|
+
```json
|
|
204
|
+
{
|
|
205
|
+
"mcpServers": {
|
|
206
|
+
"chunkhound": {
|
|
207
|
+
"command": "uv",
|
|
208
|
+
"args": ["run", "chunkhound", "mcp", "/path/to/your/project"]
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
```
|
|
148
213
|
</details>
|
|
149
214
|
|
|
150
215
|
<details>
|
|
@@ -161,6 +226,18 @@ Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
|
161
226
|
}
|
|
162
227
|
}
|
|
163
228
|
```
|
|
229
|
+
|
|
230
|
+
**For specific project directories:**
|
|
231
|
+
```json
|
|
232
|
+
{
|
|
233
|
+
"mcpServers": {
|
|
234
|
+
"chunkhound": {
|
|
235
|
+
"command": "uv",
|
|
236
|
+
"args": ["run", "chunkhound", "mcp", "/path/to/your/project"]
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
```
|
|
164
241
|
</details>
|
|
165
242
|
|
|
166
243
|
<details>
|
|
@@ -180,6 +257,21 @@ Add to settings.json (Preferences > Open Settings):
|
|
|
180
257
|
}
|
|
181
258
|
}
|
|
182
259
|
```
|
|
260
|
+
|
|
261
|
+
**For specific project directories:**
|
|
262
|
+
```json
|
|
263
|
+
{
|
|
264
|
+
"context_servers": {
|
|
265
|
+
"chunkhound": {
|
|
266
|
+
"source": "custom",
|
|
267
|
+
"command": {
|
|
268
|
+
"path": "uv",
|
|
269
|
+
"args": ["run", "chunkhound", "mcp", "/path/to/your/project"]
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
```
|
|
183
275
|
</details>
|
|
184
276
|
|
|
185
277
|
<details>
|
|
@@ -190,6 +282,12 @@ Go to Settings > Tools > AI Assistant > Model Context Protocol (MCP) and add:
|
|
|
190
282
|
- **Command**: uv
|
|
191
283
|
- **Arguments**: run chunkhound mcp
|
|
192
284
|
- **Working Directory**: (leave empty or set to project root)
|
|
285
|
+
|
|
286
|
+
**For specific project directories:**
|
|
287
|
+
- **Name**: chunkhound
|
|
288
|
+
- **Command**: uv
|
|
289
|
+
- **Arguments**: run chunkhound mcp /path/to/your/project
|
|
290
|
+
- **Working Directory**: (leave empty)
|
|
193
291
|
</details>
|
|
194
292
|
|
|
195
293
|
</details>
|
|
@@ -225,10 +323,24 @@ ChunkHound loads configuration in this order (highest priority first):
|
|
|
225
323
|
|
|
226
324
|
### Database Location
|
|
227
325
|
|
|
228
|
-
|
|
326
|
+
ChunkHound automatically determines the database location based on project scope:
|
|
229
327
|
|
|
230
|
-
|
|
328
|
+
**With positional path argument:**
|
|
329
|
+
```bash
|
|
330
|
+
uv run chunkhound mcp /my/project
|
|
331
|
+
# Database automatically created at: /my/project/.chunkhound/db
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
**Without positional path (current directory):**
|
|
335
|
+
```bash
|
|
336
|
+
cd /my/project
|
|
337
|
+
uv run chunkhound mcp
|
|
338
|
+
# Database created at: /my/project/.chunkhound/db
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
**Manual overrides** (in priority order):
|
|
231
342
|
- **Command line**: `--database-path /path/to/my-chunks`
|
|
343
|
+
- **Config file**: Add to `.chunkhound.json`: `{"database": {"path": "/path/to/.chunkhound.db"}}`
|
|
232
344
|
- **Environment variable**: `CHUNKHOUND_DATABASE__PATH="/path/to/.chunkhound.db"`
|
|
233
345
|
|
|
234
346
|
### Configuration File Format
|
|
@@ -511,6 +623,11 @@ ChunkHound indexes your codebase in three layers:
|
|
|
511
623
|
2. **Background scan** - MCP server checks for changes every 5 minutes
|
|
512
624
|
3. **Real-time updates** - File system events trigger immediate updates
|
|
513
625
|
|
|
626
|
+
**Project Scope Control:**
|
|
627
|
+
- `chunkhound mcp` - Uses current directory as project root
|
|
628
|
+
- `chunkhound mcp /path/to/project` - Uses specified path as project root
|
|
629
|
+
- Database, config, and watch paths all scoped to project root
|
|
630
|
+
|
|
514
631
|
**Processing pipeline:**
|
|
515
632
|
Scan → Parse → Index → Embed → Search
|
|
516
633
|
|
|
@@ -21,16 +21,31 @@ def mcp_command(args: argparse.Namespace) -> None:
|
|
|
21
21
|
)
|
|
22
22
|
cmd = [sys.executable, str(mcp_launcher_path)]
|
|
23
23
|
|
|
24
|
-
#
|
|
25
|
-
if args.db is not None:
|
|
26
|
-
cmd.extend(["--db", str(args.db)])
|
|
27
|
-
|
|
28
|
-
# Pass the path argument as watch-path if provided and not current directory
|
|
24
|
+
# Handle positional path argument for complete project scope control
|
|
29
25
|
if hasattr(args, 'path') and args.path != Path("."):
|
|
30
|
-
|
|
26
|
+
project_path = args.path.resolve()
|
|
27
|
+
|
|
28
|
+
# Set database path to <path>/.chunkhound/db if not explicitly provided
|
|
29
|
+
if args.db is None:
|
|
30
|
+
db_path = project_path / ".chunkhound" / "db"
|
|
31
|
+
cmd.extend(["--db", str(db_path)])
|
|
32
|
+
else:
|
|
33
|
+
cmd.extend(["--db", str(args.db)])
|
|
34
|
+
|
|
35
|
+
# Set watch path to the project directory
|
|
36
|
+
cmd.extend(["--watch-path", str(project_path)])
|
|
37
|
+
|
|
38
|
+
else:
|
|
39
|
+
# Only pass --db argument if explicitly provided, otherwise let unified config handle it
|
|
40
|
+
if args.db is not None:
|
|
41
|
+
cmd.extend(["--db", str(args.db)])
|
|
31
42
|
|
|
32
43
|
# Inherit current environment - the centralized config will handle API keys
|
|
33
44
|
env = os.environ.copy()
|
|
45
|
+
|
|
46
|
+
# Set environment variable for config file search in project directory if path provided
|
|
47
|
+
if hasattr(args, 'path') and args.path != Path("."):
|
|
48
|
+
env["CHUNKHOUND_PROJECT_ROOT"] = str(args.path.resolve())
|
|
34
49
|
|
|
35
50
|
process = subprocess.run(
|
|
36
51
|
cmd,
|
|
@@ -61,6 +61,11 @@ class Config(BaseModel):
|
|
|
61
61
|
self._deep_merge(config_data, file_config)
|
|
62
62
|
|
|
63
63
|
# 3. Check for .chunkhound.json in target directory
|
|
64
|
+
# First check CHUNKHOUND_PROJECT_ROOT if set (from positional path argument)
|
|
65
|
+
project_root = os.environ.get("CHUNKHOUND_PROJECT_ROOT")
|
|
66
|
+
if project_root:
|
|
67
|
+
target_dir = Path(project_root)
|
|
68
|
+
|
|
64
69
|
if target_dir and target_dir.exists():
|
|
65
70
|
local_config_path = target_dir / ".chunkhound.json"
|
|
66
71
|
if local_config_path.exists():
|
|
@@ -385,18 +385,15 @@ async def server_lifespan(server: Server) -> AsyncIterator[dict]:
|
|
|
385
385
|
# )
|
|
386
386
|
|
|
387
387
|
pass
|
|
388
|
-
# Get base directory from environment or use current working directory
|
|
389
|
-
base_directory = Path(os.getcwd())
|
|
390
|
-
|
|
391
388
|
# Use the SAME IndexingCoordinator instance from _database to ensure deduplication
|
|
392
389
|
# This prevents duplicate entries by sharing the same ChunkCacheService state
|
|
393
390
|
indexing_coordinator = _database._indexing_coordinator
|
|
394
391
|
|
|
395
392
|
# Create periodic indexer with environment configuration
|
|
393
|
+
# Let from_environment() handle path resolution using the same logic as FileWatcherManager
|
|
396
394
|
_periodic_indexer = PeriodicIndexManager.from_environment(
|
|
397
395
|
indexing_coordinator=indexing_coordinator,
|
|
398
396
|
task_coordinator=_task_coordinator,
|
|
399
|
-
base_directory=base_directory,
|
|
400
397
|
)
|
|
401
398
|
|
|
402
399
|
# Start periodic indexer (immediate startup scan + periodic scans)
|
|
@@ -70,7 +70,7 @@ class PeriodicIndexManager:
|
|
|
70
70
|
cls,
|
|
71
71
|
indexing_coordinator,
|
|
72
72
|
task_coordinator: TaskCoordinator,
|
|
73
|
-
base_directory: Path,
|
|
73
|
+
base_directory: Path | None = None,
|
|
74
74
|
) -> "PeriodicIndexManager":
|
|
75
75
|
"""Create periodic index manager from environment variables.
|
|
76
76
|
|
|
@@ -78,11 +78,12 @@ class PeriodicIndexManager:
|
|
|
78
78
|
CHUNKHOUND_PERIODIC_INDEX_INTERVAL: Scan interval in seconds (default: 300)
|
|
79
79
|
CHUNKHOUND_PERIODIC_BATCH_SIZE: Files per batch (default: 10)
|
|
80
80
|
CHUNKHOUND_PERIODIC_INDEX_ENABLED: Enable/disable (default: true)
|
|
81
|
+
CHUNKHOUND_WATCH_PATHS: Paths to watch (defaults to project root)
|
|
81
82
|
|
|
82
83
|
Args:
|
|
83
84
|
indexing_coordinator: IndexingCoordinator instance
|
|
84
85
|
task_coordinator: TaskCoordinator instance
|
|
85
|
-
base_directory: Base directory to scan
|
|
86
|
+
base_directory: Base directory to scan (defaults to same logic as FileWatcherManager)
|
|
86
87
|
|
|
87
88
|
Returns:
|
|
88
89
|
Configured PeriodicIndexManager instance
|
|
@@ -96,6 +97,24 @@ class PeriodicIndexManager:
|
|
|
96
97
|
os.getenv("CHUNKHOUND_PERIODIC_INDEX_ENABLED", "true").lower() == "true"
|
|
97
98
|
)
|
|
98
99
|
|
|
100
|
+
# Use the same path resolution logic as FileWatcherManager
|
|
101
|
+
if base_directory is None:
|
|
102
|
+
try:
|
|
103
|
+
from .utils.project_detection import get_project_watch_paths
|
|
104
|
+
watch_paths = get_project_watch_paths()
|
|
105
|
+
base_directory = watch_paths[0] if watch_paths else Path.cwd()
|
|
106
|
+
except ImportError:
|
|
107
|
+
# Fallback to environment variable check
|
|
108
|
+
paths_env = os.environ.get("CHUNKHOUND_WATCH_PATHS", "")
|
|
109
|
+
if paths_env:
|
|
110
|
+
path_strings = [p.strip() for p in paths_env.split(",") if p.strip()]
|
|
111
|
+
if path_strings:
|
|
112
|
+
base_directory = Path(path_strings[0]).resolve()
|
|
113
|
+
else:
|
|
114
|
+
base_directory = Path.cwd()
|
|
115
|
+
else:
|
|
116
|
+
base_directory = Path.cwd()
|
|
117
|
+
|
|
99
118
|
return cls(
|
|
100
119
|
indexing_coordinator=indexing_coordinator,
|
|
101
120
|
task_coordinator=task_coordinator,
|
|
@@ -102,11 +102,9 @@ def main():
|
|
|
102
102
|
# Set up watch paths for filesystem monitoring
|
|
103
103
|
setup_watch_paths(args)
|
|
104
104
|
|
|
105
|
-
#
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if watch_path.exists() and watch_path.is_dir():
|
|
109
|
-
os.chdir(watch_path)
|
|
105
|
+
# Note: Removed os.chdir() to avoid breaking imports and permissions issues
|
|
106
|
+
# The watch path is already handled via CHUNKHOUND_WATCH_PATHS environment variable
|
|
107
|
+
# and all path operations should use absolute paths
|
|
110
108
|
|
|
111
109
|
# Import and run the MCP entry point
|
|
112
110
|
try:
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "chunkhound"
|
|
7
|
-
version = "2.4.
|
|
7
|
+
version = "2.4.4"
|
|
8
8
|
description = "Local-first semantic code search with vector and regex capabilities for AI assistants via MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|