Current section
24 Versions
Jump to
Current section
24 Versions
Compare versions
16
files changed
+410
additions
-10
deletions
| @@ -5,6 +5,21 @@ All notable changes to this project will be documented in this file. | |
| 5 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), |
| 6 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 7 | |
| 8 | + ## [0.3.0] - 2026-02-26 |
| 9 | + |
| 10 | + ### Added |
| 11 | + |
| 12 | + - `Alloy.Testing` module — ExUnit helpers for testing agents (`run_with_responses`, `assert_tool_called`, `refute_tool_called`, `last_text`, `tool_calls`) |
| 13 | + - Usage examples in all 8 provider `@moduledoc` sections |
| 14 | + - Expanded `@moduledoc` for all 4 built-in tool modules |
| 15 | + - Grouped module sidebar in hex docs (Core, Providers, Tools, Context, Middleware, Advanced, Testing) |
| 16 | + - Dialyzer passing with 0 errors |
| 17 | + |
| 18 | + ### Fixed |
| 19 | + |
| 20 | + - Dialyzer errors caused by missing `:mix` in PLT (`plt_add_apps: [:mix]`) |
| 21 | + - Compile warnings from module attributes in `@moduledoc` strings |
| 22 | + |
| 8 23 | ## [0.2.0] - 2026-02-26 |
| 9 24 | |
| 10 25 | ### Added |
| @@ -37,5 +52,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | |
| 37 52 | - Interactive REPL via `mix alloy` |
| 38 53 | - Deterministic test provider for full TDD workflows |
| 39 54 | |
| 55 | + [0.3.0]: https://github.com/alloy-ex/alloy/releases/tag/v0.3.0 |
| 40 56 | [0.2.0]: https://github.com/alloy-ex/alloy/releases/tag/v0.2.0 |
| 41 57 | [0.1.0]: https://github.com/alloy-ex/alloy/releases/tag/v0.1.0 |
| @@ -1,6 +1,6 @@ | |
| 1 1 | {<<"links">>,[{<<"GitHub">>,<<"https://github.com/alloy-ex/alloy">>}]}. |
| 2 2 | {<<"name">>,<<"alloy">>}. |
| 3 | - {<<"version">>,<<"0.2.0">>}. |
| 3 | + {<<"version">>,<<"0.3.0">>}. |
| 4 4 | {<<"description">>,<<"Model-agnostic agent harness for Elixir">>}. |
| 5 5 | {<<"elixir">>,<<"~> 1.17">>}. |
| 6 6 | {<<"app">>,<<"alloy">>}. |
| @@ -43,7 +43,7 @@ | |
| 43 43 | <<"lib/alloy/tool/core">>,<<"lib/alloy/tool/core/scratchpad.ex">>, |
| 44 44 | <<"lib/alloy/tool/core/read.ex">>,<<"lib/alloy/tool/core/write.ex">>, |
| 45 45 | <<"lib/alloy/tool/core/edit.ex">>,<<"lib/alloy/tool/core/bash.ex">>, |
| 46 | - <<"lib/alloy/scheduler.ex">>,<<"lib/alloy/skill.ex">>,<<"lib/alloy.ex">>, |
| 47 | - <<".formatter.exs">>,<<"mix.exs">>,<<"README.md">>,<<"LICENSE">>, |
| 48 | - <<"CHANGELOG.md">>]}. |
| 46 | + <<"lib/alloy/testing.ex">>,<<"lib/alloy/scheduler.ex">>, |
| 47 | + <<"lib/alloy/skill.ex">>,<<"lib/alloy.ex">>,<<".formatter.exs">>, |
| 48 | + <<"mix.exs">>,<<"README.md">>,<<"LICENSE">>,<<"CHANGELOG.md">>]}. |
| 49 49 | {<<"build_tools">>,[<<"mix">>]}. |
| @@ -18,6 +18,15 @@ defmodule Alloy.Provider.Anthropic do | |
| 18 18 | - `:api_url` - Base URL (default: "https://api.anthropic.com") |
| 19 19 | - `:api_version` - API version header (default: "2023-06-01") |
| 20 20 | - `:req_options` - Additional options passed to Req (useful for testing) |
| 21 | + |
| 22 | + ## Example |
| 23 | + |
| 24 | + Alloy.run("What is Elixir?", |
| 25 | + provider: {Alloy.Provider.Anthropic, |
| 26 | + api_key: System.get_env("ANTHROPIC_API_KEY"), |
| 27 | + model: "claude-sonnet-4-6" |
| 28 | + } |
| 29 | + ) |
| 21 30 | """ |
| 22 31 | |
| 23 32 | @behaviour Alloy.Provider |
| @@ -16,6 +16,15 @@ defmodule Alloy.Provider.DeepSeek do | |
| 16 16 | - `:system_prompt` - System prompt string |
| 17 17 | - `:api_url` - Base URL (default: "https://api.deepseek.com") |
| 18 18 | - `:req_options` - Additional options passed to Req |
| 19 | + |
| 20 | + ## Example |
| 21 | + |
| 22 | + Alloy.run("Solve this step by step: what is 23 * 47?", |
| 23 | + provider: {Alloy.Provider.DeepSeek, |
| 24 | + api_key: System.get_env("DEEPSEEK_API_KEY"), |
| 25 | + model: "deepseek-reasoner" |
| 26 | + } |
| 27 | + ) |
| 19 28 | """ |
| 20 29 | |
| 21 30 | @behaviour Alloy.Provider |
| @@ -17,6 +17,15 @@ defmodule Alloy.Provider.Google do | |
| 17 17 | - `:system_prompt` - System prompt string |
| 18 18 | - `:api_url` - Base URL (default: "https://generativelanguage.googleapis.com") |
| 19 19 | - `:req_options` - Additional options passed to Req |
| 20 | + |
| 21 | + ## Example |
| 22 | + |
| 23 | + Alloy.run("Explain OTP supervisors.", |
| 24 | + provider: {Alloy.Provider.Google, |
| 25 | + api_key: System.get_env("GEMINI_API_KEY"), |
| 26 | + model: "gemini-2.5-flash" |
| 27 | + } |
| 28 | + ) |
| 20 29 | """ |
| 21 30 | |
| 22 31 | @behaviour Alloy.Provider |
Loading more files…