Current section

24 Versions

Jump to

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…