Releases: SuperMarioYL/idemstep
Releases · SuperMarioYL/idemstep
idemstep v0.3.0
idemstep — exactly-once idempotency for agent side-effects
v0.2.0
First feature iteration: a concurrency-correctness fix and TTL key expiry.
Fixed
- Concurrent same-key calls fired the side effect more than once.
idemSteponly short-circuited on an already-committed key, so same-key attempts racing in the same window — exactly what a self-healing harness does when it re-drives a slow-but-successful submit — each ranfnand double-charged the order. Concurrent callers now coalesce onto the first call's in-flight promise and share its result, so the effect fires exactly once even under a race. A rejected attempt clears the in-flight handle so a later retry may legitimately run again.
Added
- TTL key expiry —
new IdemStore({ ttlMs }). Committed keys past the window are treated as expired: lookups skip them and a re-run with the same key is a genuinely new action (mirroring Stripe's idempotency window). Without a TTL, keys are kept forever (v0.1 behaviour unchanged). IdemStore.prune()sweeps expired records and returns the count, keeping a long-running agent's store (and JSON file) bounded.startProxy({ ttlMs })andidemstep proxy --ttl MSthread the TTL through the interception proxy.
Full Changelog: v0.1.1...v0.2.0
v0.1.1
idemstep v0.1.1 — house-style docs + release artifacts
idemstep v0.1.0
IdemStep — idempotency-key / exactly-once semantics for browser-automation agents, so retried checkout/submit steps never double-fire.