0.3.0 (2026-10-13)

Added

  • images: option for image inputs with provider: :openai and provider: :cloudflare. Images are base64 data URLs; SystemOneClient.image_data_url/2 builds one from bytes. OpenAI receives them as input_image parts before the state text; Clef receives its top-level images array. Both see the images before the state.
  • SystemOneClient.Images validates 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

Changed

  • SystemOneClient.Provider results carry a wire field (:system_one or :openai_decisions).
  • The Hex package links to this changelog.

0.1.0 (2026-10-08)

  • SystemOneClient behaviour with evaluate/3, validate_questions/1, and a dispatcher that picks the implementation from opts[:client] or app env.
  • SystemOneClient.HTTP: Req-based client with retries on 429/529/502/503/504 and transport errors, Retry-After and retry-after-ms support, 2 s default receive timeout.
  • SystemOneClient.Provider: :typesafe, :cloudflare (Clef and Clef-flash, result envelope), :openrouter, :compatible (any /v1/systemone URL, e.g. CLM).
  • SystemOneClient.Answer.{Choice, Noul, Score} with full probability distributions and validation of non-numeric probabilities and non-map answer payloads.
  • SystemOneClient.Stub for offline tests.
  • Telemetry [:system_one_client, :request, *] without state, questions, or keys.