- 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>
228 lines
8.3 KiB
Markdown
228 lines
8.3 KiB
Markdown
# 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:**
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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 |
|