Files
webber/webber-api/docs/COVERAGE.md
T
jpmschweitzerandClaude Opus 4.5 c839e263f9
Build and Push API / release (push) Successful in 3s
Build and Push API / build (push) Has been cancelled
test: add integration and E2E test infrastructure
- Add pytest markers (integration, e2e, slow) with skip logic
- Add command line options (--run-integration, --run-e2e)
- Create sample_project and sample_project_with_bug fixtures
- Add test_integration.py with 10 LLM tests
- Add test_e2e.py with 12 API server tests
- Update COVERAGE.md to reflect ~65% complete

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 19:33:21 +01:00

8.3 KiB

Webber Feature Coverage

Tracking progress towards Claude Code-like functionality

Current Status: ~65% Complete

Last updated: 2026-01-11


Phase 1-6: Foundation (Original Plan)

Phase 1: Tool Infrastructure Complete

Component Status Notes
BaseTool abstract class src/domains/tools/base.py
ToolResult dataclass Consistent success/error/truncated handling
ReadFileTool With line numbers, offset/limit support
GlobFilesTool Pattern matching, sorted by mtime
GrepContentTool Regex search with context lines
BashReadOnlyTool Allowlist-based command filtering
EditFileTool Find-and-replace with unique match validation
WriteFileTool Create/overwrite files with size limits
BashTool (full) Write-enabled shell with safety controls
WebSearchTool SearXNG integration for web search
Path validation allowed_paths restriction

Status: Tools honor .gitignore patterns and default ignores (.venv/, __pycache__/, etc.)

Phase 2: Explore Agent Complete

Component Status Notes
BaseAgent abstract class src/domains/agents/base.py
Agent registry register_agent(), get_agent(), list_agents()
ExploreAgentImpl PydanticAI-based implementation
System prompts Mistral-optimized with tool examples
Tool registration @agent.tool decorator pattern
Sanitized Ollama provider Fixes content: null issue
Streaming support run_stream() method with SSE

Available tools: read_file, glob_files, grep_content, bash_readonly, edit_file, write_file, bash, web_search

Gap: Mistral Nemo sometimes hallucinates instead of using tool results.

Phase 3: CLI Foundation Complete

Component Status Notes
Typer + Rich setup Standalone webber-cli/ package
webber-cli --version Shows version from pyproject.toml
Console theming Centralized color palette
Markdown rendering Rich markdown output
Streaming display Real-time token output with --stream flag

Phase 4: Agentic Loop ⚠️ Partial

Component Status Notes
webber-cli chat command Interactive mode with streaming
webber-cli explore command One-shot query with streaming
SessionState dataclass Basic context tracking
AgenticLoop class ⚠️ Basic implementation, not fully utilized
Conversation history Not persisted between turns in CLI
Context management No token counting or summarization

Phase 5: REST API Complete

Component Status Notes
POST /agents/run Execute agent with prompt
POST /agents/stream SSE streaming responses
GET /agents/ List available agents
GET /agents/{name} Get agent info
Request/response schemas Pydantic models

Phase 6: Polish & Tests Complete

Component Status Notes
Tool unit tests 109 tests total
API endpoint tests 11 tests for agent routes
Health check tests 2 tests
Security tests 14 tests for path traversal, injection
Integration tests 10 tests with real LLM (requires Ollama)
E2E tests 12 tests against running API server

Future Work: Remaining Features

High Priority

Feature Category Description Complexity
Plan Agent Agents Design implementation approaches High
Task Agent Agents Autonomous multi-step execution High
Context summarization Infrastructure Compress history at token limit High
Conversation persistence CLI Multi-turn memory in chat mode Medium

Medium Priority

Feature Category Description Complexity
Tool result caching Infrastructure Cache file reads for performance Low
Session persistence CLI Save/resume conversations Medium
Todo tracking CLI Built-in task list (/todo) Medium
Git integration CLI Auto-commit, branch management Medium
Agent handoff Orchestration Explore → Plan → Task workflow High
Retry logic Infrastructure Auto-retry on tool failures Low

Low Priority

Feature Category Description Complexity
Notebook editing Tools Jupyter cell manipulation Medium
MCP support Infrastructure Model Context Protocol High
Config file CLI ~/.webber/config.toml Low
IDE integration CLI VS Code extension High
Parallel agents Orchestration Concurrent agent execution High
Agent memory Orchestration Shared context between agents Medium

Testing Coverage

Area Current Target Status
Tool unit tests 109 109
API tests 11 11
Security tests 14 14
Integration tests 10 10 Agent + real LLM
E2E tests 12 12 Full API workflow

Test breakdown:

  • Read/Glob/Grep tools: 17 tests
  • Edit/Write tools: 22 tests
  • Bash tools: 22 tests
  • Web search: 10 tests
  • Gitignore filtering: 10 tests
  • API endpoints: 11 tests
  • Security: 14 tests
  • Health checks: 2 tests
  • Integration (LLM): 10 tests
  • E2E (API): 12 tests

Running tests:

# Unit tests only (default)
pytest tests/

# Include integration tests (requires Ollama)
pytest tests/ --run-integration

# Include E2E tests (requires running API server)
pytest tests/ --run-e2e

# All tests
pytest tests/ --run-integration --run-e2e

Known Issues

  1. Model hallucination - Mistral Nemo sometimes makes up file contents instead of using actual tool results.

  2. No conversation memory - CLI chat mode doesn't persist context between sessions.

  3. Temperature setting - Changed from 0.0 to 0.3 for Mistral Nemo compatibility, may affect determinism.


Architecture Decisions Made

Decision Choice Rationale
Monorepo structure webber-api/, webber-cli/ Separate packages, shared root
Sanitized Ollama provider Custom wrapper Fixes PydanticAI + Ollama content: null bug
Dev port 8095 Separate from prod 8086 Avoid conflicts with Docker deployment
Tool choice "required" Force tool use Mistral Nemo needs explicit instruction
Temperature 0.3 Mistral recommendation 0.0 caused issues with Nemo
SearXNG for search Self-hosted Privacy, no API keys needed
SSE for streaming Server-Sent Events Simple, well-supported

Quick Reference: What Works Now

# Start dev server
cd webber-api && ./wakeup.sh

# CLI commands (from webber-cli/)
.venv/bin/webber-cli status                    # Check API connection
.venv/bin/webber-cli explore "find tests"      # One-shot exploration
.venv/bin/webber-cli explore "query" --no-stream  # Batch mode
.venv/bin/webber-cli chat                      # Interactive mode

# API endpoints
curl http://localhost:8095/health
curl http://localhost:8095/agents/
curl -X POST http://localhost:8095/agents/run \
  -H "Content-Type: application/json" \
  -d '{"agent_type":"explore","prompt":"list python files","working_dir":"."}'

# Streaming endpoint
curl -N http://localhost:8095/agents/stream \
  -H "Content-Type: application/json" \
  -d '{"agent_type":"explore","prompt":"find config files","working_dir":"."}'

Tools Available

Tool Type Description
read_file Read Read file contents with line numbers
glob_files Read Find files by pattern
grep_content Read Search file contents with regex
bash_readonly Read Safe bash commands (ls, git status, etc.)
edit_file Write Find-and-replace editing
write_file Write Create/overwrite files
bash Write Full bash with safety controls
web_search External Search web via SearXNG