Skip to content

Releases: Ammar-Alnagar/Helios-Engine

0.5.5

29 Dec 10:54
621b788

Choose a tag to compare

What's Changed

Full Changelog: 0.5.0...0.5.5

0.5.0

25 Dec 07:14
aba8628

Choose a tag to compare

What's Changed

Full Changelog: 0.4.5...0.5.0

0.4.5

23 Nov 02:08
6c91f91

Choose a tag to compare

The "rebuild" branch introduces a significant new feature called ReAct mode (Reasoning and Acting) to the Helios Engine, updating the crate version from 0.4.4 to 0.4.5.

Key Changes:
ReAct Mode Feature:

Added a simple .react() method to the agent builder pattern
Enables agents to reason about tasks before taking actions
Implements a two-phase approach: Reasoning → Action
Provides transparent reasoning output with the prefix "💭 ReAct Reasoning:"
Works seamlessly with all existing tools
Documentation Updates:

Created comprehensive docs/REACT.md documentation
Updated README.md to highlight the new feature
Added ReAct information to docs/FEATURES.md
Updated documentation index in docs/README.md
Code Implementation:

Added react_mode flag to the Agent struct
Implemented generate_reasoning() function
Integrated ReAct logic into chat execution methods
Added builder method for enabling ReAct
Examples and Tests:

Created examples/react_agent.rs with complete ReAct demonstration
Added comprehensive test suite in tests/react_tests.rs
Updated integration tests with ReAct-specific tests
The ReAct feature allows developers to create agents that think before they act, which is particularly useful for complex multi-step tasks requiring planning and coordination, while maintaining the existing functionality for simpler use cases.

0.4.4

08 Nov 17:07

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 0.4.3...0.4.4

0.4.3

07 Nov 12:58
daadb49

Choose a tag to compare

🆕 New Features

1. Multiple Tools in Single Call

Before:

let agent = Agent::builder("MyAgent")
    .tool(Box::new(CalculatorTool))
    .tool(Box::new(EchoTool))
    .tool(Box::new(FileSearchTool))
    .tool(Box::new(FileReadTool))
    .build()
    .await?;

After:

let agent = Agent::builder("MyAgent")
    .tools(vec![
        Box::new(CalculatorTool),
        Box::new(EchoTool),
        Box::new(FileSearchTool),
        Box::new(FileReadTool),
    ])
    .build()
    .await?;

Benefits:

  • ✅ More readable and cleaner code
  • ✅ Easier to manage large lists of tools
  • ✅ Backward compatible - old syntax still works
  • ✅ Can organize tools into groups

2. Multiple Agents in Single Call (ForestBuilder)

Before:

let forest = ForestBuilder::new()
    .agent("coordinator".to_string(), Agent::builder("coordinator"))
    .agent("worker1".to_string(), Agent::builder("worker1"))
    .agent("worker2".to_string(), Agent::builder("worker2"))
    .build()
    .await?;

After:

let forest = ForestBuilder::new()
    .agents(vec![
        ("coordinator".to_string(), Agent::builder("coordinator")),
        ("worker1".to_string(), Agent::builder("worker1")),
        ("worker2".to_string(), Agent::builder("worker2")),
    ])
    .build()
    .await?;

Benefits:

  • ✅ Much cleaner for forests with many agents
  • ✅ Easier to see the full agent structure at a glance
  • ✅ Backward compatible - old syntax still works
  • ✅ Can organize agents into logical groups

📚 Documentation Improvements

Consolidation Results

Before: 24 documentation files
After: 10 documentation files
Reduction: 58% (14 files removed)

New Documentation Structure

Core Guides (New/Enhanced)

  1. GETTING_STARTED.md (NEW) - Comprehensive starter guide

    • Installation
    • Quick start
    • Basic usage
    • Building agents
    • Tools overview
    • Forest overview
    • CLI reference
  2. FOREST.md (NEW) - Complete Forest of Agents guide

    • Basic usage
    • Coordinator-based planning
    • Agent communication
    • Advanced patterns
    • Best practices
    • Multiple examples
  3. TOOLS.md (Enhanced) - Complete tools guide

    • All built-in tools
    • Custom tool creation
    • Tool builder patterns
    • Advanced patterns
    • Best practices

Reference Documentation (Kept)

  1. API.md - Complete API reference
  2. RAG.md - RAG implementation guide
  3. CONFIGURATION.md - Configuration options
  4. ARCHITECTURE.md - System architecture
  5. FEATURES.md - Feature overview
  6. USING_AS_CRATE.md - Library usage
  7. README.md - Documentation index

Files Removed (Content Consolidated)

Removed File Consolidated Into
FOREST_COORDINATOR_PLANNING.md FOREST.md
FOREST_ENHANCEMENT_SUMMARY.md FOREST.md
FOREST_OF_AGENTS_UPDATES.md FOREST.md
QUICKSTART.md GETTING_STARTED.md
QUICKREF.md GETTING_STARTED.md
TUTORIAL.md GETTING_STARTED.md
USAGE.md GETTING_STARTED.md
INSTALLATION.md GETTING_STARTED.md
TOOL_CREATION_SIMPLE.md TOOLS.md
STREAMING.md FEATURES.md
ADVANCED.md Multiple files
PROJECT_OVERVIEW.md README.md + ARCHITECTURE.md
FOLDER_STRUCTURE.md ARCHITECTURE.md
IMPLEMENTATION_SUMMARY.md Removed (outdated)

Benefits of Documentation Consolidation

  • Easier Navigation - Fewer files to search through
  • Better Organization - Related content grouped together
  • Reduced Redundancy - No duplicate information
  • Clearer Structure - Logical progression for learning
  • Easier Maintenance - Fewer files to keep updated
  • Comprehensive Guides - Each file covers its topic completely

🔄 Updated Examples

The following examples now use the new improved syntax:

  1. examples/agent_with_tools.rs - Uses .tools(vec![...])
  2. examples/forest_of_agents.rs - Uses .agents(vec![...])

Both examples demonstrate the cleaner, more readable syntax while maintaining full functionality.


✅ Testing & Validation

All Tests Pass

test result: ok. 101 passed; 0 failed; 0 ignored

All Examples Compile

Finished `dev` profile [unoptimized + debuginfo] target(s)

Backward Compatibility

  • ✅ Old .tool() method still works
  • ✅ Old .agent() method still works
  • ✅ No breaking changes to existing code
  • ✅ Existing examples still function

🎯 Migration Guide

For Tool Users

No migration required! The old syntax still works:

// This still works perfectly
.tool(Box::new(CalculatorTool))
.tool(Box::new(EchoTool))

But you can upgrade to the cleaner syntax:

// New cleaner way
.tools(vec![
    Box::new(CalculatorTool),
    Box::new(EchoTool),
])

For Forest Users

No migration required! The old syntax still works:

// This still works perfectly
.agent("worker1".to_string(), Agent::builder("worker1"))
.agent("worker2".to_string(), Agent::builder("worker2"))

But you can upgrade to the cleaner syntax:

// New cleaner way
.agents(vec![
    ("worker1".to_string(), Agent::builder("worker1")),
    ("worker2".to_string(), Agent::builder("worker2")),
])

For Documentation Users

Updated navigation:

  • Instead of QUICKSTART.md → Use GETTING_STARTED.md
  • Instead of TUTORIAL.md → Use GETTING_STARTED.md
  • Instead of USAGE.md → Use GETTING_STARTED.md
  • Instead of multiple Forest docs → Use FOREST.md
  • Instead of TOOL_CREATION_SIMPLE.md → Use TOOLS.md

All content has been preserved and enhanced in the consolidated files.


📈 Impact

Code Quality

  • ✅ More readable and maintainable
  • ✅ Easier to understand for new users
  • ✅ Follows Rust best practices
  • ✅ Consistent with modern Rust APIs

Developer Experience

  • ✅ Less typing for common operations
  • ✅ More intuitive API
  • ✅ Better code organization
  • ✅ Clearer documentation structure

Documentation Quality

  • ✅ 60% fewer files to maintain
  • ✅ Easier to find information
  • ✅ More comprehensive guides
  • ✅ Better examples and patterns

🚀 Next Steps

Recommended Actions

  1. Review the new documentation structure in docs/README.md
  2. Check out GETTING_STARTED.md for the complete guide
  3. Explore FOREST.md for multi-agent patterns
  4. Try the new syntax in your projects (optional, no rush!)
  5. Update bookmarks to point to new documentation files

Future Enhancements (Optional)

Consider these improvements for future releases:

  1. Tool Groups - Pre-defined tool sets for common use cases

    .tools(ToolGroups::file_operations())
    .tools(ToolGroups::data_analysis())
  2. Agent Templates - Pre-configured agent builders

    .agents(AgentTemplates::development_team())
  3. Builder Validation - Better error messages

    .validate_before_build(true)
  4. Configuration Presets - Common configurations

    Config::preset("local_llama")
    Config::preset("production_gpt4")

📊 Statistics

Code Changes

  • Files Modified: 4
    • src/agent.rs - Added .tools() method
    • src/forest.rs - Added .agents() method
    • examples/agent_with_tools.rs - Updated to use new syntax
    • examples/forest_of_agents.rs - Updated to use new syntax

Documentation Changes

  • Files Removed: 14
  • Files Created: 2 (GETTING_STARTED.md, FOREST.md)
  • Files Updated: 1 (README.md)
  • Net Change: -12 files

Test Results

  • Total Tests: 101
  • Passed: 101 ✅
  • Failed: 0
  • Success Rate: 100%

🙏 Feedback Welcome!

We'd love to hear your thoughts on these improvements:

  • Do you prefer the new syntax?
  • Is the documentation easier to navigate?
  • What other improvements would you like to see?

Open an issue or PR on GitHub to share your feedback!


Version: 0.4.3+
Date: 2025
Status: ✅ Complete & Tested

0.4.2

06 Nov 16:02
45718e2

Choose a tag to compare

Overview

The new ToolBuilder feature in Helios Engine introduces a dramatically simplified way to create custom tools for LLM agents. With ToolBuilder, developers can wrap any function as a tool using a fluent builder pattern or the ultra-simple quick_tool! macro, eliminating the need for manual trait implementation and boilerplate code.


Key Highlights

  • Zero Boilerplate: Create tools in a single expression with automatic parameter extraction and type inference.
  • Builder Pattern: Use ToolBuilder to fluently define tool name, description, parameters, and execution logic.
  • Macro Magic: The quick_tool! macro enables tool creation with just a function signature and body.
  • Type Safety: Supports Rust primitives (i32, f64, bool, String, etc.) with automatic JSON extraction and conversion.
  • Async & Sync Support: Easily define synchronous or asynchronous tool logic.
  • Comprehensive Examples: See examples/tool_builder_demo.rs for real-world usage.

Usage Examples

1. ToolBuilder Pattern

use helios_engine::{ToolBuilder, ToolResult};
use serde_json::Value;

let tool = ToolBuilder::new("my_tool")
    .description("Does something useful")
    .required_parameter("input", "string", "The input value")
    .sync_function(|args: Value| {
        let input = args.get("input").and_then(|v| v.as_str())
            .ok_or_else(|| helios_engine::HeliosError::ToolError(
                "Missing input parameter".to_string()
            ))?;
        
        Ok(ToolResult::success(format!("Processed: {}", input)))
    })
    .build();

2. Macro-Based Tool Creation

use helios_engine::quick_tool;

let volume_tool = quick_tool! {
    name: calculate_volume,
    description: "Calculate the volume of a box",
    params: (width: f64, height: f64, depth: f64),
    execute: |width, height, depth| {
        format!("Volume: {:.2} cubic meters", width * height * depth)
    }
};

3. Real-World Demo

See the full demo in:

// Demonstrates creating tools for addition, multiplication, area, volume, BMI, greetings, and discounts
// using both ToolBuilder and quick_tool! macro

API Reference

  • ToolBuilder::new(name)
  • .description(desc)
  • .required_parameter(name, type, desc)
  • .optional_parameter(name, type, desc)
  • .function(async_fn) / .sync_function(sync_fn)
  • .build() / .try_build()

Parameter Types: "string", "number", "boolean", "object", "array"


Best Practices

  • Write clear descriptions for tools and parameters.
  • Always validate required parameters and handle errors gracefully.
  • Use async functions for I/O-bound tools.
  • See examples/tool_builder_demo.rs for patterns and advanced usage.

Documentation


Testing & Verification

🧪 TESTING:

  • Run the demo:
    cargo run --example tool_builder_demo
    
  • All tools are covered in the example and validated for correct type inference and execution.

EXPECTED_OUTPUTS:

  • Agent responds correctly to math, greeting, and discount queries using the generated tools.

⚠️ NOTES:

  • No errors or warnings detected in the codebase.
  • No GitHub releases or tags found; this report is based on the latest code and documentation.

0.4.1

04 Nov 02:41

Choose a tag to compare

Added new and improved Forest of Agents v2 with planning now .

also added native support for openrouter and vllm extra return parameters and tool calling

0.4.0

03 Nov 21:54

Choose a tag to compare

added features docs

0.3.9

03 Nov 21:42

Choose a tag to compare

fixing the examples and new syntax

0.3.8

03 Nov 20:46

Choose a tag to compare

fixed default streaming