feat: restructure as PyPI package with src layout - #33
Merged
Conversation
Reorganize the project into a proper Python package installable via `pip install chunksilo`, while keeping GitHub release bundles intact. - Move source files into src/chunksilo/ (src layout) - Split chunksilo.py into search.py (core pipeline) + server.py (MCP wrapper) - Add cli.py with `search_docs` console_scripts entry point - Make confluence support optional via `pip install chunksilo[confluence]` - Use requirements.txt as single source of truth for dependencies (dynamic) - Update all tests, CI workflows, and bundle scripts for new structure - Add PyPI publish job to manual-release workflow Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 72b1d6759c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Code reviewNo issues found. Checked for bugs and CLAUDE.md compliance. |
run_server's config_path argument only set CHUNKSILO_CONFIG after cfgload.CONFIG_PATH was already computed at import time, so the custom path was silently ignored. Store it in a module-level variable and forward it to run_search via the search_docs MCP tool. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…leanup The publish_pypi job was building the package with the hardcoded version from pyproject.toml instead of the dynamically computed release version. Now injects the computed version into pyproject.toml and __init__.py before building. Also removes the artifact cleanup step which was deleting all repo artifacts indiscriminately. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Code reviewNo issues found. Checked for bugs and CLAUDE.md compliance. |
Add config search order to --help epilog and log the resolved config path at startup so users know which file is in effect. Also rename the CLI entry point from search_docs to chunksilo and add __main__.py for python -m support. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Suppress diagnostic messages (model loading, search stats) by default; show them with -v/--verbose. Simplify terminal output format and fix BM25 log to report post-filter match count instead of raw candidates. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Set TOKENIZERS_PARALLELISM=false early in both CLI and MCP server entry points to prevent the HuggingFace fork-safety warning. Also consolidates --build-index and --download-models into the main CLI and refactors build_index() to accept config_path directly. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add chunksilo-mcp console script in pyproject.toml - Restructure server.py to defer side effects to main() - Remove stderr logging from MCP server (file-only for clean stdio) - Fix CLI logging to use stderr instead of stdout - Update README with Claude Code, Claude Desktop configuration examples - Replace references to non-existent chunksilo.py with new commands Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Restructure installation section to support both PyPI users and air-gapped environments. Add dual command examples throughout for pip-installed vs offline bundle paths, update all MCP client configs with both methods, and document the Confluence optional dependency. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix offline default: document actual default (false) instead of true - Add CLI Usage section documenting all options (--json, --verbose, --download-models, --date-from, --date-to) - Correct model download size from ~500MB to ~250MB - Add note about first-run pause during model download - Clarify PyPI vs offline bundle behavior in troubleshooting Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove offline=True argument from build_index() calls as the parameter was removed (offline setting is now read from config) - Replace search_docs import with run_search in test_system.py since search_docs is not exported at module level - Simplify test_query to use synchronous run_search directly Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace search_docs import with run_search from chunksilo.search since search_docs is not exported at module level (defined inside _create_server) - Make evaluate_query_with_retriever() and evaluate_query() synchronous - Make run_rag_metrics_tests() synchronous and remove asyncio.run() from main() - Remove unused asyncio import Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reorganize the project into a proper Python package installable via
pip install chunksilo, while keeping GitHub release bundles intact.search_docsconsole_scripts entry pointpip install chunksilo[confluence]