Skip to content

v1.9.7

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Nov 22:04
· 38 commits to main since this release
bb40dfa

What's Changed

  • Action prompt to generation provider response pipeline by @TonsOfFun in #1
  • Fix gemspec for Rails versions 7.2 to 8.x by @geetfun in #2
  • Agent requested actions prompt/response by @TonsOfFun in #19
  • Improving the first time developer exeperience by @TonsOfFun in #31
  • Fixes rails generate active_agent:install by @swinner2 in #34
  • Remove gemfile require by @swinner2 in #37
  • Streaming vision by @TonsOfFun in #36
  • Streaming actions by @TonsOfFun in #40
  • Bump anthropic from 0.3.2 to 0.4.1 by @dependabot[bot] in #43
  • Bump ruby-openai from 7.1.0 to 8.1.0 by @dependabot[bot] in #45
  • Bump standard from 1.47.0 to 1.49.0 by @dependabot[bot] in #44
  • Fix broken generators by @khasinski in #47
  • Add Ollama support by @khasinski in #46
  • Add OpenRouter support by @khasinski in #48
  • Bump webmock from 3.25.0 to 3.25.1 by @dependabot[bot] in #50
  • feat: support YAML aliases in configuration by @palkan in #53
  • Proper docs with some neat new updates and refactors by @TonsOfFun in #54
  • Fix opnai typo in Getting Started docs. by @t2 in #61
  • Prevent warning in InstallGeneratorTest by @andyw8 in #66
  • Adjust PLATFORMS in Gemfile.lock by @andyw8 in #65
  • Fix typo in action-prompt.md by @yatish27 in #67
  • Update generator USAGE with full generator name by @andycandrea in #80
  • Generator usage cleanup by @postpostmodern in #79
  • Testing prompt examples for doc snippets by @TonsOfFun in #77
  • Bump sqlite3 from 2.6.0 to 2.7.2 by @dependabot[bot] in #78
  • Allow to use templates for instructions by @lHydra in #90
  • json template files added back into generator by @hannaengel in #81
  • lazy instructions generation by @lHydra in #101
  • Skip missing JSON templates by @otrub in #88
  • Bump actions/configure-pages from 4 to 5 by @dependabot[bot] in #60
  • Adding gem load rescue for better error messages by @TonsOfFun in #97
  • Move rails gem to development dependencies by @dzunk in #107
  • Override-options by @TonsOfFun in #113
  • fix action schemas generation for user actions by @lHydra in #115
  • Multimodal Responses API image/pdf analysis support tested by @TonsOfFun in #127
  • Fix gemspec files references by @marcoroth in #129
  • docs: Fix typo in object by @marcoroth in #128
  • Add rake test task by @marcoroth in #130
  • Consistently use double quotes in ApplicationAgent template by @marcoroth in #133
  • Add Active Agent dark mode logo on docs page by @marcoroth in #134
  • Updating providers to support base client configs with active_agent.yml by @TonsOfFun in #143
  • Enhancing generators for skip config and format options by @TonsOfFun in #142
  • fix generation callbacks by @lHydra in #138
  • Bump puma from 6.6.0 to 6.6.1 by @dependabot[bot] in #151
  • AnthropicProvider new API and minor fix by @nicolangr in #150
  • Adding data extraction example with output to docs by @TonsOfFun in #131
  • Fix Secrets Sanitizing by @sirwolfgang in #156
  • Updating tool calling docs by @TonsOfFun in #162
  • Updating callback tests and examples for around_generation docs by @TonsOfFun in #161
  • Feature: Agent generator adds instructions view to agents view directory by @zhephyn in #163
  • Update message_json extraction logic in OpenAI provider by @otrub in #164
  • Anthropic tool usage by @nicolangr in #155
  • Update getting-started.md by @nickhammond in #173
  • Refactoring generation provider-adapter interface by @TonsOfFun in #168
  • Bump jbuilder from 2.13.0 to 2.14.1 by @dependabot[bot] in #172
  • Bump actions/checkout from 4 to 5 by @dependabot[bot] in #169
  • Updating docs and examples for supported providers by @TonsOfFun in #188
  • Updating gemspec and dev deps by @TonsOfFun in #189
  • Relax required Rails version and upgrade CI configs by @palkan in #191
  • Fix inflections by @palkan in #192
  • Structured-output-params by @TonsOfFun in #194
  • Fix OpenRouter Routing structured outputs and files with required_parameters by @sirwolfgang in #190
  • Fix ruby-openai gem constraint by @travisdock in #199
  • Refactoring tests that used ostruct to use Data classes instead by @TonsOfFun in #202
  • Ensuring openrouter headers are being set properly by @TonsOfFun in #204
  • Merged mulititurn into openrouter headers by @TonsOfFun in #207
  • Prevent agent class options mutation by @palkan in #211
  • Browser use agent example by @TonsOfFun in #215
  • Openai mcp builtin tools by @TonsOfFun in #216
  • added ollama embeddigs parameters for nomic-embed-text by @nicolangr in #214
  • Bump actions/upload-pages-artifact from 3 to 4 by @dependabot[bot] in #213
  • Model schemas and structured output enhancements by @TonsOfFun in #221
  • Bump actions/setup-node from 4 to 5 by @dependabot[bot] in #226
  • Fix: Error when template_builder is overwritten by @Tonksthebear in #232
  • Fix typo in message templates section by @skovy in #237
  • Major Framework Refactor: ActiveAgent v1.0.0 by @sirwolfgang in #259
  • Add API gem version testing and fix Anthropic 1.14.0 compatibility by @sirwolfgang in #265
  • Fix version compatiblity issue for vitepress by @sirwolfgang in #266
  • Add missing API Keys by @sirwolfgang in #267
  • Fix website links by @sirwolfgang in #268
  • chore: remove standard from dev dependencies by @okuramasafumi in #272
  • Add thread safety tests by @sirwolfgang in #275
  • Refactor: Leverage Native Gem Types Across All Providers by @sirwolfgang in #271
  • Improved Usage Tracking by @sirwolfgang in #274
  • Universal Tools & MCP Support by @sirwolfgang in #278
  • Bump actions/download-artifact from 4 to 6 by @dependabot[bot] in #283
  • Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #282
  • Bump actions/checkout from 5 to 6 by @dependabot[bot] in #280
  • Update rails requirement from ~> 8.0.0 to ~> 8.1.1 by @dependabot[bot] in #270
  • Bump actions/setup-node from 5 to 6 by @dependabot[bot] in #242
  • Bump actions/setup-node from 5 to 6 by @dependabot[bot] in #288
  • Handle message when the role is developer when using OpenAI provider with instructions by @gokul-312 in #290
  • Fix 404 - Update link for Getting Started Guide in README by @timsco in #294
  • Fix CI failing due to relative BUNDLE_GEMFILE path by @khasinski in #297
  • Add documentation for running tests and configuring API keys by @TheRealNeil in #300
  • Add Azure OpenAI provider with configuration options and tests by @TheRealNeil in #301
  • Fix Anthropic streaming and empty tool input errors by @mattwebbio in #299
  • Get the docs to ship by @superconductor-for-github[bot] in #302
  • Prevent leaking parent provider config by discarding inherited options for different services by @TheRealNeil in #312
  • Cast message to MessageType before creating StreamChunk in stream_broadcaster by @TheRealNeil in #311
  • Add direct host/base_url support for Azure OpenAI by @TonsOfFun in #303
  • Fix-ollama-provider-stream-completion by @TonsOfFun in #318
  • Improve exception handling and add class-level handler for GenerationJob by @TonsOfFun in #320
  • Add RubyLLM provider for unified multi-provider LLM access by @khasinski in #317
  • Add AWS Bedrock provider by @Davidslv in #316
  • Bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in #291
  • Bump actions/download-artifact from 6 to 7 by @dependabot[bot] in #292
  • Create Foundations for Active Prompt Engine + Contributing MD by @Josiassejod1 in #263
  • Bump actions/download-artifact from 7 to 8 by @dependabot[bot] in #323
  • Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #322
  • Add Gemini provider support by @aoki-ryusei in #324
  • Bump actions/deploy-pages from 4 to 5 by @dependabot[bot] in #325
  • feat: add telemetry engine for distributed tracing by @TonsOfFun in #326
  • Fix handling of :document shorthand in OpenAI Chat transforms (PDF Attachements) by @TheRealNeil in #332
  • Fix Rails main compatibility: replace removed find_template with find by @TonsOfFun with @Copilot in #341
  • add anthropic json schema support by @aoki-ryusei in #339
  • Fix: Mock provider raises UnknownAttributeError when response_format is passed by @aoki-ryusei in #342
  • feat: add Requesty as an OpenAI-compatible provider by @Thibaultjaigu in #338
  • Fix OpenAI Chat stream: prevent tool_calls[].type becoming "functionf… by @plusor in #296
  • upgrade anthropic to v1.55 with native structured output support by @sirwolfgang in #343
  • Make the dashboard engine (local dev console) work out of the box by @TonsOfFun in #344
  • Add provider error taxonomy, model capabilities gating, and telemetry fixes by @TonsOfFun in #350
  • Simplify dashboard install and make engine mount path configurable by @TonsOfFun in #351
  • Extract the dashboard into the actionagent gem, with feature parity by @TonsOfFun in #353
  • One expandable-object design for traces, spans and interactions (into #353) by @TonsOfFun in #354
  • Add auto-detected Tools and MCP Services views to the dashboard (into #354) by @TonsOfFun in #355
  • fix(actionagent): install and mount cleanly on MySQL and acronym hosts by @TonsOfFun in #359
  • Agent-as-tool delegation as a core primitive by @TonsOfFun in #360
  • fix(actionagent): resolve every engine constant under a host's inflections by @TonsOfFun in #361
  • fix: record token usage for streaming generations by @TonsOfFun in #362
  • fix(actionagent): register observed agents when a trace is ingested by @TonsOfFun in #363
  • Document SolidAgent, and test the two repos together by @TonsOfFun in #364
  • Fix the docs deploy: a colon in a test name breaks artifact upload by @TonsOfFun in #365
  • Release activeagent 1.3.0 by @TonsOfFun in #366
  • fix: record the user turn an agent renders from its template by @TonsOfFun in #367
  • Release activeagent 1.3.1 by @TonsOfFun in #369
  • refactor(actionagent): spell the MCP constants with the MCP acronym by @TonsOfFun in #368
  • fix: load RubyLLM when the gem registers its acronym by @aoki-ryusei in #372
  • feat: pin RubyLLM's backend with a platform option by @TonsOfFun in #374
  • Stop average_score raising on comparison evaluation runs by @TonsOfFun in #399
  • Correct the average_score comments flagged in review of #399 by @TonsOfFun in #401
  • Dashboard review follow-ups: engine correctness, credentials, MCP, telemetry bodies, DX by @TonsOfFun in #402
  • Add scenario suite evaluations with multi-model comparison by @TonsOfFun in #407
  • feat: agent evaluations — scenario suites, model comparison, fault diagnosis by @TonsOfFun in #406
  • Add APM-style Metrics dashboard with time-series charts and golden signals by @TonsOfFun in #409
  • Finish the suite results view, the APM Metrics page and the report by @TonsOfFun in #410
  • fix(actionagent): fit the run report frame to its content by @TonsOfFun in #411
  • fix(actionagent): derive encryption keys before Rails configures the encryptor by @TonsOfFun in #412
  • Release activeagent 1.4.0 and actionagent 1.3.0 by @TonsOfFun in #413
  • fix(evals): preserve grades, import suites, and publish reports by @TonsOfFun in #414
  • Add dashboard evaluation assistant and reviewable agent drafts by @TonsOfFun in #415
  • Add conversation workbench to Run Agent page by @TonsOfFun in #405
  • feat(dashboard): call a host's MCP tools instead of only describing them by @TonsOfFun in #420
  • Release 1.5.0 back to main by @TonsOfFun in #432
  • fix(evals): name the model of a spec hash rather than stringifying it by @TonsOfFun in #430
  • chore(release): activeagent 1.5.1 by @TonsOfFun in #437
  • Stop nil VCR filters flaking replays, and spell the MCP plural by @TonsOfFun in #436
  • Schema-derived agent tools: generate a bounded tool roster from an ActiveRecord model by @TonsOfFun in #435
  • Surface MCP tool-discovery failures instead of running tool-less and silent by @TonsOfFun in #434
  • chore(release): activeagent and actionagent 1.5.2 by @TonsOfFun in #442
  • fix(evals): re-run a persisted model selection under the provider it ran under by @TonsOfFun in #444
  • feat(schema-tools): define a model's tools at runtime, registered per model by @TonsOfFun in #447
  • Carry the caller into agent runs, so agents can authorize like controllers by @TonsOfFun in #443
  • feat(evals): name a fabricated answer as a fault, and stop crediting a wrong tool by @TonsOfFun in #445
  • docs(changelog): restore the Added entries lost in today's merges by @TonsOfFun in #450
  • feat(generators): a schema_tools generator that lists every column, commented out by @TonsOfFun in #446
  • feat(delegation): a delegated run inherits its parent's caller by @TonsOfFun in #448
  • feat(mcp): serve the host's schema tools through the MCP facade by @TonsOfFun in #449
  • feat(evals): a scenario replay runs as the evaluation's owner by @TonsOfFun in #451
  • fix(dashboard): the Tools tab reads agent.tools for schema tools, and can change it by @TonsOfFun in #452
  • feat(agents): releases — a digest of what the model is given, cut on deploy, pinned to every trace, run and evaluation by @TonsOfFun in #453
  • Coerce container-valued query params and scrub handoff state on read by @TonsOfFun in #456
  • chore(release): activeagent and actionagent 1.6.2 by @TonsOfFun in #455
  • Bump actions/setup-node from 6 to 7 by @dependabot[bot] in #348
  • chore(deps): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #357
  • chore(deps): bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #358
  • fix: return 405 for unsupported MCP methods by @Ricky-7-Yan in #398
  • fix(dashboard): MySQL evaluations, judge memoization, sign-in docs by @TonsOfFun in #454
  • fix(test): restore WebMock's reset so leaked stubs stop failing the Pages deploy by @TonsOfFun in #459
  • feat(telemetry): size tool schemas on the prompt span by @TonsOfFun in #458
  • fix(dashboard): meter adapted replays, validate providers, keep dropped scenarios by @TonsOfFun in #460
  • feat(evals): correlate evaluation traces with the result that caused them by @TonsOfFun in #465
  • feat(evals): tell a judge block which call it is serving by @TonsOfFun in #468
  • feat(dashboard): give Agent a generations association by @TonsOfFun in #469
  • docs(evals): metering, provider validation and on_removed for host adapters by @TonsOfFun in #466
  • chore(release): activeagent and actionagent 1.6.3 by @TonsOfFun in #457
  • Rebuild Evaluations page around runs with detailed history and scoring by @TonsOfFun in #471
  • docs: add the Dashboard for RubyLLM Apps guide by @TonsOfFun in #472
  • feat: let the engine run host agent classes, and teach SchemaTools about Rails enums by @TonsOfFun in #467
  • Fix direct generate_later jobs, dashboard CSRF, model picker, builder errors and missing provider gems by @TonsOfFun in #475
  • Give hosts a seam onto the engine's models and controllers by @TonsOfFun in #474
  • feat: allowed_tools and require_approval for MCP servers (lands #328) by @TonsOfFun in #476
  • Read an observed agent's own traces in its criteria, tabs and markers by @TonsOfFun in #481
  • Tell a publisher's caller what the collector refused and whether to retry by @TonsOfFun in #480
  • Collect published evaluation reports at /api/evaluation_reports by @TonsOfFun in #485
  • chore(release): activeagent and actionagent 1.7.0 by @TonsOfFun in #490
  • Testable Ollama hosts, a model comparison table, and a scenario expectation fix by @TonsOfFun in #499
  • docs: add Requesty to the README install instructions by @Thibaultjaigu in #504
  • Fix RubyLLM tool-call replay and structured output; require ruby_llm 1.x by @yorzi in #503
  • Let a publisher verify its collector before a run by @TonsOfFun in #497
  • Evaluation and telemetry tools on the dashboard's MCP server by @TonsOfFun in #498
  • feat(dashboard): pick evaluation models from the provider catalog by @TonsOfFun in #494
  • Fix Rails-main CI with RubyLLM 1.16 and 2.x compatibility by @TonsOfFun in #508
  • Sandbox experiments for 1.8: per-sandbox databases, model picker, run against a sandbox by @TonsOfFun in #496
  • chore(release): activeagent and actionagent 1.8.0 by @TonsOfFun in #500
  • Connect GitHub from Settings and boot checkout sandboxes by @TonsOfFun in #479
  • Put What to fix after the scenario results in evaluation reports by @TonsOfFun in #513
  • Count priced interactions when an evaluation's cost is partly unpriced by @TonsOfFun in #514
  • Bring the evaluation report fixes from main into 1.8.1 by @TonsOfFun in #515
  • Price every evaluation cost and judge each evaluation by its current run by @TonsOfFun in #516
  • Show every evaluation cost on the dashboard and pool the pass rate over current runs by @TonsOfFun in #517
  • chore(release): 1.8.1 sandbox code-runner follow-up by @TonsOfFun in #512
  • Add a DeepSeek provider, and make mcps: work on every provider by @sirwolfgang in #507
  • chore(changelog): file the MCP bridge and DeepSeek entries under Unreleased by @TonsOfFun in #521
  • fix(mcp): land the MCP bridge fixes from #522 on main by @TonsOfFun in #523
  • fix(mcp): mark a failed bridged MCP tool call as an error for the model by @TonsOfFun in #529
  • fix(providers): name ruby-openai only when it is actually present by @TonsOfFun in #530
  • fix(mcp): bound url and command servers by read_timeout by @TonsOfFun in #532
  • fix(anthropic): drop the json_object prefill where Claude refuses it by @TonsOfFun in #533
  • feat(actionagent): hand a browser run to a person, with the conference-ticket demo and its sample data by @TonsOfFun in #568
  • Integrate the 1.9 engine and framework stack: input requests, projects, explorations, browser sessions, session replay, GitHub App by @TonsOfFun in #569
  • feat(evals): RubyLLM judge/replay glue and ProviderKey credential helpers for hosts by @TonsOfFun in #473
  • refactor(dashboard): shared UI pieces and one route table by @TonsOfFun in #546
  • feat(engine): groundwork seams by @TonsOfFun in #547
  • fix(providers): use an explicit OpenRouter key before the environment by @TonsOfFun in #548
  • fix(dashboard): Session Replay with no recordings and long recordings by @TonsOfFun in #549
  • feat(framework): pause a generation for user input by @TonsOfFun in #550
  • feat(engine): organization and personal provider keys by @TonsOfFun in #551
  • feat(engine): check out sandboxes through GitHub App installations by @TonsOfFun in #552
  • feat(engine): recording events and the session timeline by @TonsOfFun in #553
  • feat(engine): bootstrap checkouts that do not bundle the engine by @TonsOfFun in #554
  • feat(engine): create evaluations and merge scenarios over MCP by @TonsOfFun in #555
  • feat(framework): pause on Responses and RubyLLM, approvals, resume_later by @TonsOfFun in #556
  • feat(engine): input requests by @TonsOfFun in #557
  • feat(engine): open a draft pull request from a sandbox by @TonsOfFun in #558
  • feat(dashboard): answer input requests from a needs-input inbox by @TonsOfFun in #559
  • feat(engine): projects that boot a repository and evaluate an agent by @TonsOfFun in #560
  • feat(engine): browser sessions per sandbox by @TonsOfFun in #561
  • feat(dashboard): list sessions and replay them LLM-first by @TonsOfFun in #562
  • feat(dashboard): watch a sandbox's browser live and take it over by @TonsOfFun in #563
  • feat(dashboard): capture manual agent sessions by @TonsOfFun in #564
  • feat(engine): explorations and candidate scenario review by @TonsOfFun in #565
  • feat(engine): interactive project setup and the install PR by @TonsOfFun in #566
  • feat(engine): the explorer agent walks a project's app and signs in without a model seeing credentials by @TonsOfFun in #567
  • docs: use generic examples for evaluation scenarios by @TonsOfFun in #492
  • chore(release): activeagent and actionagent 1.9.0 by @TonsOfFun in #520
  • Accept the flat json_schema response_format in every provider by @yorzi in #509
  • Finish RubyLLM 2.x support: usage, streaming, protocol option by @yorzi in #511
  • chore(release): activeagent and actionagent 1.8.2 by @TonsOfFun in #519
  • Scenario catalogs and one-click fix prompts: YAML products and sets stored, synced and run from the dashboard; What-to-fix cards copy a Markdown brief by @TonsOfFun in #577
  • Implement evaluation fixes with Claude Code in a sandbox, and :sandbox_login by @TonsOfFun in #579
  • Answer a remote backend's sign-in errors like the local backend's by @TonsOfFun in #580
  • Merge yorzi's four rebased PRs: trace view gaps, standalone catalogs, scenario metadata, scoring leases by @TonsOfFun in #659
  • Prevent overlapping evaluation jobs from scoring twice by @yorzi in #614
  • Finish the trace view gaps: dark-mode tools and time window, bounded console limit by @yorzi in #635
  • Load evaluation catalogs without Rails by @yorzi in #636
  • Keep scenario catalog extension fields through export, digests and the dashboard by @yorzi in #637
  • Evals in the test suite: test/evals, run on demand, written like tests by @TonsOfFun in #626
  • Let dashboard users add and use their own remote MCP servers by @TonsOfFun in #649
  • Ranked comparison tables and value pills for the dashboard by @TonsOfFun in #624
  • Require Zeitwerk before the dashboard engine reads its inflector by @TonsOfFun in #661
  • chore(deps): Update json requirement from < 3 to < 4 by @dependabot[bot] in #582
  • Bump actions/setup-node from 4 to 7 by @dependabot[bot] in #581
  • chore(deps): Bump docker/setup-buildx-action from 3 to 4 by @dependabot[bot] in #570
  • chore(deps): Bump docker/build-push-action from 6 to 7 by @dependabot[bot] in #572
  • chore(deps): Bump docker/setup-qemu-action from 3 to 4 by @dependabot[bot] in #573
  • chore(deps): Bump docker/login-action from 3 to 4 by @dependabot[bot] in #574
  • Claim a pending run before executing it by @yorzi in #664
  • Record client-side MCP tool calls in eval replays by @yorzi in #665
  • feat: add Atlas Cloud provider by @binyangzhu000-sudo in #352
  • Add Cheaper Inference as an OpenAI-compatible provider by @TonsOfFun in #666
  • Changelog: Atlas Cloud provider by @TonsOfFun in #668
  • Ollama Cloud: cloud host, model lookup, and cloud rates on traces and evals by @TonsOfFun in #670
  • Let a suite declare its pass gates per group by @TonsOfFun in #676
  • Assert a report's pass gates from TestHelper and RSpec by @TonsOfFun in #682
  • Build the regex for a count or a share a scenario expects by @TonsOfFun in #679
  • Select scenarios by key strictly, so a misspelled key fails the run by @TonsOfFun in #680
  • Skip the judge for a replay that already failed its scenario's expectations by @TonsOfFun in #681
  • Replay each scenario a configurable number of trials by @TonsOfFun in #683
  • Publish with less glue: run_id from the report, absolute receipt urls, from_env by @TonsOfFun in #684
  • Verify a RubyLLM model or judge can be built before a run by @TonsOfFun in #685
  • Keep named criteria lists on a suite, layered by key by @TonsOfFun in #686
  • Release 1.9.7 by @TonsOfFun in #692
  • Name the trial in failure lines, and correct the 1.9.7 eval docs for empty runs by @TonsOfFun in #693
  • Hand a verified judge the providers a host has keys for by @TonsOfFun in #694
  • Correct two facts in the 1.9.7 changelog by @TonsOfFun in #695

New Contributors

Full Changelog: v1.9.6...v1.9.7