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/modelsentry point no longer exists; pass model IDs as plain strings ("openai/gpt-5.5"), and OpenRouter IDs are sent unchanged. - Breaking: removed
temperature,topP, andstopfromgenerate(),stream(), and agent request options; send them throughproviderOptionsusing the provider's own field names. - Breaking: normalized provider tool parts across providers with portable
inputandresultfields and per-providercontinuity; addedprovider-tool-resultcontent parts andprovider-tool:input/provider-tool:errorevents, and removedoutputfromprovider-tool:complete. - Breaking: provider refusals are now reported as a dedicated
refusalfailure kind instead of empty or mislabeled successes. - Breaking: flattened failure results so
type,message,status, andusagesit directly onmodelfailures, and rejected API keys are detected astype: "authentication". - Breaking: removed
AxleStopReason.ErrorandAxleStopReason.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 thecalculatortool was removed. Addtools: []to keep a recipe tool-free. - Added
axle infoto 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 }orat: "09:00"in a recipe and useaxle schedulecommands 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-helptool lets the model answer questions about axle itself. - Thinking text now streams from Claude and OpenAI models when
request.reasoningis enabled. - Anthropic
pause_turnresponses 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
InstructJSON. - OpenAI responses cut off at
maxOutputTokensand Anthropic'smodel_context_window_exceedednow finish withlengthand keep partial content. web_searchresolves to newer provider versions, and Gemini searches now surface aprovider-toolpart with the queries used.- Anthropic's implicit
max_tokensdefault 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-cliaround 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
PromptCompactorprogress 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.messagesfor active conversation state and attach aTranscriptto the event stream for persistence. - Breaking: renamed
TurnAccumulatortoTranscriptand 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/errorevents; automatic compaction failures are now recorded without failing the user turn. - Improved
PromptCompactorprogress 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”:
maxIterationsis nowmaxSteps,"max-iterations"is now"max-steps", stream events are nowstep:start/step:complete, andgenerateTurnis nowgenerateStep. - 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
PromptCompactorand 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
AxleFailurename while keepingGenerateErroras 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.historynow exposesmessages(active),archive(raw append-only), andcompactions(receipts). Compaction renders as an agent turn containing a newcompactionpart and emitscompaction:start/compaction:endturn events. - Added
maxContextTokenstostream()/generate(): a token budget for the tool loop, checked after each turn settles. - Behavior change: loop limits are stops, not errors.
maxIterationsandmaxContextTokensreturnok: truewithstopped: "max-iterations" | "token-limit"instead of an error result. Non-positive limits throw at call time. - Breaking:
agent.history.logis nowagent.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 withnew Agent(config, session). - Breaking: removed
indexfromStreamEvent. Correlate tool events byid; text/thinking deltas belong to the most recently opened part. - Breaking: removed the
createHandleexport. - Added an
agent-compactionbaseline 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
parallelizehandling 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-errorstream event for fatal/aborted tool calls;Agent.on()now returns an unsubscribe function. - Behavior change: in
stream(), a user-providedonToolCallreturningnull/undefinednow falls through to executing the matching registry tool (matchinggenerate()'s existing semantics) instead of producing anot-foundresult. - Behavior change: a tool throwing an error merely named
AbortErrorwhile 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
AgentSessionand snapshot restore APIs for saving and resuming agent sessions - Added
createAgentConfigfor 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: falsenow sends no reasoning effort instead of minimal reasoning
[0.16.1] - 2026-05-11
- Added
z.enumandz.literalsupport to Instruct structured-output schemas
[0.16.0] - 2026-05-11
- Added
instructsupport 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
AxleToolFatalErrorfor 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, andclone - 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
FileInfotypes, improved image type checks, file data support in chat completions, and new usage examples - Removed
instructionsas a concept fromInstruct, 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