Skip to content

Migrating from 0.22.9 to 0.23.0

0.23.0 is fully backward-compatible with 0.22.9. No existing code needs to change. All new features are opt-in.


New opt-in features

1. Coding agent infrastructure (lionagi/agent/)

A structured way to create agents with permission policies and lifecycle hooks.

from lionagi.agent import create_agent, AgentConfig, PermissionPolicy

# Use a built-in preset
config = AgentConfig.preset("coding")

# Or build your own
config = AgentConfig(
    name="my-agent",
    permission=PermissionPolicy(
        denylist=["rm -rf", "sudo"],
        confirm=["git push", "git commit"],
    ),
    hooks=["guard_destructive", "log_tool_use"],
)

agent = await create_agent(config)

Project-level defaults can be placed in .lionagi/settings.yaml; they are merged with the global ~/.lionagi/settings.yaml at startup.

See Agent Config API for full API reference.

2. Sandbox tool (lionagi/tools/sandbox.py)

Experiment safely inside an isolated git worktree. Changes never touch your main working tree until you explicitly merge().

from lionagi.tools.sandbox import SandboxSession

async with SandboxSession() as sb:
    await sb.create()          # spin up isolated worktree
    # ... make changes ...
    print(await sb.diff())     # inspect before committing
    await sb.commit("wip: try approach A")
    await sb.merge()           # promote to main tree
    # or: await sb.discard()  # throw it all away

See Sandbox API for full API reference.

3. DeepSeek native provider

import lionagi as li

branch = li.Branch(
    chat_model=li.iModel(
        provider="deepseek",
        model="deepseek-chat",
        # reads DEEPSEEK_API_KEY from environment
    )
)

4. Pi CLI endpoint

import lionagi as li

branch = li.Branch(
    chat_model=li.iModel(provider="pi_cli", model="pi/...")
)

Changelog

Full details: the 0.23.0 changelog entry.