Skip to content

v0.0.29 — StorageClient & Cost Tracking API

Choose a tag to compare

@brandomagnani brandomagnani released this 02 Mar 16:22
· 153 commits to main since this release

Standalone StorageClient (#29)

Browse and download checkpoint files from S3 without creating an Evolve instance or sandbox.

const s = storage({ url: "s3://my-bucket/prefix/" });
const checkpoints = await s.listCheckpoints({ tag: "poker-agent" });
const files = await s.downloadFiles("latest", { glob: ["workspace/output/*.json"] });
  • listCheckpoints(), getCheckpoint(), downloadFiles() — full checkpoint browsing API
  • Evolve.storage() accessor for bound client on existing instances
  • Supports both BYOK (user's S3 bucket) and Gateway (Evolve-managed) modes
  • Security hardening: entry type allowlist, path traversal prevention, tar injection protection, streaming SHA-256 integrity
  • 62 new unit tests
  • Full Python SDK parity via bridge

Per-Run Cost Tracking API (#31)

Query per-run and per-session LLM spend. Requires gateway mode.

const r1 = await evolve.run({ prompt: "Analyze the data" });
const session = await evolve.getSessionCost();
console.log(session.totalCost);        // 0.42 (USD)
console.log(session.runs.length);      // per-run breakdown

const cost = await evolve.getRunCost({ runId: r1.runId });
console.log(cost.cost, cost.model);
  • getSessionCost() / get_session_cost() — total cost, tokens, and per-run breakdown
  • getRunCost({ runId } | { index }) / get_run_cost(run_id= | index=) — cost by ID or index (negative indexing supported)
  • RunCost and SessionCost types with full token/cost/model breakdown
  • Supported for Claude and Codex agents (Gemini, Qwen, Kimi, OpenCode coming next)
  • Works after kill() via previousSessionTag fallback
  • AgentResponse.runId / run_id for correlating runs to costs
  • Full Python SDK parity (bridge + dataclasses + validation)

Other Changes

  • Nextra docs site with CI/CD pipeline and 4-level test suite
  • Publish workflow now idempotent on re-runs (skips already-published versions)
  • Fixed Python bridge InvalidStateError on timeout/cancellation race conditions
  • Fixed gateway storage mode regression and BSD tar year-format parsing
  • Fixed duplicate model_provider key in Codex TOML config

Install

npm install @evolvingmachines/sdk          # TypeScript
pip install evolve-sdk==0.0.29             # Python