| chore: add pre-commit hooks for linting, formatting, and secret detection - ruff check + ruff-format enforce code style on every commit - detect-secrets blocks accidental API key/secret commits - pre-commit-hooks: trailing whitespace, EOF, YAML/JSON/TOML validation, large file guard, no direct commits to master - Auto-fixed trailing whitespace and missing EOF newlines across repo - Added make pre-commit and make pre-commit-update targets - install target now runs pre-commit install automatically Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | 4 个月前 |
| clean up obsolete Docker scripts and align CI build commands | 2 个月前 |
| chore: add pre-commit hooks for linting, formatting, and secret detection - ruff check + ruff-format enforce code style on every commit - detect-secrets blocks accidental API key/secret commits - pre-commit-hooks: trailing whitespace, EOF, YAML/JSON/TOML validation, large file guard, no direct commits to master - Auto-fixed trailing whitespace and missing EOF newlines across repo - Added make pre-commit and make pre-commit-update targets - install target now runs pre-commit install automatically Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | 4 个月前 |
| changes | 2 个月前 |
| Merge pull request #83 from JFer11/fix/langfuse-init-startup-crash Don't let Langfuse auth failures crash startup | 2 个月前 |
| changes | 2 个月前 |
| chore: remove genuinely stale unused imports The 19 unused imports left over after PR-1..8 were not legitimate re-exports — alembic/env.py uses explicit `# noqa: F401` for the model imports it actually needs (Session, Thread, User), and that file isn't even in pyright's scope. The remaining warnings were dead `from typing import Optional, List, Union, Dict, Any` left over from pre-3.10 typing migrations, plus a few genuinely orphaned imports (`json` in config.py, `db_connections` in middleware.py, `tqdm` in evals/main.py, `asyncio` in evals/evaluator.py, re-exported `Message`/`List` in chatbot.py and models). Auto-fixed via `ruff check --select F401 --fix` (a one-shot override of the project's F401 ignore — the ignore stays in place for legitimate noqa cases). Promotes pyright `reportUnusedImport` from warning to error so future stale imports break the build. Baseline: 41 -> 22 warnings, all remaining warnings are stable third-party/style categories. Files cleaned: app/api/v1/chatbot.py, app/core/config.py, app/core/logging.py, app/core/middleware.py, app/models/base.py, app/models/session.py, app/utils/sanitization.py, evals/evaluator.py, evals/helpers.py, evals/main.py. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> | 4 个月前 |
| added a panel for average latency and request count too | 1 年前 |
| added cadvisor and grafana | 1 年前 |
| Merge pull request #81 from JFer11/fix/docker-migration-flow Fix broken initial migration and add explicit Docker migration commands | 2 个月前 |
| feat: add pyright static type checker Wires pyright into the dev tooling: pyproject.toml config (basic mode with stub-gap rules demoted to warning), Makefile targets (typecheck, check), pre-commit hook, and a new CI workflow that runs ruff + pyright on PR/push to master. Genuine bugs surfaced and fixed in the same pass: - app/services/memory.py: AsyncMemory and metadata defaults typed as bare AsyncMemory/dict instead of Optional - app/services/llm/service.py: @overload with Type[T] default left T unsolvable; made keyword-only and required Side fixes: Makefile lint/format now use `uv run` (was bare ruff, broken in venv-only setups); ruff added to [dependency-groups].dev so default `uv sync` installs it. Baseline: 0 errors, 94 warnings — warnings are real signal for a follow-up cleanup pass (mostly SQLModel/SQLAlchemy stub gaps). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> | 4 个月前 |
| Add evaluation framework and related configurations - Introduced a new evaluation framework in `evals` directory, including `Evaluator` class for model output evaluation. - Added helper functions for processing evaluation metrics and generating reports. - Updated `Makefile` with commands for running evaluations in different modes. - Enhanced `README.md` to document the evaluation framework and usage instructions. - Updated `.dockerignore` and `.gitignore` to include evaluation reports directory. - Added new dependencies in `pyproject.toml` for `tqdm` and `colorama` to support progress bars and colored output. - Configured evaluation settings in `app/core/config.py` for better flexibility. - Created metric prompts for evaluation criteria in `evals/metrics/prompts` directory. - Implemented command-line interface in `evals/main.py` for user interaction during evaluations. | 1 年前 |
| install Docker dependencies from uv.lock to prevent version drift | 2 个月前 |
| fix: improve Windows/WSL compatibility - Gate uvloop to non-Windows platforms in pyproject.toml - Remove --loop uvloop from make dev (uvicorn auto-detects the loop) - Add .gitattributes to enforce LF line endings on scripts and env files Fixes #43 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | 4 个月前 |
| Add evaluation framework and related configurations - Introduced a new evaluation framework in `evals` directory, including `Evaluator` class for model output evaluation. - Added helper functions for processing evaluation metrics and generating reports. - Updated `Makefile` with commands for running evaluations in different modes. - Enhanced `README.md` to document the evaluation framework and usage instructions. - Updated `.dockerignore` and `.gitignore` to include evaluation reports directory. - Added new dependencies in `pyproject.toml` for `tqdm` and `colorama` to support progress bars and colored output. - Configured evaluation settings in `app/core/config.py` for better flexibility. - Created metric prompts for evaluation criteria in `evals/metrics/prompts` directory. - Implemented command-line interface in `evals/main.py` for user interaction during evaluations. | 1 年前 |
| feat: add pyright static type checker Wires pyright into the dev tooling: pyproject.toml config (basic mode with stub-gap rules demoted to warning), Makefile targets (typecheck, check), pre-commit hook, and a new CI workflow that runs ruff + pyright on PR/push to master. Genuine bugs surfaced and fixed in the same pass: - app/services/memory.py: AsyncMemory and metadata defaults typed as bare AsyncMemory/dict instead of Optional - app/services/llm/service.py: @overload with Type[T] default left T unsolvable; made keyword-only and required Side fixes: Makefile lint/format now use `uv run` (was bare ruff, broken in venv-only setups); ruff added to [dependency-groups].dev so default `uv sync` installs it. Baseline: 0 errors, 94 warnings — warnings are real signal for a follow-up cleanup pass (mostly SQLModel/SQLAlchemy stub gaps). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> | 4 个月前 |
| init commit | 1 年前 |
| chore: add pre-commit hooks for linting, formatting, and secret detection - ruff check + ruff-format enforce code style on every commit - detect-secrets blocks accidental API key/secret commits - pre-commit-hooks: trailing whitespace, EOF, YAML/JSON/TOML validation, large file guard, no direct commits to master - Auto-fixed trailing whitespace and missing EOF newlines across repo - Added make pre-commit and make pre-commit-update targets - install target now runs pre-commit install automatically Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | 4 个月前 |
| clean up obsolete Docker scripts and align CI build commands | 2 个月前 |
| chore: add pre-commit hooks for linting, formatting, and secret detection - ruff check + ruff-format enforce code style on every commit - detect-secrets blocks accidental API key/secret commits - pre-commit-hooks: trailing whitespace, EOF, YAML/JSON/TOML validation, large file guard, no direct commits to master - Auto-fixed trailing whitespace and missing EOF newlines across repo - Added make pre-commit and make pre-commit-update targets - install target now runs pre-commit install automatically Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | 4 个月前 |
| install Docker dependencies from uv.lock to prevent version drift | 2 个月前 |
| chore: add MIT license | 1 年前 |
| changes | 2 个月前 |
| docs: add FAQ section to README Adapted from PR #70 by @meichuanyi with corrections: clarified that multi-provider LLM support is planned (#51) not current, removed the nonexistent mem0 API key reference (memory is self-hosted via pgvector), and pointed rate-limit troubleshooting at app/core/limiter.py. | 3 个月前 |
| docs: overhaul documentation with dedicated guides and Mermaid diagrams - Rewrite README to a short landing page (~60 lines) with links to docs/ - Add docs/ directory with 9 focused guides: - getting-started.md: Docker + local setup, first API call, customisation points - architecture.md: system overview, request lifecycle, agent graph (Mermaid) - configuration.md: all env vars with defaults, grouped by concern - database.md: ER diagram, schema explanation, Alembic migration guide - authentication.md: JWT flow diagram, all auth endpoints documented - llm-service.md: model registry, retry/fallback flowchart - memory.md: mem0 + cache sequence diagram, per-user isolation - observability.md: Langfuse, structured logging, Prometheus, profiling - evaluation.md: eval framework, custom metrics, report format - docker.md: full service diagram including Valkey and cAdvisor - Rewrite SECURITY.md (was GitHub template placeholder with fake version numbers) - Delete schema.sql (stale SQLite syntax, replaced by docs/database.md + Alembic) | 4 个月前 |
| feat: integrate Alembic for database migrations - Added Alembic configuration file (alembic.ini) for managing database migrations. - Implemented environment setup for Alembic in env.py to dynamically load database URL from application settings. - Created initial migration script for adding optional username fields to User and Session models. - Updated Makefile with commands for running migrations and managing database states. - Included Alembic as a dependency in pyproject.toml and updated lock file. This setup allows for streamlined database schema management and version control. | 4 个月前 |
| chore: add pre-commit hooks for linting, formatting, and secret detection - ruff check + ruff-format enforce code style on every commit - detect-secrets blocks accidental API key/secret commits - pre-commit-hooks: trailing whitespace, EOF, YAML/JSON/TOML validation, large file guard, no direct commits to master - Auto-fixed trailing whitespace and missing EOF newlines across repo - Added make pre-commit and make pre-commit-update targets - install target now runs pre-commit install automatically Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | 4 个月前 |
| chore: drop SQLModel typing workarounds via sqlmodel>=0.0.25 + col() Two changes that together remove every `# pyright: ignore` comment from the SQL services: * Bumped `sqlmodel>=0.0.25` (was 0.0.24). Release 0.0.25 includes PR #1342, which adds @overload coverage for Insert/Update/Delete to Session.exec — closing sqlmodel#909. Fixes the reportCallIssue / reportArgumentType pair on `db.exec(stmt)` for Update statements without any code change. * Wrapped column references in `col(...)` at the four comparison / order_by sites in database.get_user_sessions and session_naming._claim_session. `col()` is the SQLModel-maintainer-recommended fix (per discussion #1391) for the class-level attribute access typing gap — `Foo.column` exposes the field's Python type instead of the SQLAlchemy column descriptor, so `Foo.col == X` types as `bool`. col() returns Mapped[T] which has the proper column operators, so .where()/.order_by() arguments typecheck cleanly. Side win: deleted the issue-reference comments that previously documented these as known gaps. The workarounds were the documentation; with col() they're no longer workarounds. State: 0 errors, 0 warnings under typeCheckingMode = "standard". Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> | 4 个月前 |
| chore: drop SQLModel typing workarounds via sqlmodel>=0.0.25 + col() Two changes that together remove every `# pyright: ignore` comment from the SQL services: * Bumped `sqlmodel>=0.0.25` (was 0.0.24). Release 0.0.25 includes PR #1342, which adds @overload coverage for Insert/Update/Delete to Session.exec — closing sqlmodel#909. Fixes the reportCallIssue / reportArgumentType pair on `db.exec(stmt)` for Update statements without any code change. * Wrapped column references in `col(...)` at the four comparison / order_by sites in database.get_user_sessions and session_naming._claim_session. `col()` is the SQLModel-maintainer-recommended fix (per discussion #1391) for the class-level attribute access typing gap — `Foo.column` exposes the field's Python type instead of the SQLAlchemy column descriptor, so `Foo.col == X` types as `bool`. col() returns Mapped[T] which has the proper column operators, so .where()/.order_by() arguments typecheck cleanly. Side win: deleted the issue-reference comments that previously documented these as known gaps. The workarounds were the documentation; with col() they're no longer workarounds. State: 0 errors, 0 warnings under typeCheckingMode = "standard". Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> | 4 个月前 |