mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-02 13:18:18 +00:00
Old thought messages are dropped by default by the Anthropic API. This change ensures old thoughts are kept. This should improve cache utilization to reduce costs. And keeping old thoughts may also improve model intelligence.
185 lines
4.6 KiB
TOML
185 lines
4.6 KiB
TOML
[build-system]
|
|
requires = ["hatchling", "hatch-vcs"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "khoj"
|
|
description = "Your Second Brain"
|
|
readme = "README.md"
|
|
license = "AGPL-3.0-or-later"
|
|
requires-python = ">=3.10, <3.13"
|
|
authors = [
|
|
{ name = "Debanjum Singh Solanky, Saba Imran" },
|
|
]
|
|
keywords = [
|
|
"search",
|
|
"semantic-search",
|
|
"productivity",
|
|
"NLP",
|
|
"AI",
|
|
"org-mode",
|
|
"markdown",
|
|
"images",
|
|
"pdf",
|
|
]
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Topic :: Internet :: WWW/HTTP :: Indexing/Search",
|
|
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
"Topic :: Scientific/Engineering :: Human Machine Interfaces",
|
|
"Intended Audience :: Information Technology",
|
|
]
|
|
dependencies = [
|
|
"beautifulsoup4 ~= 4.12.3",
|
|
"dateparser >= 1.1.1",
|
|
"defusedxml == 0.7.1",
|
|
"fastapi >= 0.110.0",
|
|
"python-multipart >= 0.0.7",
|
|
"jinja2 == 3.1.6",
|
|
"openai >= 2.0.0, < 3.0.0",
|
|
"tiktoken >= 0.3.2",
|
|
"tenacity >= 9.0.0",
|
|
"magika ~= 0.5.1",
|
|
"pillow ~= 10.0.0",
|
|
"pydantic[email] >= 2.0.0",
|
|
"pyyaml ~= 6.0",
|
|
"rich >= 13.3.1",
|
|
"click < 8.2.2",
|
|
"schedule == 1.1.0",
|
|
"sentence-transformers == 3.4.1",
|
|
"einops == 0.8.0",
|
|
"transformers >= 4.51.0",
|
|
"torch == 2.6.0",
|
|
"uvicorn == 0.30.6",
|
|
"aiohttp ~= 3.9.0",
|
|
"langchain-text-splitters == 0.3.11",
|
|
"langchain-community == 0.3.27",
|
|
"requests >= 2.26.0",
|
|
"anyio ~= 4.8.0",
|
|
"pymupdf == 1.24.11",
|
|
"django == 5.1.14",
|
|
"django-unfold == 0.42.0",
|
|
"authlib == 1.6.5",
|
|
"itsdangerous == 2.1.2",
|
|
"httpx == 0.28.1",
|
|
"pgvector == 0.2.4",
|
|
"psycopg2-binary == 2.9.9",
|
|
"lxml == 4.9.3",
|
|
"tzdata == 2023.3",
|
|
"rapidocr-onnxruntime == 1.4.4",
|
|
"openai-whisper >= 20231117",
|
|
"django-phonenumber-field == 7.3.0",
|
|
"phonenumbers == 8.13.27",
|
|
"markdownify ~= 0.11.6",
|
|
"markdown-it-py ~= 3.0.0",
|
|
"websockets == 13.0",
|
|
"psutil >= 5.8.0",
|
|
"huggingface-hub[hf_xet] >= 0.22.2",
|
|
"apscheduler ~= 3.10.0",
|
|
"pytz ~= 2024.1",
|
|
"cron-descriptor == 1.4.3",
|
|
"django_apscheduler == 0.7.0",
|
|
"anthropic == 0.75.0",
|
|
"docx2txt == 0.8",
|
|
"google-genai == 1.52.0",
|
|
"google-auth ~= 2.23.3",
|
|
"pyjson5 == 1.6.7",
|
|
"resend == 1.0.1",
|
|
"email-validator == 2.2.0",
|
|
"e2b-code-interpreter ~= 1.0.0",
|
|
"mcp >= 1.12.4",
|
|
]
|
|
dynamic = ["version"]
|
|
|
|
[project.urls]
|
|
Homepage = "https://khoj.dev"
|
|
Documentation = "https://docs.khoj.dev"
|
|
Code = "https://github.com/khoj-ai/khoj"
|
|
|
|
[project.scripts]
|
|
khoj = "khoj.main:run"
|
|
|
|
[project.optional-dependencies]
|
|
prod = [
|
|
"gunicorn == 22.0.0",
|
|
"stripe == 7.3.0",
|
|
"twilio == 8.11",
|
|
"boto3 >= 1.34.57",
|
|
]
|
|
local = [
|
|
"pgserver == 0.1.4",
|
|
]
|
|
dev = [
|
|
"khoj[prod,local]",
|
|
"pytest >= 7.1.2",
|
|
"pytest-xdist[psutil]",
|
|
"pytest-django == 4.5.2",
|
|
"pytest-asyncio == 0.21.1",
|
|
"freezegun >= 1.2.0",
|
|
"factory-boy >= 3.2.1",
|
|
"mypy >= 1.0.1",
|
|
"ruff >= 0.12.0",
|
|
"pre-commit >= 3.0.4",
|
|
"gitpython ~= 3.1.43",
|
|
"datasets",
|
|
"pandas",
|
|
]
|
|
|
|
[tool.hatch.version]
|
|
source = "vcs"
|
|
raw-options.local_scheme = "no-local-version" # PEP440 compliant version for PyPi
|
|
|
|
[tool.hatch.build.targets.sdist]
|
|
include = ["src/khoj"]
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/khoj"]
|
|
|
|
[tool.mypy]
|
|
files = "src/khoj"
|
|
pretty = true
|
|
strict_optional = false
|
|
install_types = true
|
|
ignore_missing_imports = true
|
|
non_interactive = true
|
|
show_error_codes = true
|
|
warn_unused_ignores = false
|
|
|
|
[tool.ruff]
|
|
line-length = 120
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I"] # Enable error, warning, and import checks
|
|
ignore = [
|
|
"E501", # Ignore line length
|
|
"F405", # Ignore name not defined (e.g., from imports)
|
|
"E402", # Ignore module level import not at top of file
|
|
]
|
|
unfixable = ["F841"] # Don't auto-remove unused variables
|
|
exclude = [ "tests/*.py" ]
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"src/khoj/main.py" = [
|
|
"I001", # Ignore Import order
|
|
"I002", # Ignore Import not at top of file
|
|
"E402", # Ignore module level import not at top of file
|
|
]
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "double"
|
|
indent-style = "space"
|
|
|
|
[tool.ruff.lint.isort]
|
|
known-first-party = ["khoj"]
|
|
|
|
[tool.pytest.ini_options]
|
|
addopts = "--strict-markers"
|
|
markers = [
|
|
"chatquality: Evaluate chatbot capabilities and quality",
|
|
]
|