mistral-nemo-large holds ~9.2 GB of the 11 GB card it shares with Speaches, which starves Whisper and breaks voice transcription. gemma4:e2b holds 1.9 GB and is faster. The deployed stack already overrides this via OLLAMA_AGENT_MODEL; this aligns the default so a deployment without that override does not reintroduce the contention. Co-Authored-By: Claude <noreply@anthropic.com>
183 lines
7.1 KiB
Markdown
183 lines
7.1 KiB
Markdown
# Changelog - Webber API
|
|
|
|
All notable changes to the Webber API will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [Unreleased]
|
|
|
|
### Changed
|
|
- Default `OLLAMA_AGENT_MODEL` is now `gemma4:e2b` instead of `mistral-nemo-large:latest`, so a deployment without an explicit override no longer exhausts shared GPU memory
|
|
|
|
## [1.0.1] - 2026-07-19
|
|
|
|
### Changed
|
|
- Default `TATLOCK_API_URL` and `SEARXNG_URL` now use docker container names (`http://tatlock:8000`, `http://searxng:8080`) instead of host IP:port, for container-to-container traffic on the docker-dataplane network
|
|
- CI workflow now pushes Docker images via the `git.schweitz.net` registry route
|
|
|
|
## [1.0.0] - 2026-01-15
|
|
|
|
### Added
|
|
- Event-based streaming for task agent (`StreamEvent` objects instead of raw text)
|
|
- New `tools_streaming.py` with all tools emitting structured events
|
|
- Event types: `tool_start`, `tool_done`, `thinking`, `response`, `error`, `done`
|
|
- Retry logic when LLM responds without calling tools (max 2 retries)
|
|
- Tracks `tools_called` counter on TaskContext
|
|
- Stronger retry prompt forces tool use
|
|
- Working directory context injected into all agent prompts
|
|
|
|
### Changed
|
|
- Hardened system prompts to enforce tool use before responding
|
|
- Added "CRITICAL RULE" section requiring tool calls first
|
|
- Made "MANDATORY WORKFLOW" more emphatic
|
|
- Updated explore and plan agents with `_build_prompt_with_context()` method
|
|
|
|
### Fixed
|
|
- Agent path hallucination - now explicitly communicates working directory to LLM
|
|
|
|
### Note
|
|
- Project paused: Local LLMs (Mistral Nemo 12B on available hardware) are not capable enough for reliable agentic tool use. Models frequently hallucinate responses instead of calling tools, even with prompt hardening and retry logic. Would require larger models (70B+) or cloud API integration to continue.
|
|
|
|
## [0.4.2] - 2026-01-11
|
|
|
|
### Added
|
|
- Retry logic for transient failures with exponential backoff
|
|
- `src/shared/retry.py` - `@with_retry` decorator and `retry_async()` function
|
|
- Retries on: timeout, connection errors, HTTP 429/5xx
|
|
- Configurable: `RETRY_MAX_ATTEMPTS`, `RETRY_BASE_DELAY`, `RETRY_MAX_DELAY`
|
|
- Web search tool now automatically retries on network failures
|
|
- 29 retry tests (205 total tests passing)
|
|
|
|
## [0.4.1] - 2026-01-11
|
|
|
|
### Fixed
|
|
- Replace `litellm` with `tiktoken` for token counting (dependency conflict with pydantic-ai)
|
|
- Update documentation (README.md, architecture.md) with conversation layer info
|
|
|
|
## [0.4.0] - 2026-01-11
|
|
|
|
### Added
|
|
- Conversation persistence layer with SQLAlchemy async
|
|
- Database models: `Conversation`, `Message` with UUID primary keys
|
|
- SQLite (dev) and PostgreSQL (prod) support via async engines
|
|
- Lazy database initialization pattern
|
|
- Context management infrastructure
|
|
- Token counting utilities using `tiktoken`
|
|
- Context summarization at 80% token threshold
|
|
- XML-tagged context prompt building for agent injection
|
|
- REST API for multi-turn conversations
|
|
- `POST /conversations/` - Create new conversation
|
|
- `GET /conversations/` - List conversations
|
|
- `GET /conversations/{id}` - Get conversation with history
|
|
- `POST /conversations/{id}/messages` - Add message (triggers agent)
|
|
- `DELETE /conversations/{id}` - Delete conversation
|
|
- New dependencies: `sqlalchemy[asyncio]~=2.0.36`, `aiosqlite~=0.21.0`, `tiktoken>=0.12.0`
|
|
- Config settings: `database_url`, `summarization_threshold`, `keep_recent_messages`
|
|
- 19 conversation tests, 6 token counting tests (176 total tests passing)
|
|
|
|
### Changed
|
|
- Updated COVERAGE.md to ~80% complete
|
|
- Quieter pytest output (`-q --tb=short` instead of `-v`)
|
|
|
|
## [0.3.4] - 2026-01-11
|
|
|
|
### Added
|
|
- Task Agent - Full orchestrator for autonomous multi-step task execution
|
|
- Has ALL tools: read, write, edit, bash (full), web_search
|
|
- New `spawn_agent` tool to launch sub-agents (Explore, Plan) for focused work
|
|
- Recursion prevention: cannot spawn nested Task agents
|
|
- 22 unit tests for registration, tools, spawn_agent, and API
|
|
- Complete agent hierarchy: Explore (read-only) → Plan (read-only) → Task (orchestrator)
|
|
|
|
## [0.3.3] - 2026-01-11
|
|
|
|
### Added
|
|
- Plan Agent - READ-ONLY software architect that designs implementation strategies
|
|
- Uses only read-only tools: `read_file`, `glob_files`, `grep_content`, `bash_readonly`
|
|
- Creates step-by-step implementation plans with critical files list
|
|
- 15 unit tests for registration, tools, and API
|
|
- Web search summarizer added to roadmap (future feature)
|
|
|
|
### Changed
|
|
- Updated COVERAGE.md to ~70% complete
|
|
|
|
## [0.3.2] - 2026-01-11
|
|
|
|
### Added
|
|
- Mandatory release procedure documentation in AGENTS.md
|
|
|
|
## [0.3.1] - 2026-01-11
|
|
|
|
### Added
|
|
- Integration test infrastructure with pytest markers (integration, e2e, slow)
|
|
- 10 LLM integration tests (requires Ollama)
|
|
- 12 E2E API tests (requires running server)
|
|
- Command line options: `--run-integration`, `--run-e2e`, `--ollama-url`, `--api-url`
|
|
- Sample project fixtures for testing
|
|
- 14 security tests (path traversal, command injection, input validation)
|
|
- Helper functions: `assert_contains_any`, `assert_contains_all`
|
|
|
|
### Changed
|
|
- Updated COVERAGE.md to ~65% complete
|
|
|
|
## [0.3.0] - 2026-01-10
|
|
|
|
### Added
|
|
- Explore agent with PydanticAI tool calling and Mistral Nemo
|
|
- Coding tools: `edit_file`, `write_file`, `bash` (full)
|
|
- Web search tool using SearXNG integration
|
|
- Streaming responses via SSE
|
|
- Sanitized Ollama provider (fixes `content: null` issue)
|
|
|
|
### Changed
|
|
- Reorganized into monorepo structure (webber-api/, webber-cli/, webber-sandbox/)
|
|
- Added ruff linter and fixed mypy errors
|
|
|
|
## [0.2.3] - 2026-01-09
|
|
|
|
### Added
|
|
- Docker healthcheck for container health monitoring
|
|
|
|
## [0.2.2] - 2026-01-09
|
|
|
|
### Fixed
|
|
- Config parsing for empty environment variables (allowed_paths, cors_*)
|
|
- Use `env_parse_none_str=""` to treat empty strings as None
|
|
|
|
## [0.2.1] - 2026-01-09
|
|
|
|
### Fixed
|
|
- CI/CD pipeline credentials configured
|
|
|
|
## [0.2.0] - 2026-01-09
|
|
|
|
### Added
|
|
- Reference prompts from claude-code-system-prompts for all agent types
|
|
- Detailed documentation for Explore, Plan, and Task agents
|
|
- Detailed documentation for File, Shell, and Search tools
|
|
- Utility prompts (TodoWrite, AskUserQuestion, conversation summarization, etc.)
|
|
- Security review prompt for code analysis
|
|
|
|
### Changed
|
|
- Expanded agents/README.md with capabilities and use cases
|
|
- Expanded tools/README.md with parameter details and behaviors
|
|
|
|
## [0.1.0] - 2026-01-09
|
|
|
|
### Added
|
|
- Initial FastAPI boilerplate setup
|
|
- Domain-based project structure (src/domains/, src/shared/)
|
|
- BaseController pattern with lazy router instantiation
|
|
- Pydantic Settings configuration with env file support
|
|
- Logger decorator with temporal benchmarking and trace IDs
|
|
- UserProvider singleton for request-scoped context
|
|
- Custom exception hierarchy
|
|
- Health endpoints (/, /health)
|
|
- Placeholder domains for agents (explore, plan, task)
|
|
- Placeholder domains for tools (file, shell, search)
|
|
- Placeholder domain for auth (tatlock integration)
|
|
- CI/CD workflow for Gitea with Docker build and Watchtower deployment
|
|
- Dockerfile for containerized deployment
|
|
- CVE-checked dependencies (2026-01-09)
|