Drive source: Google Drive + OneDrive с file-watcher
## Что это
Drive source поддерживает Google Drive и OneDrive (M365). После OAuth пользователь выбирает folders для watch. ROX отслеживает изменения через delta-API (Google `changes.list`, OneDrive `delta`), хранит cursor в SQLite. Новый/изменённый файл → ingest pipeline: extract text (PDF, docx, xlsx, txt, md), сгенерировать summary, индексировать в local vector store.
Локальные источники (Obsidian vault, любая папка) — через `chokidar` file-watcher с debounce 500ms. Бинарные большие файлы (>100MB) скипаются с warning. Symlinks не следуются.
Компоненты: `@rox-one/shared/sources/Drive`, `@rox-one/shared/sources/OneDrive`, `@rox-one/shared/local-sources/{Obsidian,Folder}`. Vector store — local через `firnflow`-style tiered storage.
## Зачем
Documents — основной артефакт knowledge work. Без drive integration агент не знает про драфты, спеки, contracts, и пользователь вынужден руками копировать содержимое. File-watcher делает knowledge-base самообновляющейся без явного re-sync.
## Источники вдохновения
- [nimbusdotstorage/Nimbus](https://github.com/nimbusdotstorage/Nimbus) — unified file storage (Drive alternative)
- [tursodatabase/agentfs](https://github.com/tursodatabase/agentfs) — agent-native filesystem (SQLite)
- [Developer-Mike/obsidian-advanced-canvas](https://github.com/Developer-Mike/obsidian-advanced-canvas) — Obsidian plugin architecture для local source
- [gordonmurray/firnflow](https://github.com/gordonmurray/firnflow) — multi-tenant vector + full-text search с tiered storage
## 🔗 Linear
- [PZD-440](https://linear.app/kuhjie/issue/PZD-440) — backing ticket