feat: add langchain-mongodb-deepagents-vfs package (#415)
## Summary JIRA issue: [INTPYTHON-1028](https://jira.mongodb.org/browse/INTPYTHON-1028) Adds a new library, **`langchain-mongodb-deepagents-vfs`**: a MongoDB Atlas-backed virtual filesystem search adapter for [LangChain DeepAgents](https://github.com/langchain-ai/deepagents). It implements DeepAgents' `BackendProtocol` and splits work by operation: - **Search operations** (`grep`, `glob`, `ls`) are routed through MongoDB Atlas — vector search, full-text search, and hybrid `$rankFusion`. - **File operations** (`read`, `write`, `edit`, `upload_files`, `download_files`) are forwarded directly to S3. A change-detection sync layer (initial sync + a polling/SQS watcher) keeps the Atlas search index in step with the S3 bucket. ## What's included - `langchain_mongodb_deepagents_vfs/` — backend, S3 adapter, search router, chunker, embedder, index manager, sync + watchers (polling / SQS). - Unit / integration / e2e test suites (unit + integration run without real credentials via `mongomock` + `moto`). - `pyproject.toml`, `justfile`, `README.md`, `CHANGELOG.md` following the existing per-lib conventions. - Registered in `.github/scripts/check_diff.py` `LIB_DIRS` and the root `pyproject.toml` `[tool.uv.sources]`. ## Local verification Run from `libs/langchain-mongodb-deepagents-vfs`: | Check | Result | |---|---| | `ruff check` | ✅ pass | | `ruff format --check` | ✅ pass | | `mypy --strict` | ✅ pass (16 source files) | | Unit tests | ✅ 99 passed | | `uv lock --check` | ✅ in sync | | Wheel build + `twine check` | ✅ pass (`test_distribution.py`) | ## ⚠️ Needs a maintainer decision: Python 3.10 CI matrix This package depends on `deepagents`, which requires `>=3.11,<4.0`. Its `requires-python` is therefore `>=3.11` and it **cannot** support Python 3.10 like the other three libs. The shared CI matrix in `.github/workflows/_test.yml` and `_lint.yml` is hardcoded to `["3.10", "3.13"]` for **every** lib, so the 3.10 job will fail this package at the install step (before any test runs): ``` $ uv sync --frozen --python 3.10 error: The requested interpreter resolved to Python 3.10.20, which is incompatible with the project's Python requirement: `>=3.11` # exit code 2 ``` (The 3.13 job installs and passes cleanly.) I did **not** touch the shared workflow files, since the fix is a repo-wide policy call. Two options: 1. **Per-library Python matrix** — test this lib on 3.11+ only, leave the others on 3.10 + 3.13. 2. **Drop 3.10 repo-wide** — bump the minimum to 3.11 everywhere (breaking for the other libs' 3.10 users). Happy to implement whichever you prefer. ## Notes / smaller items - E2E MongoDB command-log fixture now writes to pytest's session tmp dir instead of the CWD, so the "tests did not create any additional files" CI gate stays green; added `mongo-e2e-*.log` to `.gitignore` as a backstop. - `CHANGELOG.md` uses a simplified heading style vs. the sibling `## Changes in version X (date)` convention — happy to align if preferred. - No `py.typed` yet (matches `langgraph-store-mongodb`); can add if you want type info shipped to consumers. --------- Signed-off-by: Casey Clements <casey.clements@mongodb.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Casey Clements <casey.clements@mongodb.com>
A
Anuj Panchal committed
0b908053afe18a3a237caf4418b41fe241dac4c8
Parent: 52c6ba2
Committed by GitHub <noreply@github.com>
on 8/8/2026, 12:19:30 AM