Skip to content

feat(timmy): Confluence and OneDrive content providers #249

@ericfitz

Description

@ericfitz

Summary

Implement delegated provider infrastructure and Confluence, OneDrive/SharePoint, and Google Workspace delegated content providers, building on the infrastructure established in #232.

Depends on: #232 (content provider infrastructure + Google Drive)
Design spec: Infrastructure defined in 2026-04-08-content-providers-design.md

Scope

Delegated Provider Infrastructure (from #232 design spec Phase 4)

Build the per-user OAuth token infrastructure needed by delegated providers:

  • user_content_tokens table — Per-user OAuth tokens with AES-256-GCM encryption (TMI_CONTENT_TOKEN_ENCRYPTION_KEY)
  • Account linking endpointsGET /me/content_tokens, POST /me/content_tokens/{provider_id}/authorize, DELETE /me/content_tokens/{provider_id}, GET /oauth2/content_callback
  • Token lifecycle — Storage, refresh, revocation
  • Startup validation — Refuse to start if delegated provider enabled without encryption key

Content Providers

  • Confluence provider — Delegated OAuth, Confluence REST API page extraction
  • OneDrive/SharePoint provider — Service account auth, Microsoft Graph API document extraction (DOCX, PPTX, Excel)
  • Google Workspace delegated access — Per-user OAuth for Google Docs/Sheets/Slides (extends the service-account Google Drive source from feat(timmy): content provider infrastructure and Google Drive source #232)
  • DOCX/PPTX extractors — New ContentExtractor implementations for Office document formats

Provider Details

Confluence (Delegated Provider)

  • Implements ContentSource + AccessValidator interfaces
  • Uses delegated provider infrastructure (per-user OAuth tokens)
  • URL pattern: *.atlassian.net/wiki/*
  • Scopes: read:confluence-content.all

OneDrive/SharePoint (Service Provider)

Google Workspace Delegated Access

  • Extends Google Drive source with per-user OAuth option
  • Enables access to documents not shared with the service account

Acceptance Criteria

Design Note

Each provider will need its own design spec before implementation. The infrastructure from #232 defines the interfaces and patterns; this issue covers the delegated infrastructure and provider-specific work.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

Status

In Progress

Relationships

None yet

Development

No branches or pull requests

Issue actions