Skip to main content

Release Notes - v1.17.0

Major Changes

Capability-Based Agent Architecture

Overhaul of the Agent system with a modular, capability-based design:
New Agent Capabilities:
  • UseBash - Execute shell commands with configurable policies
  • UseFileTools - Read, write, edit, search, and list files
  • UseSkills - Manage reusable skill libraries
  • UseTaskPlanning - Multi-step task management with TodoWriteTool
  • UseMetadataTools - Agent scratchpad for inter-tool data sharing
  • UseStructuredOutputs - LLM-powered structured data extraction
  • UseSubagents - Recursive agent spawning with AgentRegistry
  • UseSelfCritique - Self-evaluation of agent work

HTTP Client Resilience Framework

New middleware for robust HTTP communication:
Features:
  • Exponential backoff with configurable jitter strategies
  • Respects Retry-After headers
  • Circuit breaker pattern (closed → open → half-open → closed)
  • Per-host circuit tracking
  • Idempotency keys for safe retries

Inference Retry

Smart retry logic for LLM inference requests:
Features:
  • Automatic retry on rate limits and transient errors
  • Length limit recovery (retry with “Continue.” prompt or increased max_tokens)
  • Provider-specific error classification with typed exceptions

Driver Capabilities System

Explicit capability declarations for all LLM providers:
All 14+ drivers now declare support for:
  • Output modes (JSON Schema, Tools, MdJson, Text)
  • Streaming
  • Tool/function calling
  • Native JSON schema mode

New Features

Agent Registry & Specifications

Declarative agent definitions with registry-based discovery:

Agent State Serialization

Efficient state persistence for distributed/resumable agents:

Deterministic Agent Testing

Test agents without LLM calls:

Real-time Agent Event Broadcasting

Broadcast agent events via Laravel Reverb/Pusher:

Message Collection Classes

New collection abstractions for messages:

Centralized Input Handling

Unified factories for content and message creation:

Provider Error Classification

Typed exceptions for better error handling:

MockSandbox for Testing

Mock command execution in tests:

Improvements

Agent System

  • Sophisticated continuation logic with priority-based resolution
  • Enhanced error handling with granular ErrorPolicy configuration
  • State processors integrated into capability installation
  • Tools can access agent state via CanAccessAgentState contract
  • Improved ToolCallingDriver with better parallelization

Messages Package

  • Content, Messages, Sections, Section now implement Countable and IteratorAggregate
  • MessageStore uses standard Metadata class instead of custom parameters
  • Cleaner API with partsList() and messageList() methods

Polyglot Package

  • Response adapters simplified (tool calls handled separately from content)
  • Better handling of empty content parts
  • AnthropicBodyFormat updated for new message structure

Evals Package

  • Driver capability filtering for test cases
  • Dependency injection support for test mocking

Instructor Package

  • Simplified MessageStore operations using new merge/cleanup methods
  • Enhanced array return handling respects defaultToStdClass() config

Breaking Changes

Agent Namespace Reorganization

Core classes moved from Agent/ to Agent/Core/:
  • Agent/Data/AgentStateAgent/Core/Data/AgentState
  • Agent/Collections/Agent/Core/Collections/
  • Agent/Contracts/Agent/Core/Contracts/

Agent Construction

Old AgentFactory removed. Use AgentBuilder:

Messages API Deprecations

  • Content::parts() → use Content::partsList()
  • Messages::head() → use Messages::headList()
  • Messages::tail() → use Messages::tailList()
  • Messages::all() → use Messages::messageList()

MessageStore Parameters

MessageStoreParameters class removed. Use Metadata instead:

Driver Capabilities Interface

Drivers must implement new capabilities() method:

Provider Exceptions

HTTP errors now throw typed ProviderException subclasses instead of generic exceptions.

Bug Fixes

  • Fixed variadic parameter type handling in StructureFactory for mixed/null types
  • Fixed PHP 8.5 compatibility issues with reflection API
  • Fixed Gemini response adapter content concatenation
  • Fixed contentParts() returning collection instead of array in templates
  • Updated Symfony Console API calls (add()addCommand())