Skip to content

Changelog ​

Mirrored from CHANGELOG.md in the library repository. For upgrade instructions, see Upgrading.

[0.33.0] - 2026-10-06 ​

  • Breaking: removed the model registry. The @fifthrevision/axle/models entry point no longer exists; pass model IDs as plain strings ("openai/gpt-5.5"), and OpenRouter IDs are sent unchanged.
  • Breaking: removed temperature, topP, and stop from generate(), stream(), and agent request options; send them through providerOptions using the provider's own field names.
  • Breaking: normalized provider tool parts across providers with portable input and result fields and per-provider continuity; added provider-tool-result content parts and provider-tool:input/provider-tool:error events, and removed output from provider-tool:complete.
  • Breaking: provider refusals are now reported as a dedicated refusal failure kind instead of empty or mislabeled successes.
  • Breaking: flattened failure results so type, message, status, and usage sit directly on model failures, and rejected API keys are detected as type: "authentication".
  • Breaking: removed AxleStopReason.Error and AxleStopReason.Custom; unknown stop reasons now fail the request.
  • Breaking (CLI): local tools (exec, read-file, write-file, patch-file) are enabled by default in chat and recipes, and the calculator tool was removed. Add tools: [] to keep a recipe tool-free.
  • Added axle info to print the version, config files, defaults, and every configured provider, showing where each value came from and API keys only as set or unset.
  • Added recipe scheduling on macOS: declare schedule: { every: 1h } or at: "09:00" in a recipe and use axle schedule commands to register, list, inspect sessions, and remove LaunchAgent-based runs.
  • CLI replies now render as markdown (headings, code, lists, tables), prompts use GitHub CLI-style glyphs, and a default axle-help tool lets the model answer questions about axle itself.
  • Thinking text now streams from Claude and OpenAI models when request.reasoning is enabled.
  • Anthropic pause_turn responses continue automatically within a single step, with usage summed across the follow-up requests.
  • Surfaced provider code execution output (stdout/stderr/exit code) in action results, newly enabled Anthropic code execution, and preserved Gemini code execution parts across turns.
  • Kept Anthropic server tool results when a server tool runs alongside client tools, so follow-up requests no longer fail.
  • Chat Completions HTTP errors now report the provider's error type and message instead of the raw status and body, and custom headers can be passed through provider client options.
  • Agent session IDs are forwarded to OpenRouter so conversations stick to one upstream provider.
  • OpenAI assistant items are replayed in their original order, fixing requests that reasoned between web searches.
  • Adjacent text parts are joined without separators, fixing broken sentences and unparseable Instruct JSON.
  • OpenAI responses cut off at maxOutputTokens and Anthropic's model_context_window_exceeded now finish with length and keep partial content.
  • web_search resolves to newer provider versions, and Gemini searches now surface a provider-tool part with the queries used.
  • Anthropic's implicit max_tokens default is now 128,000.

[0.32.0] - 2026-09-12 ​

  • Breaking: renamed thinking stream events and separated displayable thinking summaries from raw reasoning content for clearer reasoning handling.
  • Unified generation request handling for streaming transports, improving consistency between standard and streaming responses.
  • Preserved OpenRouter and Gemini reasoning continuity metadata across generation, streaming, and assistant message conversion.
  • Added portable controls for displaying, hiding, or retaining reasoning only for provider continuity.
  • Improved usage reporting for OpenAI cached responses by tracking cache write tokens in standard and streaming flows.
  • Fixed Gemini thinking/signature handling and related provider issues.
  • Updated runtime support to require Node.js 22.

[0.31.0] - 2026-09-08 ​

  • Added portable reasoning controls with named modes and effort levels, including validation and updated reasoning documentation.
  • Redesigned axle-cli around interactive chat by default, with batch and resume commands, persistent sessions, and improved terminal rendering.
  • Added CLI session resumption, automatic context compaction, and configurable compaction size controls for longer-running conversations.
  • Added layered CLI configuration loading and validation, support for the v3 job configuration schema, and timestamped CLI log files.
  • Improved CLI reliability for piped input, non-interactive runs, interrupted runs, failed batches, session cleanup, and credential handling.
  • Updated available model definitions.

[0.30.2] - 2026-08-23 ​

  • Added support for OpenRouter streaming thinking deltas so reasoning output is handled correctly during chat completions.
  • Added reasoning option support for prompt compaction, enabling thinking-capable model configurations during compaction.
  • Updated available model definitions.

[0.30.1] - 2026-08-13 ​

  • Fixed PromptCompactor progress reporting and summary handling so completed compactions are reported reliably without duplicating generated summaries.

[0.30.0] - 2026-08-13 ​

  • Breaking: replaced agent-owned history with host-owned transcripts: use agent.messages for active conversation state and attach a Transcript to the event stream for persistence.
  • Breaking: renamed TurnAccumulator to Transcript and updated the related transcript exports and persistence APIs.
  • Breaking: removed built-in memory APIs and automatic recall/record behavior; use tools for model-directed memory and Instruct.addContext() for host-provided context.
  • Breaking: removed session-level annotations and transcript state; annotations now belong to turns or parts, with session-wide application state kept by the host.
  • Breaking: refactored compaction into trigger, policy, and compactor layers with stateful compaction parts and compaction:update/complete/error events; automatic compaction failures are now recorded without failing the user turn.
  • Improved PromptCompactor progress reporting and summary handling so repeated compactions avoid reusing prior summaries.
  • Updated the README, terminology docs, and 0.30.0 migration guide.

[0.29.0] - 2026-08-05 ​

  • Added Qwen 3.7 Flash and Qwen 3.8 Max model definitions.
  • Updated Qwen model metadata with larger output limits for selected Qwen 3.6 and 3.7 models.
  • Breaking: renamed tool-loop terminology from “turn” to “step”: maxIterations is now maxSteps, "max-iterations" is now "max-steps", stream events are now step:start/step:complete, and generateTurn is now generateStep.
  • Added a 0.29.0 migration guide and terminology reference for the step/turn naming changes.

[0.28.0] - 2026-07-27 ​

  • Added agent.stop() to stop an active turn at the next tool-batch boundary without interrupting in-flight work.
  • Added agent.clear() to cancel queued agent operations while leaving the active turn untouched.
  • Added PromptCompactor and automatic before/after-turn compaction triggers for easier long-session management.
  • Improved compaction cancellation, history handling, and messages for repeated compactions.
  • Updated available model definitions and fixed Gemini thinking configuration for newer Gemini 3.x models.

[0.27.1] - 2026-07-17 ​

  • Added support for the Kimi K3 model.

[0.27.0] - 2026-07-10 ​

  • Improved model registry support for clearer model selection.
  • Updated TypeScript support and improved type narrowing definitions.

[0.26.1] - 2026-07-09 ​

  • Fixed OpenAI tool schemas so optional properties are accepted correctly.
  • Improved generation failure handling and exposed the clearer AxleFailure name while keeping GenerateError as an alias.
  • Improved stream turn accumulation error handling for more reliable failures.
  • Removed the Gemini 3.5 Pro model option.

[0.26.0] - 2026-07-06 ​

  • Added experimental context compaction: agent.onCompaction(callback) supplies the policy and strategy, await agent.compact() triggers it. Active history is replaced; agent.history now exposes messages (active), archive (raw append-only), and compactions (receipts). Compaction renders as an agent turn containing a new compaction part and emits compaction:start/compaction:end turn events.
  • Added maxContextTokens to stream()/generate(): a token budget for the tool loop, checked after each turn settles.
  • Behavior change: loop limits are stops, not errors. maxIterations and maxContextTokens return ok: true with stopped: "max-iterations" | "token-limit" instead of an error result. Non-positive limits throw at call time.
  • Breaking: agent.history.log is now agent.history.messages.
  • Breaking: agent.snapshot() is now async; it waits for in-flight work to settle so snapshots are always at rest.
  • Breaking: removed Agent.restore(); resume with new Agent(config, session).
  • Breaking: removed index from StreamEvent. Correlate tool events by id; text/thinking deltas belong to the most recently opened part.
  • Breaking: removed the createHandle export.
  • Added an agent-compaction baseline check exercising compaction end to end against live providers.

[0.25.5] - 2026-07-03 ​

  • Add Claude Fable, Sonnet 5; Gemini 3.5 models

[0.25.4] - 2026-06-17 ​

  • Improved parallelize handling for more reliable batched tool execution.

[0.25.3] - 2026-06-16 ​

  • Fixed OpenAI file handling so filenames and URLs are resolved correctly.

[0.25.2] - 2026-06-15 ​

  • Fixed tool calls with syntactically invalid JSON parameters so they are handled gracefully instead of failing.

[0.25.1] - 2026-06-13 ​

  • Consolidate vendor options for ChatCompletions

[0.25.0] - 2026-06-12 ​

  • Added a web search fallback for more reliable search behavior.
  • Improved handling of non-text tool results.

[0.24.0] - 2026-06-11 ​

  • Added experimental subagent tools for delegating bounded work to other agents, with child turn-event forwarding (action:child-event).
  • Added experimental parallel tool execution for running batched tool calls concurrently.
  • Added tool context helpers for reporting usage and adding contextual information during runs, including a flat per-provider/model Stats.breakdown.
  • Added the tool:exec-error stream event for fatal/aborted tool calls; Agent.on() now returns an unsubscribe function.
  • Behavior change: in stream(), a user-provided onToolCall returning null/undefined now falls through to executing the matching registry tool (matching generate()'s existing semantics) instead of producing a not-found result.
  • Behavior change: a tool throwing an error merely named AbortError while the run's signal is live is reported to the model as an ordinary tool error instead of aborting the run.
  • Fixed output fencing in generated content.

[0.23.1] - 2026-06-08 ​

  • Updated Anthropic thinking configuration support

[0.23.0] - 2026-06-08 ​

  • Improved observability with a simplified span-based tracing interface
  • Added richer trace events, span completion details, and token/content logging for agent and streaming runs
  • Added provider tool logging and support for routing observability data to multiple sinks

[0.22.1] - 2026-06-07 ​

  • Improved handling of chat-completions streaming errors
  • Fixed Gemini citation handling

[0.22.0] - 2026-06-06 ​

  • Added support for OpenRouter web search citations
  • Improved citation handling for web search results
  • Fixed tool handling for interleaved tool calls

[0.21.0] - 2026-05-30 ​

  • Added support for Opus 4.8
  • Added support for citations and thinking formats
  • Added configurable retry options
  • Added a convenience method for rehydrating agents
  • Added metadata support for turns and messages

[0.20.0] - 2026-05-25 ​

  • Split the library and CLI into separate packages for clearer installation and usage
  • Added AgentSession and snapshot restore APIs for saving and resuming agent sessions
  • Added createAgentConfig for easier agent configuration
  • Updated memory handling so memory is managed separately from AgentConfig
  • Added documentation updates and removed Brave-related docs/support

[0.19.0] - 2026-05-24 ​

  • Added a browser-only export for client-side bundles that omits server-only code
  • Added annotations support to Turns

[0.18.0] - 2026-05-22 ​

  • Added support for Gemini 3.5 Flash
  • Standardized request options across providers, including output tokens, temperature, top-p, stop sequences, tool choice, and provider-specific options
  • Renamed provider option types and runtime parameters; see the 0.18.0 migration guide for update details
  • Updated usage stats to include cached tokens and thinking tokens
  • Added a simple context counter and split MCP tools for more flexible tool usage
  • Fixed bugs found during smoke testing

[0.17.0] - 2026-05-13 ​

  • Updated the Instruct constructor to use object-style options
  • Improved Instruct schema typing to support any Zod schema
  • Added clearer errors for missing template variables
  • Improved result ergonomics for easier handling by applications

[0.16.3] - 2026-05-13 ​

  • Added vars mode to Instruct for easier variable-based prompting
  • Fixed bugs found through live provider testing

[0.16.2] - 2026-05-11 ​

  • Fixed OpenAI and Chat Completions providers: reasoning: false now sends no reasoning effort instead of minimal reasoning

[0.16.1] - 2026-05-11 ​

  • Added z.enum and z.literal support to Instruct structured-output schemas

[0.16.0] - 2026-05-11 ​

  • Added instruct support to generate and stream APIs for supplying structured instructions directly
  • Updated structured output instructions to use JSON for more reliable parsing
  • Added open-weight model options
  • Improved cancellation behavior by propagating abort signals through MCP tool calls

[0.15.1] - 2026-05-08 ​

  • Added AxleToolFatalError for fatal tool failures, allowing generation, streaming, and agent runs to stop immediately without retrying or exposing the error to the model
  • Fatal tool errors now preserve available partial output, messages, usage, and tool context for easier handling by applications

[0.15.0] - 2026-05-08 ​

  • Abort operations now throw errors, making cancellation behavior easier to detect and handle

[0.14.0] - 2026-05-07 ​

  • Simplified the Agent and Instruct APIs for easier use and better TypeScript support
  • Added support for binding inputs to Instruct templates with withInputs, withInput, and clone
  • Improved template variable handling by consistently reporting missing required variables

[0.13.0] - 2026-05-06 ​

  • Added provider tool registries for configuring and organizing available tools
  • Added streaming support for tool outputs and tool arguments
  • Improved tool execution with abort-signal support and streamed command output
  • Updated available models

[0.12.0] - 2026-04-30 ​

  • Added basic thinking/reasoning support to the generation API
  • Added file support improvements: better FileInfo types, improved image type checks, file data support in chat completions, and new usage examples
  • Removed instructions as a concept from Instruct, simplifying the interface

[0.11.0] - 2026-04-24 ​

  • Added support for OpenAI models
  • Provider models are now exported from the package

[0.10.2] - 2026-04-24 ​

  • Added timing information to agent/generation output
  • Added support for Claude Opus 4.7

[0.10.1] - 2026-04-07 ​

  • Update distribution artifacts and config

[0.10.0] - 2026-04-05 ​

  • Agent now emits Turns, with an updated agent interface to match
  • Agent history now carries both Turn and Message parts in parallel, improving fidelity when converting between representations
  • Added configuration support to hooks
  • Improved error semantics and error reporting for tool-call not found cases
  • Fixed a bug where history could be incorrectly committed when a cancellation was in flight
  • Updated to latest dependencies and models

[0.9.0] - 2026-02-22 ​

  • Added procedural memory support, allowing agents to retain and recall information across interactions
  • Made the tool call callback optional when using generate, reducing boilerplate for simple use cases
  • Simplified tracing interfaces for easier integration and usage