Skip to content

Releases: SuperMarioYL/idemstep

idemstep v0.3.0

19 Jun 04:52

Choose a tag to compare

idemstep — exactly-once idempotency for agent side-effects

v0.2.0

19 Jun 03:15

Choose a tag to compare

First feature iteration: a concurrency-correctness fix and TTL key expiry.

Fixed

  • Concurrent same-key calls fired the side effect more than once. idemStep only 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 ran fn and 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 }) and idemstep proxy --ttl MS thread the TTL through the interception proxy.

Full Changelog: v0.1.1...v0.2.0

v0.1.1

19 Jun 01:35

Choose a tag to compare

idemstep v0.1.1 — house-style docs + release artifacts

idemstep v0.1.0

13 Jun 12:41

Choose a tag to compare

IdemStep — idempotency-key / exactly-once semantics for browser-automation agents, so retried checkout/submit steps never double-fire.