# СГЕНЕРИРОВАНО из devcontour/tools/kits/template/importlinter.ini — не правь
# здесь. Правка идёт в шаблон, затем `python tools/kits/apply_template.py <кит>`.
#
# Заготовка контракта слоёв. Запуск: `uv run --with import-linter lint-imports`.
#
# Контракт ниже — минимум, который годится ЛЮБОМУ киту и не требует ручной
# настройки: «clientkit не импортирует те киты экосистемы, которых нет в его
# объявленных зависимостях». Скрытая зависимость — это кит, который работает у
# автора (сосед стоит в venv) и разваливается у потребителя на первом импорте;
# именно так ломались pypi-publish и gemini-chat.
#
# Список forbidden_modules подставлен установщиком из реестра китов на момент
# установки: все известные пакеты китов МИНУС собственный МИНУС объявленные в
# pyproject зависимости. Появилась новая честная зависимость — объяви её в
# pyproject и переустанови шаблон, а не правь этот файл.
#
# Собственные контракты кита (layers/eager_forbidden/declared_dependencies,
# как у adapterkit) дописываются НИЖЕ отдельными секциями прямо в этом файле.
# Установщик сверяет файл целиком, поэтому `--check` после такой правки
# закономерно покажет расхождение с каноном — это ожидаемо и осознанно
# игнорируется в отчёте ревью, см. docs/kits/SAFETY-NET.md, «Что делать при
# расхождении» (п.2).

[importlinter]
# include_external_packages нужен: forbidden_modules перечисляет пакеты,
# внешние относительно root_packages.
include_external_packages = True
root_packages =
    clientkit
exclude_type_checking_imports = True

[importlinter:contract:no-undeclared-kits]
name = clientkit не импортирует киты, которых нет в его зависимостях
type = forbidden
source_modules =
    clientkit
forbidden_modules =
    accountpoolkit
    agentskit
    aichatkit
    authkit_contracts
    authkit_server
    b24kit
    browserkit
    chatkit
    clikit
    emojikit
    gitkit
    installerkit
    iokit
    issuekit
    leasekit
    librarykit
    maxkit
    modelkit
    ormkit
    persistkit
    servicekit
    sessionkit
    skillkit
    socialkit
    storagekit
    telemetrykit
    totp_client
    worker_service
