Files
thoth/pyproject.toml
MarioGLealPandClaude Opus 5.5 c658f640fa feat: callers need an Authentik token and a permission
Tokens checked per the security standard (issuer, audience, algorithm,
JWKS key, expiry/not-before, required claims); permissions thoth.read,
thoth.report:<source>@<scope> (must match the scan's path), thoth.manual,
thoth.verdict. Changes are recorded under the bot's name. Retiring now needs
the verdict flag the API sets only for thoth.verdict, checked by the
trigger. House rule: every operation but the probes declares security.

API-Break: every route but the probes now needs a token - nothing has called Thoth yet
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1Hfahkh27nfbtRVZ4CR
2026-10-29 13:10:07 +00:00

66 lines
1.5 KiB
TOML

[project]
name = "thoth"
version = "0.1.0"
description = "Meru's CMDB: what exists, how it connects, and how it got that way"
readme = "README.md"
authors = [
{ name = "MarioGLealP", email = "[email protected]" }
]
requires-python = ">=3.15"
dependencies = [
"alembic>=1.20.1",
"alembic-utils>=0.8.8",
"fastapi>=0.162.0",
"psycopg[binary]>=3.3.6",
"pydantic-settings>=2.16.2",
"pyjwt[crypto]>=2.15.1",
"sqlmodel>=0.0.48",
"uvicorn>=0.54.0",
]
[build-system]
requires = ["uv_build>=0.13.5,<0.14.0"]
build-backend = "uv_build"
[dependency-groups]
dev = [
"httpx2>=2.16.0",
"pytest>=9.2.0",
"ruff>=0.17.3",
"ty>=0.0.94",
]
[tool.alembic]
script_location = "%(here)s/migrations"
file_template = "%%(year)d%%(month).2d%%(day).2d_%%(rev)s_%%(slug)s"
prepend_sys_path = ["."]
[[tool.alembic.post_write_hooks]]
name = "ruff"
type = "module"
module = "ruff"
options = "check --fix REVISION_SCRIPT_FILENAME"
[[tool.alembic.post_write_hooks]]
name = "ruff_format"
type = "module"
module = "ruff"
options = "format REVISION_SCRIPT_FILENAME"
[tool.ruff]
line-length = 120
[tool.ruff.lint]
select = ["E", "F", "W", "I", "UP", "B", "SIM", "RUF"]
[tool.ruff.lint.per-file-ignores]
"migrations/versions/*" = ["E501"] # alembic_utils writes function bodies as one string
[tool.ty.src]
exclude = ["migrations/versions"] # generated; alembic_utils adds op.create_entity at runtime
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "--strict-markers"