8f02318542
YNAB has no event feed, so keep a local copy in ynab_* tables synced via server_knowledge delta requests: full download on first run, deltas every YNAB_SYNC_INTERVAL seconds and on demand before each tool call, full resync daily. Each sync diffs against the mirror and appends real edits (transactions, assignments, renames) to ynab_changes, the edit history YNAB doesn't keep. Agent YNAB tools now answer from the mirror: budget summary (spending computed from transactions, since YNAB's month activity nets in credit card payment categories), account balances, transaction search with splits expanded, spending reports by category/payee/account/month, category budget, and recent changes. Adds an admin-only read-only ynab_sql tool guarded by a sqlglot allowlist (scope-resolved tables, no dangerous functions), a READ ONLY transaction, a timeout, and a row cap. Replaces utils/ynab_service.py and drops the unused ynab SDK. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
67 lines
1.5 KiB
TOML
67 lines
1.5 KiB
TOML
[project]
|
|
name = "raggr"
|
|
version = "0.1.0"
|
|
description = "Add your description here"
|
|
readme = "README.md"
|
|
requires-python = ">=3.13"
|
|
dependencies = [
|
|
"langchain-postgres>=0.0.13",
|
|
"psycopg[binary]>=3.1.0",
|
|
"python-dotenv>=1.0.0",
|
|
"flask>=3.1.2",
|
|
"httpx>=0.28.1",
|
|
"openai>=2.0.1",
|
|
"pydantic>=2.11.9",
|
|
"pillow>=10.0.0",
|
|
"pymupdf>=1.24.0",
|
|
"black>=25.9.0",
|
|
"pillow-heif>=1.1.1",
|
|
"flask-jwt-extended>=4.7.1",
|
|
"bcrypt>=5.0.0",
|
|
"pony>=0.7.19",
|
|
"flask-login>=0.6.3",
|
|
"quart>=0.20.0",
|
|
"tortoise-orm>=0.25.1,<1.0.0",
|
|
"quart-jwt-extended>=0.1.0",
|
|
"pre-commit>=4.3.0",
|
|
"tortoise-orm-stubs>=1.0.2",
|
|
"aerich>=0.8.0",
|
|
"tomlkit>=0.13.3",
|
|
"authlib>=1.3.0",
|
|
"asyncpg>=0.30.0",
|
|
"langchain-openai>=1.1.6",
|
|
"langchain>=1.2.0",
|
|
"langchain-community>=0.4.1",
|
|
"langgraph-checkpoint-sqlite>=2.0.0",
|
|
"aiosqlite>=0.20.0",
|
|
"jq>=1.10.0",
|
|
"tavily-python>=0.7.17",
|
|
"aioimaplib>=2.0.1",
|
|
"html2text>=2025.4.15",
|
|
"ollama>=0.6.1",
|
|
"twilio>=9.10.2",
|
|
"aioboto3>=13.0.0",
|
|
"prometheus-client>=0.26.0",
|
|
"google-api-python-client>=2.0.0",
|
|
"google-auth-oauthlib>=1.0.0",
|
|
"google-auth-httplib2>=0.2.0",
|
|
"langchain-mcp-adapters>=0.3.2",
|
|
"sqlglot>=30.22.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
test = [
|
|
"pytest>=8.0.0",
|
|
"pytest-asyncio>=0.25.0",
|
|
"pytest-cov>=6.0.0",
|
|
]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
asyncio_mode = "auto"
|
|
|
|
[tool.aerich]
|
|
tortoise_orm = "config.db.TORTOISE_CONFIG"
|
|
location = "./migrations"
|
|
src_folder = "./."
|