Adapt PR #28 to the current connectors and sync lifecycle. Add v1 and
Bearer authentication, context-path support, robust pagination, and
stable names for colliding Confluence page titles. Preserve existing
single-source paths, macro extraction, and empty-page warnings.
Combine configured sources into one KB-wide manifest for CLI, scheduled,
and webhook syncs. Keep per-source credentials, filters, and schedules;
validate destination paths and close connectors on failed scans before
allowing a diff. Document target-path and shared-KB configuration, and
include server response details in upload errors.
Validated with 39 passing tests, git diff --check, and uv build.
Co-authored-by: tedk0n <4rfer0@gmail.com>
- Upgrade Docker base image to python:3.14-alpine3.23
- Use Astral uv for multi-stage dependency installs and virtual env management
- Switch to running under non-root appuser (UID/GID 1000)
- Replace healthcheck curl command with wget to support Alpine
- Update docker-compose examples in README.md and docs/guide.md
Add SHAREPOINT_CERTIFICATE_PATH as a secure alternative to
SHAREPOINT_CLIENT_SECRET for authenticating with SharePoint via
Microsoft Graph API.
- JWT assertion flow using cryptography + PyJWT
- SHAREPOINT_CERTIFICATE_PASSWORD for encrypted PEM keys
- Mutual exclusivity validation (secret vs cert)
- New optional extra: pip install oikb[sharepoint-cert]
Closes#3
validate --deep pings Open WebUI API to verify connectivity, API key
validity, and that each KB ID exists. Catches config errors before
deployment. Also applies defaults and env var interpolation in
validate (was missing).
docker-compose.yaml updated from stale watch mode to production
daemon mode with healthcheck, LOG_FORMAT, and OIKB_API_KEY.