0.3.0 (2026-10-13)
Added
images:option for image inputs withprovider: :openaiandprovider: :cloudflare. Images are base64 data URLs;SystemOneClient.image_data_url/2builds one from bytes. OpenAI receives them asinput_imageparts before the state text; Clef receives its top-levelimagesarray. Both see the images before the state.SystemOneClient.Imagesvalidates images before any request: data URLs only (no remote URLs), plus Clef's limits of 4 PNG, JPEG or WebP images, 4 MiB each and 8 MiB in total. Other providers return{:error, {:unsupported_option, :images, provider}}.- Telemetry metadata includes
image_count.
0.2.0 (2026-10-12)
Added
provider: :openaifor OpenAI's Decisions API (POST /v1/decisions, default modelgpt-6-luna,OPENAI_API_KEY). Requests and responses are translated to and from the System One shape bySystemOneClient.Wire.OpenAIDecisions, so questions and answer structs are the same as for every other provider. Score legends carry your own level text, as with TypeSafe.SystemOneClient.Answer.Refusalfor a question the model declines to answer; the other answers in the request are still returned.- Typespecs for the public API, including
SystemOneClient.option/0,SystemOneClient.options/0,SystemOneClient.error/0andSystemOneClient.Provider.name/0; checked with Dialyzer in CI. - Doctests on
validate_questions/1,Answer.parse/1,Provider.resolve/1and the OpenAI request encoder, and grouped modules in the docs.
Changed
SystemOneClient.Providerresults carry awirefield (:system_oneor:openai_decisions).- The Hex package links to this changelog.
0.1.0 (2026-10-08)
SystemOneClientbehaviour withevaluate/3,validate_questions/1, and a dispatcher that picks the implementation fromopts[:client]or app env.SystemOneClient.HTTP: Req-based client with retries on 429/529/502/503/504 and transport errors,Retry-Afterandretry-after-mssupport, 2 s default receive timeout.SystemOneClient.Provider::typesafe,:cloudflare(Clef and Clef-flash,resultenvelope),:openrouter,:compatible(any/v1/systemoneURL, e.g. CLM).SystemOneClient.Answer.{Choice, Noul, Score}with full probability distributions and validation of non-numeric probabilities and non-map answer payloads.SystemOneClient.Stubfor offline tests.- Telemetry
[:system_one_client, :request, *]without state, questions, or keys.