Repository navigation
Releases
Releases · DennisKh/claudex
v0.12.0
0.12.0 (2026-11-09)
Features
- error: expose the API's error code from error.details (#148) (b28f4a4)
- message: add file_ids/1 and document agent skills in requests (#137) (61dd7a5)
- skills: add Claudex.Skills for managing custom skills (#139) (7e81dcf)
- skills: add skill versions to Claudex.Skills (#140) (f0d6245)
Bug Fixes
- skills: document the pre-GA skills beta and pinning Anthropic versions (#143) (a69d5e7)
- skills: take a .zip path, treat a nil display name as absent, and document retried creates (#145) (480579d)
- tool_runner: pin skill versions across turns and expose the run's container (#142) (d91ccf0)
- tracing: name request spans for their route, not the concrete path (#144) (4f0c5e7)
v0.11.1
v0.11.0
0.11.0 (2026-10-28)
⚠ BREAKING CHANGES
- client: requests now use API version 2026-10-21, which answers
temperature,top_portop_k, adocumentblock directly in anassistantmessage, and atextblock withcitationsin ausermessage with a 400.Claudex.Client.put_header(client, "anthropic-version", "2023-06-01")sends the previous version. - tool_runner: a
{:turn, turn}handler forstream_to/3can now receive a turn withstop: :cancelled, and a finished turn can be followed by:cancelledinstead of:done. - tool_runner:
ToolRunner.stream_to/3used to ignoreevery:; it now batches events, so a reader that matches only{:event, event}must also handle{:events, events}, and an:everythat is not a positive integer raisesArgumentError. - tool_runner: add stream!/3 and deprecate stream/3 (#127)
- tool_runner: report a cancelled reply as cancelled (#125)
- messages: refuse string-keyed params and send struct system blocks (#118)
- tool: name a pattern parameter for the variable bound to it (#111)
- tool: refuse @tool on a function whose name the API rejects (#110)
- tool: refuse two @tool functions that would share a name (#108)
- tracing: report provider and token counts the way the GenAI conventions define them (#106)
- message: map the compaction stop reason and resume it in the tool runner (#104)
- telemetry: a streamed 4xx/5xx moves from
:exceptionto:stop, and a plain request that got no response moves from:stopwithstatus: nilto:exception.
Features
- client: add headers and betas to a copy of a client (#114) (a2672c4)
- models: decode a model's lifecycle, line and retirement dates (#119) (92c1b8f)
- schema: build a struct's JSON schema while it compiles with use Claudex.Schema (#95) (9d059eb)
- send :every batches on a timer and add ContentBlock.replayable?/1 (#88) (164eb30)
- streaming: batch stream_to/3 events over a window (#78) (417bdf7)
- tool_runner: add stream!/3 and deprecate stream/3 (#127) (116cbd3)
- tool_runner: batch stream_to/3 events with :every (#130) (a0421db)
- tool_runner: halt a run and resume it from its own history (#82) (26c1c22)
- tool_runner: send the turn a cancel ended from stream_to/3 (#131) (02d949b)
- tool: let a tool return content blocks (#122) (c861dc2)
- tool: set the API's tool-definition fields from @tool (#113) (5f112ef)
- tracing: run a conversation in a block (#81) (cc4c030)
- usage: answer whether prompt caching did anything (#83) (6dcd640)
Bug Fixes
- 0.11.0 review findings (#87) (708e442)
- batches: prepare each request's params the way Messages.create/2 does (#96) (03b5812)
- client: keep the API key out of the Req request a client holds (#120) (7daabff)
- client: retry failed requests the way the official SDKs do (#99) (f0935cd)
- client: send API version 2026-10-21 (#133) (1149852)
- deps: bump req from 0.7.4 to 0.7.5 (#97) (cad56f5)
- gen.tracing: leave the service name out at an umbrella root (#128) (21e9b90)
- message: leave a cut-off reply's unanswered tool calls out of the history (#91) (5154bfe)
- message: leave a cut-off stream's unsendable blocks out of the history (#86) (88974a8)
- message: map the compaction stop reason and resume it in the tool runner (#104) (d436c26)
- messages: refuse a non-streaming request that can outlast the default timeout (#98) (d055eb2)
- messages: refuse string-keyed params and send struct system blocks (#118) (d5eb71f)
- models: send the lifecycle filter as the list the API reads (#115) (5a6a478)
- page: walk back with before_id instead of sending both cursors (#107) (8906a0e)
- schema: recompile a module whose schema came from a struct that changed (#129) (c4fbd8a)
- streaming: keep the content a message_start event carries (bf08e91)
- streaming: keep the summary a compaction delta carries (#90) (0b21499)
- stream: keep iterations, context edits and raw fields from message_delta (#105) (132a372)
- stream: leave nothing in the caller's mailbox when a stream stops early (#102) (3b8698d)
- stream: stop a forwarded stream when its caller exits normally (#100) (0dd2955)
- stream: stop a request the moment the process it serves dies (#121) (1a11c4a)
- telemetry: report a failed request the same way on both transports (#103) (4a2ca30)
- telemetry: report a streamed request's tokens and say what Claudex logs (#116) (04c8662)
- tool_runner: answer a call whose streamed input doesn't parse instead of running it (...
v0.10.0
v0.9.1
v0.9.0
0.9.0 (2026-09-13)
Features
- client: add build/1 and Model.supports?/2, read named spec args (#57) (d5717b8)
- message: answer how a reply ended, for a loop you drive yourself (#53) (09f7a6d)
- mix: add claudex.gen.tool (#61) (b0763b1)
- streaming: let a stream stop with the process it delivers to (#63) (722753c)
- tool_runner: add stream_to/3 (#62) (8ae7366)
Bug Fixes
v0.8.1
v0.8.0
0.8.0 (2026-09-11)
Features
- content_block: build the document and image blocks you send (#44) (c89f33b)
- content_block: decode the blocks server tools send back (#41) (f73af0f)
- messages: build output_config.format from a struct (#42) (38e69bd)
- page: walk every page, whichever cursor the endpoint uses (#45) (c62bb9c)
- tool_runner: stream each turn and report events to :on_event (#36) (dffb3ca)