Summary
- Adds SharePoint drive-scoped driveItem search (
/drives/{drive-id}/root/search and /sites/{site-id}/drive/root/search) separate from the existing SharePoint REST/KQL search_query action.
- Adds a shared Excel
DeleteWorkbookRange action with drive_id/site_id support and registers a SharePoint-facing alias so OneDrive can reuse the same implementation shape.
- Adds a constrained SharePoint Graph batch action for
POST /$batch with method whitelist, relative URL prefix validation, request cap of 20, duplicate/dependency validation, and blocked unsafe per-request headers.
- Leaves the SharePoint REST list-item gaps (
list_guid alternatives) out of this PR; recommend a separate PR/product decision.
Linear: https://linear.app/composio/issue/PLEN-2474/coverage-gaps-on-ms-tools-aws-reported
Coordination
Posted in the Cortex Slack thread before implementing range-delete to coordinate with the parallel OneDrive worker (jobw5vvu) and asked them to reuse the shared Excel action/shape instead of creating a divergent duplicate.
Strategic note
This PR adds Graph-preferred actions, but SharePoint toolkit auth/base URL is still primarily SharePoint REST (https://{tenant}.sharepoint.com/_api). The AWS geo-site ask likely needs a product decision for a fully Graph-backed SharePoint auth/toolkit path; avoid over-investing further in REST-only patches until that is decided.
Tests
uv run pytest -q tests/test_apps/test_share_point/test_graph_drive_actions.py
uv run pytest -q tests/test_apps/test_share_point/test_graph_drive_actions.py tests/test_apps/test_share_point/test_site_name.py
MYPY_DIFF_ONLY=1 make chk
make snt
make chk-app APP=apps/share_point
make chk-app APP=apps/excel
Notes on unavailable/full checks
- Exact npm scripts requested by project boilerplate are not defined in this repo (
npm run typecheck, npm run lint, npm test each reports missing script).
make type-check currently fails before reaching these changes because JS dependencies such as @composiohq/auth-config/Node typings are not installed in this worktree.
- A full non-diff
make chk was attempted; it exhausted local disk during the repo-wide mypy cache after also reporting missing generated serverless protobuf modules. Diff/app-scoped checks above pass.