Completes Phase 4 (Agentic Loop with ReAct), Phase 7 (Code Execution), and Phase 8 (Prompt Server) as specified in the implementation plan. **Phase 4: Agentic Loop with ReAct Pattern (agent.rs - 398 lines)** - Complete AgentExecutor with reasoning loop - LlmResponse enum: ToolCall, FinalAnswer, Reasoning - ReAct parser supporting THOUGHT/ACTION/ACTION_INPUT/FINAL_ANSWER - Tool discovery and execution integration - AgentResult with iteration tracking and message history - Integration with owlen-agent CLI binary and TUI **Phase 7: Code Execution with Docker Sandboxing** *Sandbox Module (sandbox.rs - 255 lines):* - Docker-based execution using bollard - Resource limits: 512MB memory, 50% CPU - Network isolation (no network access) - Timeout handling (30s default) - Container auto-cleanup - Support for Rust, Node.js, Python environments *Tool Suite (tools.rs - 410 lines):* - CompileProjectTool: Build projects with auto-detection - RunTestsTool: Execute test suites with optional filters - FormatCodeTool: Run formatters (rustfmt/prettier/black) - LintCodeTool: Run linters (clippy/eslint/pylint) - All tools support check-only and auto-fix modes *MCP Server (lib.rs - 183 lines):* - Full JSON-RPC protocol implementation - Tool registry with dynamic dispatch - Initialize/tools/list/tools/call support **Phase 8: Prompt Server with YAML & Handlebars** *Prompt Server (lib.rs - 405 lines):* - YAML-based template storage in ~/.config/owlen/prompts/ - Handlebars 6.0 template engine integration - PromptTemplate with metadata (name, version, mode, description) - Four MCP tools: - get_prompt: Retrieve template by name - render_prompt: Render with Handlebars variables - list_prompts: List all available templates - reload_prompts: Hot-reload from disk *Default Templates:* - chat_mode_system.yaml: ReAct prompt for chat mode - code_mode_system.yaml: ReAct prompt with code tools **Configuration & Integration:** - Added Agent module to owlen-core - Updated owlen-agent binary to use new AgentExecutor API - Updated TUI to integrate with agent result structure - Added error handling for Agent variant **Dependencies Added:** - bollard 0.17 (Docker API) - handlebars 6.0 (templating) - serde_yaml 0.9 (YAML parsing) - tempfile 3.0 (temporary directories) - uuid 1.0 with v4 feature **Tests:** - mode_tool_filter.rs: Tool filtering by mode - prompt_server.rs: Prompt management tests - Sandbox tests (Docker-dependent, marked #[ignore]) All code compiles successfully and follows project conventions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
81 lines
1.9 KiB
TOML
81 lines
1.9 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"crates/owlen-core",
|
|
"crates/owlen-tui",
|
|
"crates/owlen-cli",
|
|
"crates/owlen-ollama",
|
|
"crates/owlen-mcp-server",
|
|
"crates/owlen-mcp-llm-server",
|
|
"crates/owlen-mcp-client",
|
|
"crates/owlen-mcp-code-server",
|
|
"crates/owlen-mcp-prompt-server",
|
|
]
|
|
exclude = []
|
|
|
|
[workspace.package]
|
|
version = "0.1.9"
|
|
edition = "2021"
|
|
authors = ["Owlibou"]
|
|
license = "AGPL-3.0"
|
|
repository = "https://somegit.dev/Owlibou/owlen"
|
|
homepage = "https://somegit.dev/Owlibou/owlen"
|
|
keywords = ["llm", "tui", "cli", "ollama", "chat"]
|
|
categories = ["command-line-utilities"]
|
|
|
|
[workspace.dependencies]
|
|
# Async runtime and utilities
|
|
tokio = { version = "1.0", features = ["full"] }
|
|
tokio-stream = "0.1"
|
|
tokio-util = { version = "0.7", features = ["rt"] }
|
|
futures = "0.3"
|
|
futures-util = "0.3"
|
|
|
|
# TUI framework
|
|
ratatui = "0.28"
|
|
crossterm = "0.28"
|
|
tui-textarea = "0.6"
|
|
|
|
# HTTP client and JSON handling
|
|
reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls"] }
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = { version = "1.0" }
|
|
|
|
# Utilities
|
|
uuid = { version = "1.0", features = ["v4", "serde"] }
|
|
anyhow = "1.0"
|
|
thiserror = "1.0"
|
|
nix = "0.29"
|
|
which = "6.0"
|
|
tempfile = "3.8"
|
|
jsonschema = "0.17"
|
|
aes-gcm = "0.10"
|
|
ring = "0.17"
|
|
keyring = "3.0"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
urlencoding = "2.1"
|
|
regex = "1.10"
|
|
rpassword = "7.3"
|
|
sqlx = { version = "0.7", default-features = false, features = ["runtime-tokio-rustls", "sqlite", "macros", "uuid", "chrono", "migrate"] }
|
|
|
|
# Configuration
|
|
toml = "0.8"
|
|
shellexpand = "3.1"
|
|
|
|
# Database
|
|
sled = "0.34"
|
|
|
|
# For better text handling
|
|
textwrap = "0.16"
|
|
|
|
# Async traits
|
|
async-trait = "0.1"
|
|
|
|
# CLI framework
|
|
clap = { version = "4.0", features = ["derive"] }
|
|
|
|
# Dev dependencies
|
|
tokio-test = "0.4"
|
|
|
|
# For more keys and their definitions, see https://doc.rust-lang.org/cargo/reference/manifest.html
|