"""Public API for the sources package.

All external code imports from here:
    from .sources import SOURCES, Source
    from .sources import ClaudeCodeSource, ...
"""
from ._base import JsonlSource, KeyPath, Source
from ._community import GooseSource, HermesSource, OpenClawSource
from ._core import AiderSource, ClaudeCodeSource, CodexSource, OpenCodeSource
from ._extended import (
    ClineSource,
    ContinueSource,
    GeminiCliSource,
    GitHubCopilotSource,
    KiloCodeSource,
    OpenInterpreterSource,
    RooCodeSource,
)
from ._more import (
    CodebuffSource,
    GrokCliSource,
    JetBrainsAiSource,
    JunieSource,
    KiroCliSource,
    MentatSource,
    PearAiSource,
    PlandexSource,
    QwenCodeSource,
    TraeSource,
    VoidSource,
    WarpSource,
    ZedSource,
)
from ._vscode import CursorSource, WindsurfSource

SOURCES: dict[str, type[Source]] = {
    "claude-code":           ClaudeCodeSource,
    "codex":                 CodexSource,
    "opencode":              OpenCodeSource,
    "cursor":                CursorSource,
    "windsurf":              WindsurfSource,
    "aider":                 AiderSource,
    "cline":                 ClineSource,
    "kilo-code":             KiloCodeSource,
    "roo-code":              RooCodeSource,
    "pearai":                PearAiSource,
    "trae":                  TraeSource,
    "void":                  VoidSource,
    "gemini-cli":            GeminiCliSource,
    "qwen-code":             QwenCodeSource,
    "continue-vscode":       ContinueSource,
    "open-interpreter":      OpenInterpreterSource,
    "github-copilot-chat":   GitHubCopilotSource,
    "openclaw":              OpenClawSource,
    "hermes":                HermesSource,
    "goose":                 GooseSource,
    "warp":                  WarpSource,
    "grok-cli":              GrokCliSource,
    "kiro-cli":              KiroCliSource,
    "zed":                   ZedSource,
    "codebuff":              CodebuffSource,
    "plandex":               PlandexSource,
    "junie":                 JunieSource,
    "mentat":                MentatSource,
    "jetbrains-ai":          JetBrainsAiSource,
}

__all__ = [
    "Source",
    "JsonlSource",
    "KeyPath",
    "SOURCES",
    "ClaudeCodeSource",
    "CodexSource",
    "OpenCodeSource",
    "CursorSource",
    "WindsurfSource",
    "AiderSource",
    "ClineSource",
    "KiloCodeSource",
    "RooCodeSource",
    "PearAiSource",
    "TraeSource",
    "VoidSource",
    "GeminiCliSource",
    "QwenCodeSource",
    "ContinueSource",
    "OpenInterpreterSource",
    "GitHubCopilotSource",
    "OpenClawSource",
    "HermesSource",
    "GooseSource",
    "WarpSource",
    "GrokCliSource",
    "KiroCliSource",
    "ZedSource",
    "CodebuffSource",
    "PlandexSource",
    "JunieSource",
    "MentatSource",
    "JetBrainsAiSource",
]
