1.0.0

Initial release.

  • Zep.Thread (+ Zep.Thread.Message), Zep.User, Zep.Context, Zep.Graph (+ Edge, Episode, Node, CustomInstructions, Observations, ThreadSummaries), Zep.Project, Zep.Task, Zep.Batch, Zep.Webhook
  • Typed structs for every response shape under Zep.Schemas
  • Automatic retry with exponential backoff on 429/5xx via Zep.HTTP
  • :telemetry spans around every request
  • Lazy stream/2 pagination helpers backed by Zep.Pagination
  • Config resolution via explicit opts / Application env / ZEP_API_KEY
  • Reflects Zep's February 2026 deprecation wave: min_rating/mode were removed from Zep.Thread.get_user_context/3, and min_fact_rating/ min_score were removed from Zep.Graph.search/3 (both now rely on Zep's default relevance ranking rather than manual thresholds)
  • Zep.Batch implements the corrected three-step lifecycle (create/2add/4process/2), matching the API as shipped, not a single-call create/3 as originally (incorrectly) assumed
  • Zep.Webhook.verify/3 verifies incoming webhook deliveries via Svix-style HMAC-SHA256, matching the HMAC webhook verification pattern used in the Railsr SDK

Fixed (found via Dialyzer against the real Req library)

  • Zep.Error.from_response/3 assumed response headers were a list of {key, value} tuples; Req actually represents Req.Response.headers as a map of binary() => [binary()] (header name to list of values). This meant request_id extraction from the x-request-id header was silently broken. Fixed the type spec and extraction logic to match Req's real shape; added a corresponding test.

Fixed (test suite)

  • Bypass-backed HTTP tests weren't setting content-type: application/json on mock responses, so Req correctly left response bodies undecoded as raw strings rather than parsed maps - masking what the tests were actually asserting. Added Zep.TestSupport.json_resp/3 and switched every test to use it.