Compare commits
merge into: eSlider/2dph:main
eSlider/2dph:main
eSlider/2dph:feat/m365-mail-etl
eSlider/2dph:feat/d24-asof-stack
eSlider/2dph:feat/cli-flaggy
eSlider/2dph:feat/contradict
eSlider/2dph:feat/duckstats
eSlider/2dph:feat/ocr
eSlider/2dph:feat/ci-eval
eSlider/2dph:feat/facts-corpus
eSlider/2dph:feat/search-hop
eSlider/2dph:feat/brain-add
eSlider/2dph:feat/v1-detective-epic
eSlider/2dph:feat/docs-portable
eSlider/2dph:feat/markdown-import-go
eSlider/2dph:feat/brain-web-escalate
eSlider/2dph:feat/web-search-go
eSlider/2dph:feat/git-gogit
eSlider/2dph:feat/skills-brain
eSlider/2dph:feat/serve-inprocess
eSlider/2dph:feat/d14-index-import
eSlider/2dph:feat/chats-d14
eSlider/2dph:feat/brain-serve-go
eSlider/2dph:feat/brain-layout-gowork
eSlider/2dph:feat/gitea-issue-board
eSlider/2dph:v0.23.0
eSlider/2dph:v0.22.0
eSlider/2dph:v0.21.0
eSlider/2dph:v0.15.1
eSlider/2dph:v0.15.0
eSlider/2dph:v0.14.0
eSlider/2dph:v0.13.0
eSlider/2dph:v0.12.0
eSlider/2dph:v0.11.1
eSlider/2dph:v0.11.0
eSlider/2dph:v0.10.0
eSlider/2dph:v0.9.0
eSlider/2dph:v0.8.0
eSlider/2dph:v0.7.0
eSlider/2dph:v0.6.0
eSlider/2dph:v0.5.0
eSlider/2dph:v0.4.1
eSlider/2dph:v0.4.0
eSlider/2dph:v0.3.0
eSlider/2dph:v0.2.2
eSlider/2dph:v0.2.1
eSlider/2dph:v0.2.0
eSlider/2dph:v0.1.6
eSlider/2dph:v0.1.5
eSlider/2dph:v0.1.4
eSlider/2dph:v0.1.3
eSlider/2dph:v0.1.2
eSlider/2dph:v0.1.1
eSlider/2dph:v0.1.0
..
pull from: eSlider/2dph:feat/m365-mail-etl
eSlider/2dph:main
eSlider/2dph:feat/m365-mail-etl
eSlider/2dph:feat/d24-asof-stack
eSlider/2dph:feat/cli-flaggy
eSlider/2dph:feat/contradict
eSlider/2dph:feat/duckstats
eSlider/2dph:feat/ocr
eSlider/2dph:feat/ci-eval
eSlider/2dph:feat/facts-corpus
eSlider/2dph:feat/search-hop
eSlider/2dph:feat/brain-add
eSlider/2dph:feat/v1-detective-epic
eSlider/2dph:feat/docs-portable
eSlider/2dph:feat/markdown-import-go
eSlider/2dph:feat/brain-web-escalate
eSlider/2dph:feat/web-search-go
eSlider/2dph:feat/git-gogit
eSlider/2dph:feat/skills-brain
eSlider/2dph:feat/serve-inprocess
eSlider/2dph:feat/d14-index-import
eSlider/2dph:feat/chats-d14
eSlider/2dph:feat/brain-serve-go
eSlider/2dph:feat/brain-layout-gowork
eSlider/2dph:feat/gitea-issue-board
eSlider/2dph:v0.23.0
eSlider/2dph:v0.22.0
eSlider/2dph:v0.21.0
eSlider/2dph:v0.15.1
eSlider/2dph:v0.15.0
eSlider/2dph:v0.14.0
eSlider/2dph:v0.13.0
eSlider/2dph:v0.12.0
eSlider/2dph:v0.11.1
eSlider/2dph:v0.11.0
eSlider/2dph:v0.10.0
eSlider/2dph:v0.9.0
eSlider/2dph:v0.8.0
eSlider/2dph:v0.7.0
eSlider/2dph:v0.6.0
eSlider/2dph:v0.5.0
eSlider/2dph:v0.4.1
eSlider/2dph:v0.4.0
eSlider/2dph:v0.3.0
eSlider/2dph:v0.2.2
eSlider/2dph:v0.2.1
eSlider/2dph:v0.2.0
eSlider/2dph:v0.1.6
eSlider/2dph:v0.1.5
eSlider/2dph:v0.1.4
eSlider/2dph:v0.1.3
eSlider/2dph:v0.1.2
eSlider/2dph:v0.1.1
eSlider/2dph:v0.1.0
2
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
b612d3cc97 |
feat(mail): adapt M365 ETL loop for OO+Gmail bots.
Default compose mail-sync to onlyoffice,gmail every 300s with import on new mail; gate full --rebuild behind MAIL_SYNC_INDEX. Fix mail-build stage order and add bin/stack/start-mail-sync. |
||
|
|
5ccca2fac9 |
feat(mail): add Microsoft 365 Graph sync source with delta state
Adds a GET-only Microsoft Graph source to bin/mail/sync (client-credentials, delta query). Wires it into the CLI (--source m365), the worker pool and the compose stack: - m365.go: M365Client (token cache, delta pagination, message normalization, attachment download) + m365Source adapter (per-mailbox folders + delta link) - sync.go: M365Credentials in SyncConfig; Committer interface so delta links only advance after a fully successful run (no skips on failure) - cli.go: --source m365 with M365_/MS_ env passthrough - Dockerfile: mail-build stage produces /mail-sync into the index image - docker-entrypoint: mail-sync loop (sync -> import -> index, default 10s) - compose.yaml: mail-sync service (index image, kb-var volume, secrets ro) |