[build-system]
requires = ["hatchling==1.28.0", "editables==0.5"]
build-backend = "hatchling.build"

[project]
name = "agentnet"
version = "0.1.50"
description = "Self-hosted, agent-agnostic secure communication conformance kernel"
readme = "README.md"
requires-python = ">=3.13,<3.15"
license = { text = "Apache-2.0" }
authors = [{ name = "AgentNet contributors" }]
dependencies = [
  "a2a-sdk[http-server]==1.1.0",
  "cryptography==49.0.0",
  "jsonschema==4.26.0",
  "mcp==1.28.1",
  "psutil==7.2.2",
  "psycopg[binary]==3.3.4",
  "pydantic==2.13.4",
  "segno==1.6.6",
  "starlette==1.3.1",
  "uvicorn==0.51.0",
  "webauthn==3.0.0",
  "pywin32==312; sys_platform == 'win32'",
]

[project.optional-dependencies]
test = [
  "hypothesis==6.156.6",
  "pytest==9.1.1",
]

[dependency-groups]
build = [
  "hatchling==1.28.0",
  "editables==0.5",
]

[project.scripts]
agentnet = "agentnet.cli:main"

[tool.hatch.build]
reproducible = true

[tool.hatch.build.targets.wheel]
packages = ["src/agentnet"]

[tool.hatch.build.targets.wheel.shared-data]
"schemas" = "share/agentnet/schemas"
"RELEASE_MANIFEST.json" = "share/agentnet/RELEASE_MANIFEST.json"
"REQUIREMENTS_STATUS.md" = "share/agentnet/REQUIREMENTS_STATUS.md"

[tool.hatch.build.targets.sdist]
only-include = [
  "LICENSE",
  "README.md",
  "RELEASE_MANIFEST.json",
  "REQUIREMENTS_STATUS.md",
  "deploy/.env.production.example",
  "deploy/Dockerfile",
  "deploy/compose.production.json",
  "deploy/nginx-agent.conf",
  "deploy/render_and_run.py",
  "docs/ARCHITECTURE.md",
  "docs/BAKEOFF_PLAN.md",
  "docs/BUILD_VS_REUSE.md",
  "docs/GATE_EVIDENCE.md",
  "docs/MILESTONES.md",
  "docs/OWNER_DECISIONS.md",
  "docs/RELEASE_MANIFEST.md",
  "docs/SCHEMAS_INTERFACES.md",
  "docs/THREAT_MODEL_TEST_PLAN.md",
  "docs/ZERO_STATE_C0_PILOT.md",
  "docs/final-verification.md",
  "docs/implementation-guide.md",
  "docs/requirements.md",
  "docs/response-obligations.md",
  "docs/specification.md",
  "pyproject.toml",
  "schemas/README.md",
  "schemas/v1",
  "scripts/ci/exact_endpoint_routing_e2e.py",
  "scripts/ci/packaged_local_communication_e2e.py",
  "scripts/ci/packaged_v0145_user_journey.py",
  "scripts/export_schemas.py",
  "scripts/verify_release.py",
  "src/agentnet",
  "uv.lock",
]

[tool.pytest.ini_options]
addopts = "-ra --strict-config --strict-markers"
testpaths = ["tests"]
pythonpath = ["src", "."]
markers = [
  "external: requires a real harness, peer, identity provider, or multi-node lab",
  "owner: requires an accountable owner decision or independently administered evidence",
  "privileged: requires target-host sandbox or security-boundary privileges",
]
