Migrating from 1.0.0 → 0.7.x (the version reset)¶
lazybridge==1.0.0 shipped on PyPI in April 2026 with the original
namespace (LazyAgent, LazyTool, LazySession, LazyContext).
The project then went through a deliberate pre-1.0 reset: the public
API was renamed and trimmed to the canonical Agent / Tool / Session
/ sentinels shape now documented site-wide, the version was
rolled back to 0.7.0, and a sequence of point releases
(through 0.7.9) tightened the surface.
If you installed 1.0.0 from PyPI and want to move forward, this is
your migration path. If you're starting fresh today, skip this page
— the rest of the documentation reflects the current API.
Why the version went backwards¶
The 1.0.0 cut leaked too many factory variants and internal
helpers into the public surface. Calling it 1.0 would have
locked us into supporting all of it indefinitely. Choosing to ship
a 0.7.x reset is the explicit signal: pre-1.0, expect breaking
changes between minor releases. The next 1.0.0 will be cut from
the current line once the surface stabilises.
This is also why lazybridge.__stability__ == "alpha" and why
pyproject.toml ships Development Status :: 3 - Alpha.
Symbol renames¶
Every renamed top-level symbol with its 0.7.x replacement. The same
table is enforced machine-readably by lazybridge/llms.json under
the renames key.
| 1.0 name | 0.7.x name | Notes |
|---|---|---|
LazyAgent |
Agent |
Class renamed; semantics preserved |
LazyTool |
Tool.wrap() factory (preferred) or Tool |
Tool.wrap() is the canonical multi-input dispatcher |
LazySession |
Session |
|
LazyContext |
sentinels + Store + Memory |
Decomposed — there is no single replacement |
Agent.from_chain |
Agent.chain |
Alias deleted in 0.7.9 |
Agent.from_parallel |
Agent.parallel |
Alias deleted in 0.7.9 |
Agent.from_engine |
Agent(engine=…) |
Constructor only; the factory was a no-op |
Agent.from_model |
Agent(model_or_engine, …) |
The positional shortcut covers it |
Agent.from_plan |
Agent(engine=Plan(…)) |
Same — no factory variant kept |
_ParallelAgent (private) |
ParallelAgent (public) |
Returns a single Envelope (with payload = list[Envelope]) |
Deleted configuration objects¶
The 1.0 line shipped three dataclass-based config bundles. All
three were deleted in 0.7.9; pass the fields as flat kwargs on
Agent(...) / LLMEngine(...) instead.
| Deleted | Was used to bundle | Replace with |
|---|---|---|
AgentRuntimeConfig |
timeout, output_validator, … |
Flat kwargs on Agent(...) |
ResilienceConfig |
max_retries, retry_delay, fallback |
Flat kwargs on Agent(...) |
ObservabilityConfig |
session, verbose |
Flat kwargs on Agent(...) |
Deleted behaviour¶
| Removed | Why | Replace with |
|---|---|---|
Tool(mode="auto") |
Hidden-fallback ladder produced silent provider failures | Pick "signature" (default), "hybrid", or "llm" explicitly |
tool_choice="parallel" |
Never functioned; concurrent dispatch is the default | Drop the argument; the engine emits parallel tool calls automatically |
| Silent fallback to Anthropic when a model string had no rule | Cryptic provider-side errors several RTTs later | LLMEngine now raises ValueError; either register a rule or pass provider= |
Bare-provider-alias-as-model (LLMEngine("anthropic")) |
Constructed successfully but produced model_id "anthropic" at request time |
Agent.from_provider("anthropic", tier="…") for tier aliases, or Agent(engine=LLMEngine("<model-id>")) for pinned ids |
MCP.stdio(...) / MCP.http(...) with no allow= / deny= |
Warn-and-proceed default was unsafe for filesystem / git / shell servers | Deny-by-default since 0.7.9 — pass allow=["*"] after audit, or a glob list |
lazybridge.external_tools.report_builder |
Reporting subsystem extracted to a sibling package | pip install lazybridge-reports, then import lazybridge_reports |
Quickstart diff¶
1.0:
from lazybridge import LazyAgent, LazyTool
agent = LazyAgent.from_chain([
LazyAgent.from_model("claude-opus-4-1"),
LazyAgent.from_model("gpt-4o"),
])
result = await agent.run("hello")
0.7.x:
from lazybridge import Agent, LLMEngine
researcher = Agent(name="research", engine=LLMEngine("claude-opus-4-7"))
writer = Agent(name="write", engine=LLMEngine("gpt-5.4-mini"))
pipeline = Agent.chain(researcher, writer)
result = pipeline("hello") # sync entry point — no asyncio.run wrapper
See also¶
- Concepts → Canonical vs sugar — every current factory mapped back to its canonical form.
CHANGELOG.md— full release history.lazybridge/llms.json— machine-readable rename map and anti-pattern list.