Add complete agent orchestration system that enables LLM to call tools: **Core Agent System** (`crates/core/agent`): - Agent execution loop with tool call/result cycle - Tool definitions in Ollama-compatible format (6 tools) - Tool execution with permission checking - Multi-iteration support with max iteration safety **Tool Definitions**: - read: Read file contents - glob: Find files by pattern - grep: Search for patterns in files - write: Write content to files - edit: Edit files with find/replace - bash: Execute bash commands **Ollama Integration Updates**: - Extended ChatMessage to support tool_calls - Added Tool, ToolCall, ToolFunction types - Updated chat_stream to accept tools parameter - Made tool call fields optional for Ollama compatibility **CLI Integration**: - Wired agent loop into all output formats (Text, JSON, StreamJSON) - Tool calls displayed with 🔧 icon, results with ✅ - Replaced simple chat with agent orchestrator **Permission Integration**: - All tool executions check permissions before running - Respects plan/acceptEdits/code modes - Returns clear error messages for denied operations **Example**: User: "Find all Cargo.toml files in the workspace" LLM: Calls glob("**/Cargo.toml") Agent: Executes and returns 14 files LLM: Formats human-readable response This transforms owlen from a passive chatbot into an active agent that can autonomously use tools to accomplish user goals. Tested with: qwen3:8b successfully calling glob tool 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
22 lines
521 B
TOML
22 lines
521 B
TOML
[package]
|
|
name = "agent-core"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
rust-version.workspace = true
|
|
|
|
[dependencies]
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
color-eyre = "0.6"
|
|
tokio = { version = "1", features = ["full"] }
|
|
futures-util = "0.3"
|
|
|
|
# Internal dependencies
|
|
llm-ollama = { path = "../../llm/ollama" }
|
|
permissions = { path = "../../platform/permissions" }
|
|
tools-fs = { path = "../../tools/fs" }
|
|
tools-bash = { path = "../../tools/bash" }
|
|
|
|
[dev-dependencies]
|