Files
haos-hacs-immich-album-watcher/packages/server/pyproject.toml
alexei.dolgolyov 88ffd5d077
Some checks failed
Validate / Hassfest (push) Has been cancelled
Add Claude AI Telegram bot enhancement (Phase 6)
Integrate Claude AI into the notification system for intelligent
conversational interactions and AI-powered captions.

New modules:
- ai/service.py: Claude API client with conversation history,
  caption generation, and album activity summarization
- ai/telegram_webhook.py: Telegram webhook handler for incoming
  bot messages, routes to AI service for responses

Features:
- Conversational bot: users chat with the bot about albums
- AI captions: intelligent notification messages based on album
  context (people, locations, dates) - enabled per target via
  "ai_captions" config flag
- Album summaries: "what's new?" triggers AI-generated overview
- /start command with welcome message
- Webhook register/unregister endpoints

Architecture:
- Per-chat conversation history (in-memory, capped at 20 messages)
- Graceful degradation: AI features completely disabled without
  IMMICH_WATCHER_ANTHROPIC_API_KEY env var (zero impact)
- AI caption failure falls back to Jinja2 template rendering
- Health endpoint reports ai_enabled status

Config: IMMICH_WATCHER_ANTHROPIC_API_KEY, IMMICH_WATCHER_AI_MODEL,
IMMICH_WATCHER_AI_MAX_TOKENS

Server now has 45 API routes (was 42 after Phase 5).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 14:38:51 +03:00

36 lines
761 B
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "immich-watcher-server"
version = "0.1.0"
description = "Standalone Immich album change notification server"
requires-python = ">=3.12"
dependencies = [
"immich-watcher-core==0.1.0",
"fastapi>=0.115",
"uvicorn[standard]>=0.32",
"sqlmodel>=0.0.22",
"aiosqlite>=0.20",
"pyjwt>=2.9",
"bcrypt>=4.2",
"apscheduler>=3.10,<4",
"jinja2>=3.1",
"aiohttp>=3.9",
"anthropic>=0.42",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"pytest-asyncio>=0.23",
"httpx>=0.27",
]
[project.scripts]
immich-watcher = "immich_watcher_server.main:run"
[tool.hatch.build.targets.wheel]
packages = ["src/immich_watcher_server"]