Skip to content

bide v0.6.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 06:07
· 157 commits to main since this release
4b7dcbe

At-most-once everywhere you author work.

v0.6.0 carries bide's side-effect guarantee to every place work gets written: plain-Go steps, fan-out tasks, tool middleware, sessions, and MCP tools, with cleaner cancellation and streaming along the way.

  • Durable steps run at most once. agent.Step and Parallel tasks get the same attempt-marker protection as tool calls and plan nodes. Declare a step safe to re-run with StepSafety (or Task.Safety).
  • Safety-aware tool middleware. ToolRetry retries only retry-safe tools and ToolCache caches only read-only ones. The agent also guarantees that a tool that isn't retry-safe runs once per call, whatever the middleware does. Middleware reads a call's safety with agent.ToolSafety.
  • Idempotent conversations. Session.SendOnce answers each inbound message once per key, so redelivered webhooks never open a second turn. Sessions stay consistent across several workers.
  • Per-run token budgets. Agent.WithTokenBudget is rebuilt from the journal, so a budget holds across a crash and resume. Each model call's usage is recorded with its turn.
  • Consistent usage accounting. agent.Usage counts each token once on every provider. TotalInputTokens and TotalTokens give the sums, and cost is comparable across Anthropic, OpenAI, and Gemini.
  • Clean cancellation. A cancelled tool call is treated as an unknown outcome rather than a failure. A cancelled run stops at the next turn, and a parent waits for its sub-agents.
  • Streaming. agent.NewStreamFunc and Stream.Close release a model response as soon as the caller stops reading. A response that ends before the turn finishes is reported as ErrIncompleteResponse. model/modeltest checks any adapter against the streaming contract.
  • MCP. Tool annotations apply for servers you trust, with mcp.TrustAnnotations(). Tools from other servers are treated as side effects.
  • Evals. Every eval samples the model afresh, even over a store kept between evals.

API changes:

  • middleware.TokenBudget is replaced by Agent.WithTokenBudget.
  • agent.Step treats a step as a side effect unless StepSafety says otherwise, and Parallel requires unique task names.
  • Usage.InputTokens is the uncached input on every provider.
  • eval.Run returns (Report, error).
  • mcp.Tools applies annotations only with TrustAnnotations().

Install:

go get github.com/bide-ai/bide@v0.6.0

Docs: https://bide-ai.com