Current section
Files
Jump to
Current section
Files
CHANGELOG.md
# Changelog
## 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/2` → `add/4` → `process/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.