Skip to content

Releases: Eigenwise/atomic-agents

v2.9.1

Choose a tag to compare

@Eigenwise Eigenwise released this 13 Jul 10:48

What's New

Patch release with a small correctness fix.

Bug Fixes

  • SystemPromptGenerator now copies a caller-supplied output_instructions list into a fresh list before appending the default instructions, so the caller's original list is no longer mutated as a side effect of constructing the generator.

Full Changelog

v2.9.0...v2.9.1

v2.9.0

Choose a tag to compare

@Eigenwise Eigenwise released this 09 Jul 12:52

What's New

Pluggable memory: BaseChatHistory

You can now plug in your own chat history backend (persistent, database-backed, whatever you need) instead of being stuck with the built-in in-memory store.

BaseChatHistory is an interface-only abstract base class that declares the memory contract AtomicAgent depends on. ChatHistory is now the built-in implementation of it, and AgentConfig.history is typed to the base class, so any conforming backend drops straight in.

Features

  • New BaseChatHistory ABC in atomic_agents.context defining the full memory contract (add_message, get_history, turn handling, dump()/load(), copy(), plus the history/current_turn_id attributes).
  • New persistent-memory example: a SQLite-backed history in ~40 lines using only the standard library, keyed by session_id. Run it twice and the conversation rehydrates.
  • New "Writing a Custom Memory Backend" guide section.

Improvements

  • AgentConfig.history now accepts any BaseChatHistory, not just ChatHistory.
  • Fixed a footgun where a provided-but-falsy custom history (e.g. one defining __len__) could be silently discarded and replaced with a fresh in-memory store.

This release is fully backwards compatible. Existing code using ChatHistory keeps working unchanged, since ChatHistory now subclasses BaseChatHistory.

Full Changelog

v2.8.1...v2.9.0

v2.8.1

Choose a tag to compare

@Eigenwise Eigenwise released this 09 Jun 20:37

Patch release.

  • Rebrand to the eigenwise GitHub home (URLs, plugin manifests, package metadata)
  • MiniMax M3 set as the default MiniMax model (#257)

Full changelog: v2.8.0...v2.8.1

v2.8.0

Choose a tag to compare

@Eigenwise Eigenwise released this 29 May 07:07

What's New in v2.8.0

A feature release adding new Forge tools, a pluggable system-prompt base class, automatic context-window trimming, and a rewritten Claude plugin — plus the multi-agent deep-research example.

Core framework

Features

  • BaseSystemPromptGenerator — new abstract base class so you can build custom system-prompt generators; SystemPromptGenerator now subclasses it (fully backwards compatible).
  • Automatic context trimmingAtomicAgent gains max_context_tokens to auto-trim history and prevent context-window overruns.

Bug Fixes

  • Prevent None in MCP prompt text extraction from causing a str.join TypeError (#252).

Atomic Forge — new tools

  • arxiv_search — academic paper search via the public arXiv API
  • datetime_tool — timezone-aware now / parse / convert / shift / diff
  • hackernews_search — Hacker News search via the free Algolia API
  • pdf_reader — PDF text + metadata extraction (local file or URL, page-range support)
  • weather — current conditions and daily/hourly forecast via Open-Meteo (no key)
  • wikipedia_search — Wikipedia search in any language edition (no key)
  • fia_signals — crypto market intelligence (regime, signals, yields, gas, trending, wallet risk)

Tooling & examples

  • Claude plugin v2 — rewritten as a skills-only pack with create-atomic-* skills (agent, tool, schema, context-provider) and an atomic-explorer subagent for codebase mapping; fewer atomic-reviewer false positives.
  • deep-research example — rebuilt as a proper multi-agent research pipeline (planner, decider, extractor, reflector, writer, QA) with a restored chat loop.
  • docs — clarified tool philosophy and the two patterns for using tools.

Full Changelog

v2.7.5...v2.8.0

v2.7.5

Choose a tag to compare

@Eigenwise Eigenwise released this 31 Mar 12:44

What's Changed

Dependency Updates

  • Update instructor from 1.13.0 to 1.14.5 (#225, #226)
  • Fix deprecated import paths (instructor.client.*instructor.core.client.*, instructor.multimodalinstructor.processing.multimodal)
  • Use instructor extras for provider SDKs (instructor[anthropic], instructor[groq], instructor[google-genai]) instead of separate package installs

Documentation

  • Updated installation docs (README, FAQ, cookbook) to recommend instructor extras for provider setup
  • Removed unused provider dependencies from examples (basic-multimodal, quickstart)

No Breaking Changes

  • The public API is unchanged — no user code changes needed
  • OpenAI is included by default with instructor
  • Other providers are available via extras: pip install instructor[anthropic], pip install instructor[groq], pip install instructor[google-genai]

Full Changelog: v2.7.4...v2.7.5

v2.7.4

Choose a tag to compare

@Eigenwise Eigenwise released this 23 Mar 17:55

What's New

Bug Fixes

  • Fix enum output strictness — Use Pydantic default strictness in AtomicAgent instead of strict mode, fixing issues with enum outputs (#218)
  • Fix delete turn ID type annotation — Corrected type annotation for turn ID in delete operation (#212)
  • Fix run stream empty response guard — Added guard against empty responses in streaming runs (#214)

Full Changelog

v2.7.3...v2.7.4

v2.7.3

Choose a tag to compare

@Eigenwise Eigenwise released this 17 Mar 17:05

What's Changed

Bug Fix

  • fix: use max_input_tokens for context window size (#216)
    • TokenCounter.get_max_tokens() was using litellm.get_max_tokens() which returns the output token limit (max_tokens), not the input context window (max_input_tokens)
    • Switched to litellm.get_model_info() and reading max_input_tokens, with fallback to max_tokens if unavailable
    • Uses explicit None check instead of or operator to correctly handle falsy values like 0
    • This fixes utilization being overstated by up to 8x for models where output limits are much smaller than context windows

Closes #215

Full Changelog: v2.7.1...v2.7.3

v2.7.1

Choose a tag to compare

@Eigenwise Eigenwise released this 14 Feb 12:52

Bug Fixes

  • fix(chat_history): Support nested multimodal content in get_history() (#208, #141)
    • ChatHistory.get_history() now correctly handles multimodal objects (Image, PDF, Audio) nested inside sub-schemas, not just at the top level
    • Replaced json.dumps() with Pydantic-native model_dump_json(exclude=...) to fix TypeError when schemas contain both multimodal fields and nested Pydantic models
    • Added recursive _extract_multimodal_info() that walks the full object tree to find multimodal content at any depth
    • Handles lists, tuples, dicts, and deeply nested Pydantic models
    • All-multimodal containers (list/dict) are fully excluded from the JSON output

New Examples

  • nested-multimodal: End-to-end example demonstrating nested multimodal schemas with actual LLM calls

Full Changelog

v2.7.0...v2.7.1

v2.6.0

Choose a tag to compare

@Eigenwise Eigenwise released this 03 Jan 17:52

What's New

MCP Output Schema Support

This release adds support for typed output schemas from MCP (Model Context Protocol) tools. When an MCP server provides an outputSchema for a tool, atomic-agents now creates a properly typed Pydantic model instead of using a generic output schema.

Features

  • Typed Output Schemas: Tools with MCP-provided outputSchema now generate typed Pydantic models with proper field definitions
  • Automatic Schema Detection: The system automatically detects when an MCP tool has an output schema and creates the appropriate typed model
  • Backwards Compatible: Tools without outputSchema continue to work exactly as before with the generic result field

Improvements

  • Enhanced error handling for structured content parsing with clear error messages
  • Added debug logging for JSON parse failures to aid troubleshooting
  • Added type validation for structuredContent responses
  • Improved documentation for is_output_schema parameter explaining discriminated union usage

Bug Fixes

  • Fixed silent failure when structuredContent has unexpected type (now raises TypeError)
  • Fixed fallback to generic handling that would fail for typed schemas
  • Added type check on content arrays before indexing to prevent errors on non-list types

Full Changelog

v2.5.0...v2.6.0

v2.5.0

Choose a tag to compare

@Eigenwise Eigenwise released this 23 Dec 13:59

What's New

Features

  • Provider-agnostic token counting - New utilities for accurate token counting across different LLM providers (#197)
  • Claude Code plugin - Official plugin for Atomic Agents development workflow (#199)

Documentation

  • Comprehensive Memory Guide - New ~1200 line guide covering memory management, turns, multi-agent patterns, context providers, and troubleshooting. Includes 8 Mermaid diagrams. Addresses #58 (#200)
  • Improved Context7 benchmark documentation

Fixes

  • Token counting accuracy improvements with proper error handling
  • Python version classifiers for PyPI badge
  • Flake8 linting errors resolved

Full Changelog: v2.4.0...v2.5.0