# .importlinter — машинная защита границ слоёв (волна 0, задача 4).
#
# Запуск:  uv run --with import-linter lint-imports
#
# netkit — транспортный слой (L1): сеть не знает ничего выше себя (ни
# оркестратора, ни оболочек, ни продуктов). Второй контракт держит корень
# пакета (__init__.py, contract.py) свободным от вендоров — тяжёлые зависимости
# (httpx/websockets/curl_cffi/stamina) должны грузиться лениво внутри
# конкретных транспортов, а не при простом ``import netkit``.

[importlinter]
include_external_packages = True
root_packages =
    netkit
exclude_type_checking_imports = True

[importlinter:contract:netkit-top-of-l1]
name = netkit импортирует только corekit
type = forbidden
source_modules =
    netkit
forbidden_modules =
    librarykit
    clikit
    adapterkit
    browserkit
    accountpoolkit
    sessionkit
    authkit_client
    authkit_server
    socialkit
    aichatkit
    skillkit
    servicekit
    gateway
    bublictr

[importlinter:contract:netkit-root-no-vendors]
name = корень netkit не тянет вендоров
type = forbidden
# as_packages=False: проверяем ТОЛЬКО сами модули netkit/__init__.py и
# netkit/contract.py, а не всё поддерево (внутри транспортов httpx/curl_cffi —
# законные, там их законное место, см. netkit/transport/*).
as_packages = False
source_modules =
    netkit
    netkit.contract
forbidden_modules =
    httpx
    websockets
    curl_cffi
    stamina
