v1.38.0
What's new
- Root-array response support for sync. Profiles can now set
resultsPathto""/"$"/"."when the API returns a bare array at the root (e.g. Hacker News/v0/topstories.json→[9129911, 9129199, ...]). - Primitive-array auto-wrapping. Arrays of numbers/strings/bools are wrapped as
{ [idField]: String(value) }so they flow through the existing schema-inference and upsert pipeline with no downstream special-casing. - Built-in profile:
hacker-news/topStories—one sync init hacker-news topStoriesnow works out of the box. - Clearer extraction errors. When
resultsPathdoesn't resolve to an array, the error now names the profile (platform/model), the path, and the actual top-level type of the response.
Profile validation no longer rejects an empty resultsPath (only undefined). Existing object-rooted profiles (Attio, Gmail, Fathom, Calendar, Notion, Stripe) are unchanged.
PR: #117