diff --git a/evals/wiring.py b/evals/wiring.py index 8e53944..ea49a93 100644 --- a/evals/wiring.py +++ b/evals/wiring.py @@ -204,22 +204,28 @@ def w4_context_protocol_shape() -> None: def w5_gdrive_uses_alldrives_subclass() -> None: - """GDrive provider must use `AllDrivesGoogleDriveTools`, not bare `GoogleDriveTools`. - - The bare upstream toolkit queries `corpora=user` and misses every file - the SA doesn't own directly (shared folders, Shared Drives). Regressing - to bare `GoogleDriveTools` silently breaks every real deployment, so - pin the subclass here. + """GDrive provider must cover Shared Drives, not just user-owned files. + + A bare ``corpora=user`` toolkit misses every file the service account + doesn't own directly (shared folders, Shared Drives). As of agno 2.7 the + dedicated ``AllDrivesGoogleDriveTools`` subclass was folded into + ``GoogleDriveTools`` via the ``corpora`` / ``supports_all_drives`` / + ``include_items_from_all_drives`` params, and ``GDriveContextProvider`` + defaults them to full-drive coverage — so pin those flags here instead of + the (now-removed) subclass. """ from agno.context.gdrive import GDriveContextProvider - from agno.context.gdrive.tools import AllDrivesGoogleDriveTools provider = GDriveContextProvider(service_account_path="/tmp/eval-wiring-stub.json") toolkit = provider._ensure_tools() - if not isinstance(toolkit, AllDrivesGoogleDriveTools): + missing = [ + flag for flag in ("supports_all_drives", "include_items_from_all_drives") if not getattr(toolkit, flag, False) + ] + if missing or getattr(toolkit, "corpora", None) != "allDrives": raise AssertionError( - f"GDriveContextProvider._ensure_tools() returned {type(toolkit).__name__}; " - f"expected AllDrivesGoogleDriveTools so shared-folder / Shared-Drive files are visible" + "GDriveContextProvider toolkit is not configured for Shared-Drive coverage " + f"(corpora={getattr(toolkit, 'corpora', None)!r}, missing flags={missing}); " + "expected corpora='allDrives' + supports_all_drives + include_items_from_all_drives" ) diff --git a/pyproject.toml b/pyproject.toml index 073b7d8..51ca4e9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ license-files = ["LICENSE"] authors = [{ name = "Agno", email = "hello@agno.com" }] dependencies = [ - "agno[os,slack]", + "agno[os,slack]==2.7.0", "aiohttp", "google-api-python-client", "google-auth-httplib2", diff --git a/railway.json b/railway.json index dbbcb53..ee7830a 100644 --- a/railway.json +++ b/railway.json @@ -6,7 +6,7 @@ }, "deploy": { "runtime": "V2", - "numReplicas": 2, + "numReplicas": 1, "startCommand": "uvicorn app.main:app --host 0.0.0.0 --port 8000", "sleepApplication": false, "useLegacyStacker": false, diff --git a/requirements.txt b/requirements.txt index e7566f5..2838ed4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ # This file was autogenerated by uv via the following command: -# ./scripts/generate_requirements.sh upgrade -agno==2.6.4 +# ./scripts/generate_requirements.sh +agno==2.7.0 +agnoctl==0.1.0 aiohappyeyeballs==2.6.1 aiohttp==3.13.5 aiosignal==1.4.0 @@ -15,16 +16,9 @@ click==8.3.3 croniter==6.2.2 cryptography==47.0.0 distro==1.9.0 -dnspython==2.8.0 docstring-parser==0.18.0 -email-validator==2.3.0 fastapi==0.136.1 -fastapi-cli==0.0.24 -fastapi-cloud-cli==0.17.1 -fastar==0.11.0 frozenlist==1.8.0 -gitdb==4.0.12 -gitpython==3.1.48 google-api-core==2.30.3 google-api-python-client==2.194.0 google-auth==2.49.2 @@ -36,18 +30,15 @@ h2==4.3.0 hpack==4.1.0 httpcore==1.0.9 httplib2==0.31.2 -httptools==0.7.1 httpx==0.28.1 httpx-sse==0.4.3 hyperframe==6.1.0 idna==3.13 importlib-metadata==8.7.1 -jinja2==3.1.6 jiter==0.14.0 jsonschema==4.26.0 jsonschema-specifications==2025.9.1 markdown-it-py==4.0.0 -markupsafe==3.0.3 mcp==1.27.0 mdurl==0.1.2 multidict==6.7.1 @@ -74,7 +65,6 @@ pyasn1-modules==0.4.2 pycparser==3.0 pydantic==2.13.3 pydantic-core==2.46.3 -pydantic-extra-types==2.11.1 pydantic-settings==2.14.0 pygments==2.20.0 pyjwt==2.12.1 @@ -88,14 +78,10 @@ referencing==0.37.0 requests==2.33.1 requests-oauthlib==2.0.0 rich==15.0.0 -rich-toolkit==0.19.7 -rignore==0.7.6 rpds-py==0.30.0 -sentry-sdk==2.58.0 shellingham==1.5.4 six==1.17.0 slack-sdk==3.41.0 -smmap==5.0.3 sniffio==1.3.1 sqlalchemy==2.0.49 sse-starlette==3.4.1 @@ -107,8 +93,6 @@ typing-inspection==0.4.2 uritemplate==4.2.0 urllib3==2.6.3 uvicorn==0.46.0 -uvloop==0.22.1 -watchfiles==1.1.1 websockets==16.0 wrapt==1.17.3 yarl==1.23.0