Skip to content

Releases: clibequilibrium/forked

forked 0.2.0

Choose a tag to compare

@clibequilibrium clibequilibrium released this 22 Oct 21:52

Breaking: effect keys reused with a different payload are rejected

Recording an effect under a key that already exists used to replay the stored result even if the payload was different. So a retry that changed a charge amount but kept the key charge:user silently got the old charge back.

Now that case fails with EffectMismatch in Rust and 409 effect_mismatch over HTTP. Same key with the same payload still replays as before. Results are not compared.

Build keys from whatever identifies the input (e.g. charge:u-77:order-9) and keep values that change on every call, like timestamps or request ids, out of payload.

Changes

  • forked-core: record_effect checks the payload of an existing key; new Error::EffectMismatch.
  • forked-api: maps it to 409 effect_mismatch.
  • @forked-run/client: findEffect(key, { payload }) applies the same check on the probe step, before any work runs.
  • @forked-run/mcp: forked_find_effect accepts an optional payload.
  • Fix: @forked-run/mcp and @forked-run/langgraph 0.1.0 depended on @forked-run/client through a local file: path that did not resolve from npm. They now depend on ^0.2.0.

Packages

  • crates.io: forked-core, forked-api, forked-memory, forked-sqlite, forked-server 0.2.0
  • npm: @forked-run/client, @forked-run/mcp, @forked-run/langgraph 0.2.0

forked 0.1.0

Choose a tag to compare

@clibequilibrium clibequilibrium released this 19 Oct 19:27

First public release.

Git for agent state: fork, rewind and replay structured AI agent state, with a side-effect log that keeps emails, payments and API calls effectively-once across retries and rewinds.

Crates (crates.io): forked-core, forked-api, forked-memory, forked-sqlite, forked-server
npm: @forked-run/client, @forked-run/langgraph (LangGraph checkpointer), @forked-run/mcp (MCP server)

A fork is one ref write: 1,000 branches in about 1.4 ms in memory, zero bytes of state copied. Reproduce with: cargo run --release -p forked-sqlite --example bench

Self-host: cargo install forked-server, or the Dockerfile in forked-server/
Managed: https://forked.run
Docs: docs/API.md and docs/FORMAT.md