Version increment to mark basic setup completion milestone. Changes: - Updated APP_VERSION to 0.1.1 in src/core/config.py - Released CHANGELOG.md [Unreleased] section as [0.1.1] - Updated version links to use git.schweitz.net repository This version represents the completion of all core infrastructure: - Agent interface and implementations - Responses API with full feature set - Chat Completions wrapper - Comprehensive test coverage (95 tests, 78.95%) - Production-ready architecture 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
121 lines
4.7 KiB
Markdown
121 lines
4.7 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [Unreleased]
|
|
|
|
## [0.1.1] - 2025-12-06
|
|
|
|
### Added
|
|
|
|
#### Agent Interface (Phase 1)
|
|
- Abstract `AgentInterface` base class for model abstraction
|
|
- `LoremTesterAgent`: Full-featured mock agent with realistic behavior
|
|
- Configurable reasoning effort levels (none, minimal, low, medium, high, xhigh)
|
|
- Random tool/function call generation for testing
|
|
- Error triggers: rate_limit, context_overflow, invalid_tool
|
|
- Temperature-based response variation
|
|
- `TatlockAgent`: Placeholder for future PydanticAI integration
|
|
- `ModelRegistry`: Centralized model management and discovery
|
|
- 18 agent tests with comprehensive coverage
|
|
|
|
#### Responses API (Phases 2, 3, 6)
|
|
- OpenAI Responses API format with structured output (`/v1/responses`)
|
|
- Reasoning items (thinking summaries with configurable effort)
|
|
- Function call items (tool execution simulation)
|
|
- Message items (assistant responses with output_text)
|
|
- Streaming and non-streaming modes
|
|
- Real-time streaming with SSE-Starlette
|
|
- Conversation history management (Phase 3):
|
|
- Hybrid client/server approach (client maintains state, server tracks)
|
|
- Auto-generated deterministic conversation IDs from message hash
|
|
- Configurable max turns with automatic trimming (default: 20)
|
|
- Context window management with approximate token counting
|
|
- Token usage statistics
|
|
- Placeholder for future vector memory (Qdrant)
|
|
- Advanced features (Phase 6):
|
|
- Parameter validation with Pydantic field validators
|
|
- Temperature: 0.0-2.0 range enforcement
|
|
- Reasoning effort: 6 levels validation
|
|
- Max output tokens: positive integer enforcement
|
|
- Stop sequences: up to 4, non-empty strings
|
|
- Real-time stop sequence detection during streaming
|
|
- Real-time max tokens enforcement with token counting
|
|
- 45 Responses API tests (router, error handling, history, advanced features)
|
|
|
|
#### Chat Completions Wrapper (Phase 5)
|
|
- OpenAI Chat Completions compatibility layer (`/v1/chat/completions`)
|
|
- Single source of truth architecture (wraps Responses API)
|
|
- Automatic reasoning generation
|
|
- Converts reasoning items to `<think>` tags for Open WebUI
|
|
- Pipeline prefix preservation
|
|
- System message support
|
|
- Enhanced error types (RateLimitError, ContextLengthError)
|
|
- 12 Chat Completions tests (router + streaming wrapper)
|
|
|
|
#### Application Infrastructure
|
|
- FastAPI application factory pattern
|
|
- CORS middleware with configurable origins
|
|
- Global exception handlers:
|
|
- AppException handler for custom errors
|
|
- RequestValidationError handler for Pydantic validation
|
|
- General exception handler for unexpected errors
|
|
- Lifespan management for startup/shutdown
|
|
- OpenAPI schema with interactive documentation
|
|
- 16 main application tests
|
|
|
|
#### Testing Infrastructure
|
|
- Comprehensive test suite: 95 tests, 78.95% coverage (up from 62%)
|
|
- Async test support with pytest-asyncio
|
|
- Test fixtures for sync and async clients
|
|
- Integration tests for all API endpoints
|
|
- Streaming functionality tests
|
|
- Parameter validation tests
|
|
- Error handling tests
|
|
- Conversation history tests
|
|
|
|
#### Documentation
|
|
- Complete README.md rewrite with hybrid architecture
|
|
- Architecture diagrams and decision documentation
|
|
- AGENTS.md with technical implementation details
|
|
- API usage examples for all endpoints
|
|
- Conversation history guide
|
|
- Open WebUI integration instructions
|
|
- Troubleshooting section
|
|
- Implementation planning documents
|
|
|
|
### Changed
|
|
- Hybrid architecture with Responses API as primary endpoint
|
|
- Chat Completions now wraps Responses API (no duplicate logic)
|
|
- Enhanced error handling with OpenAI-compatible format
|
|
- Improved streaming with word-by-word delivery
|
|
- Better test organization with domain-based structure
|
|
|
|
### Security
|
|
- Minor version locking for all dependencies
|
|
- All packages CVE-checked (as of 2025-12-06)
|
|
- Environment variable protection via .gitignore
|
|
- No known vulnerabilities in dependency tree
|
|
- Input validation on all API endpoints
|
|
|
|
## [0.1.0] - 2025-12-06
|
|
|
|
### Added
|
|
- Project initialization
|
|
- Python 3.12.11 environment
|
|
- FastAPI 0.123.9 web framework
|
|
- PydanticAI 1.27.0 dependency (ready for future integration)
|
|
- Mock chat completions (lorem ipsum responses)
|
|
- Mock model listing (mistral-nemo:latest)
|
|
- Testing infrastructure (pytest, coverage, ruff, mypy)
|
|
- Configuration management with pydantic-settings
|
|
- CORS middleware
|
|
- Exception handlers (OpenAI-compatible error format)
|
|
|
|
[Unreleased]: https://git.schweitz.net/jpmschweitzer/tatlock/compare/v0.1.1...main
|
|
[0.1.1]: https://git.schweitz.net/jpmschweitzer/tatlock/compare/v0.1.0...v0.1.1
|
|
[0.1.0]: https://git.schweitz.net/jpmschweitzer/tatlock/releases/tag/v0.1.0
|