mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2026-09-02 21:03:34 +03:00
# Description of Changes AI settings customisation in settings menu, as part of this also tested and fixed ollama and other 3rd party AI integrations - Adds an admin AI settings UI for customizing AI behaviour, including per-provider model and API-key configuration - Backend pushes AI config changes to the Python engine at runtime via a config-push bridge, so changes apply without a restart - Config-push is gated off in SaaS; engine now drains background tasks on shutdown instead of cancelling them --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details.
79 lines
1.9 KiB
TOML
79 lines
1.9 KiB
TOML
[project]
|
|
name = "engine"
|
|
version = "0.1.0"
|
|
description = "AI Document Engine"
|
|
requires-python = ">=3.13"
|
|
dependencies = [
|
|
"cryptography>=44.0.0",
|
|
"fastapi>=0.116.0",
|
|
"pgvector>=0.3.6",
|
|
"psycopg[binary,pool]>=3.2",
|
|
"pydantic>=2.0.0",
|
|
# <2 cap: 1.99.0 patches CVE-2026-46678; 2.0 is an untested major migration
|
|
"pydantic-ai>=1.99.0,<2.0.0",
|
|
"pydantic-ai-slim[voyageai]>=1.99.0,<2.0.0",
|
|
"pydantic-settings>=2.0.0",
|
|
"python-dotenv>=1.2.1",
|
|
"sqlite-vec>=0.1.6",
|
|
"uvicorn>=0.35.0",
|
|
"opentelemetry-sdk>=1.39.0",
|
|
"posthog>=3.0.0",
|
|
]
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"anyio>=4.0.0",
|
|
"datamodel-code-generator[ruff]>=0.26.0",
|
|
"pytest>=8.0.0",
|
|
"pyright>=1.1.408",
|
|
"referencing>=0.35.0",
|
|
"ruff>=0.14.10",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src"]
|
|
exclude = [
|
|
"tests",
|
|
]
|
|
|
|
[tool.ruff]
|
|
line-length = 120
|
|
target-version = "py313"
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"E",
|
|
"F",
|
|
"I",
|
|
"N",
|
|
"W",
|
|
"RUF100",
|
|
"UP",
|
|
"PYI", # flake8-pyi: flags deprecated typing constructs
|
|
"FA", # flake8-future-annotations: flags missing future annotations imports
|
|
"BLE", # flake8-blind-except: flags bare `except Exception`
|
|
]
|
|
|
|
[tool.pyright]
|
|
pythonVersion = "3.13"
|
|
|
|
reportImportCycles = "warning"
|
|
reportUnnecessaryCast = "warning"
|
|
reportUnnecessaryTypeIgnoreComment = "warning"
|
|
reportUnusedImport = "warning"
|
|
reportUnknownParameterType = "warning"
|
|
reportDeprecated = "warning"
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
# ``tests`` is on the path so test modules can import shared helpers (e.g.
|
|
# ``from conftest import build_app_settings``) without packaging the tests dir.
|
|
pythonpath = ["src", "tests"]
|
|
# Use importlib import mode so test directories don't need __init__.py files
|
|
# and duplicate basenames (e.g. multiple test_routes.py) collect cleanly.
|
|
addopts = "--import-mode=importlib"
|