[importlinter]
root_package = bernstein

# ---------------------------------------------------------------------------
# Contract 1 — adapters are thin wrappers, never scheduler-aware
# ---------------------------------------------------------------------------
[importlinter:contract:adapters-no-scheduler]
name = Adapters must not import scheduler internals
type = forbidden
source_modules =
    bernstein.adapters
forbidden_modules =
    bernstein.core.tasks
    bernstein.core.orchestration
    bernstein.core.routing
    bernstein.core.quality
ignore_imports =

# ---------------------------------------------------------------------------
# Contract 2 — core should not depend on cli
# ---------------------------------------------------------------------------
[importlinter:contract:core-no-cli]
name = Core must not import CLI
type = forbidden
source_modules =
    bernstein.core
forbidden_modules =
    bernstein.cli
    bernstein.tui
ignore_imports =
    bernstein.core.orchestration.activity_summary_poller -> bernstein.tui.activity_tracker


# ---------------------------------------------------------------------------
# Contract 3 — adapters must not import each other (independence)
# ---------------------------------------------------------------------------
[importlinter:contract:adapters-independent]
name = Adapters are independent of one another
type = independence
modules =
    bernstein.adapters.aichat
    bernstein.adapters.aider
    bernstein.adapters.amp
    bernstein.adapters.auggie
    bernstein.adapters.autohand
    bernstein.adapters.charm
    bernstein.adapters.claude
    bernstein.adapters.cline
    bernstein.adapters.clm
    bernstein.adapters.cloudflare_agents
    bernstein.adapters.codebuff
    bernstein.adapters.codex
    bernstein.adapters.cody
    bernstein.adapters.composio
    bernstein.adapters.continue_dev
    bernstein.adapters.copilot
    bernstein.adapters.cursor
    bernstein.adapters.devin_terminal
    bernstein.adapters.droid
    bernstein.adapters.forge
    bernstein.adapters.gemini
    bernstein.adapters.generic
    bernstein.adapters.goose
    bernstein.adapters.gptme
    bernstein.adapters.hermes
    bernstein.adapters.iac
    bernstein.adapters.junie
    bernstein.adapters.kilo
    bernstein.adapters.kimi
    bernstein.adapters.kiro
    bernstein.adapters.letta_code
    bernstein.adapters.mistral
    bernstein.adapters.mock
    bernstein.adapters.ollama
    bernstein.adapters.open_interpreter
    bernstein.adapters.openai_agents
    bernstein.adapters.opencode
    bernstein.adapters.openhands
    bernstein.adapters.pi
    bernstein.adapters.plandex
    bernstein.adapters.q_dev
    bernstein.adapters.qwen
    bernstein.adapters.ralphex
    bernstein.adapters.rovo
ignore_imports =
