Skip to content

feat(atlassian): Confluence Cloud adapter with Markdown→Storage converter - #16

Merged
gerfru merged 1 commit into
mainfrom
feat/atlassian-confluence
Jul 6, 2026
Merged

feat(atlassian): Confluence Cloud adapter with Markdown→Storage converter#16
gerfru merged 1 commit into
mainfrom
feat/atlassian-confluence

Conversation

@gerfru

@gerfru gerfru commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Summary

  • ConfluenceConfig, JiraConfig, AtlassianConfig Pydantic models in src/core/config.py
  • config/atlassian.yaml overlay template — one ATLASSIAN_API_TOKEN for both Confluence + Jira
  • adapters/atlassian/confluence.py:
    • md_to_confluence_storage() — Markdown → Confluence Storage Format (XHTML)
    • ConfluenceAdapter — idempotent page upsert, space ID resolution, flat deploy under root index page
  • 21 unit tests for converter + adapter (all HTTP mocked)

Converter coverage

headings (h1–h6) · bold · italic · bold+italic · tables (th/td) · unordered/ordered lists (grouped) · blockquotes · HR · inline code · Markdown links

Next PR (PR 2)

  • adapters/atlassian/jira.py — Jira Cloud adapter (project + issue types)
  • cli/main.py — wire --target atlassian

Generated with Claude Code

- src/core/config.py: add ConfluenceConfig, JiraConfig, AtlassianConfig
  models; extend CoreConfig with optional atlassian field
- config/atlassian.yaml: updated overlay template with nested atlassian.*
  keys, single ATLASSIAN_API_TOKEN for both services
- adapters/atlassian/confluence.py: md_to_confluence_storage() converter
  (headings, bold/italic, tables, lists, blockquotes, HR, code, links);
  ConfluenceAdapter with idempotent create_or_update_page(), space ID
  resolution, and flat deploy under a root index page
- tests/test_confluence.py: 21 unit tests (converter + adapter, all mocked)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@gerfru
gerfru merged commit c7492cb into main Jul 6, 2026
6 checks passed
@gerfru
gerfru deleted the feat/atlassian-confluence branch July 6, 2026 08:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant