This commit completes Phase 10 of the MCP migration by removing all
direct provider usage from CLI/TUI and enforcing MCP-first architecture.
## Changes
### Core Architecture
- **main.rs**: Replaced OllamaProvider with RemoteMcpClient
- Uses MCP server configuration from config.toml if available
- Falls back to auto-discovery of MCP LLM server binary
- **agent_main.rs**: Unified provider and MCP client to single RemoteMcpClient
- Simplifies initialization with Arc::clone pattern
- All LLM communication now goes through MCP protocol
### Dependencies
- **Cargo.toml**: Removed owlen-ollama dependency from owlen-cli
- CLI no longer knows about Ollama implementation details
- Clean separation: only MCP servers use provider crates internally
### Tests
- **agent_tests.rs**: Updated all tests to use RemoteMcpClient
- Replaced OllamaProvider::new() with RemoteMcpClient::new()
- Updated test documentation to reflect MCP requirements
- All tests compile and run successfully
### Examples
- **Removed**: custom_provider.rs, basic_chat.rs (deprecated)
- **Added**: mcp_chat.rs - demonstrates recommended MCP-based usage
- Shows how to use RemoteMcpClient for LLM interactions
- Includes model listing and chat request examples
### Cleanup
- Removed outdated TODO about MCP integration (now complete)
- Updated comments to reflect current MCP architecture
## Architecture
```
CLI/TUI → RemoteMcpClient (impl Provider)
↓ MCP Protocol (STDIO/HTTP/WS)
MCP LLM Server → OllamaProvider → Ollama
```
## Benefits
- ✅ Clean separation of concerns
- ✅ CLI is protocol-agnostic (only knows MCP)
- ✅ Easier to add new LLM backends (just implement MCP server)
- ✅ All tests passing
- ✅ Full workspace builds successfully
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
48 lines
1.0 KiB
TOML
48 lines
1.0 KiB
TOML
[package]
|
|
name = "owlen-cli"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
authors.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
homepage.workspace = true
|
|
description = "Command-line interface for OWLEN LLM client"
|
|
|
|
[features]
|
|
default = ["chat-client"]
|
|
chat-client = ["owlen-tui"]
|
|
|
|
[[bin]]
|
|
name = "owlen"
|
|
path = "src/main.rs"
|
|
required-features = ["chat-client"]
|
|
|
|
[[bin]]
|
|
name = "owlen-agent"
|
|
path = "src/agent_main.rs"
|
|
required-features = ["chat-client"]
|
|
|
|
[dependencies]
|
|
owlen-core = { path = "../owlen-core" }
|
|
# Optional TUI dependency, enabled by the "chat-client" feature.
|
|
owlen-tui = { path = "../owlen-tui", optional = true }
|
|
|
|
# CLI framework
|
|
clap = { version = "4.0", features = ["derive"] }
|
|
|
|
# Async runtime
|
|
tokio = { workspace = true }
|
|
tokio-util = { workspace = true }
|
|
|
|
# TUI framework
|
|
ratatui = { workspace = true }
|
|
crossterm = { workspace = true }
|
|
|
|
# Utilities
|
|
anyhow = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
regex = "1"
|
|
thiserror = "1"
|
|
dirs = "5"
|