Repository navigation
0.6.0a2
Pre-releaseWarning
This is a pre-release with breaking changes from 0.6.0a1 and 0.5.x. Read the upgrade notes below.
Highlights
pip install bub now installs only the agent kernel
bub.core can now be installed and imported without the rest of Bub. The default dependencies are only republic, pydantic, loguru and typing-extensions. The CLI, channels (including Telegram), the plugin system and TUI prompts move to a new app extra:
pip install "bub[app]" # full Bub: CLI, gateway, channels, plugins
pip install bub # kernel only, for embedding bub.core.AgentIf you run the bub command without the extra, it exits with the list of missing packages and an install hint. The Docker image, install.sh / install.ps1 and bub install already request bub[app].
Republic built-in tools in bub.core.Agent
Agent now accepts republic.tools built-in tools (WebSearch, WebFetch, CodeExecution, ImageGeneration, NativeTool) next to ordinary Tool objects:
agent = Agent(model=model, tools=[my_tool, republic.tools.WebSearch()])They are exposed as agent.builtin_tools and sent with every model call. The provider runs them server-side, so they skip ToolExecutor, ToolCallStarted and prepare_tools.
New RunFinished event
Every RunStarted is now followed by a RunFinished carrying status (ok, error or cancelled), steps, elapsed_ms and error. It is recorded on the tape as loop.finish.
Upgrade notes
- Install the
appextra wherever you use the CLI, gateway, channels or plugins:pip install "bub[app]"/uv add "bub[app]". - Module moves:
bub.tape,bub.tools,bub.storeandbub.sidecarsare removed; import frombub.core.tape,bub.core.tools,bub.core.storeandbub.core.sidecars.bub.toolis unchanged. - Event renames:
BeforeLlmCall→LLMCallStarted,AfterLlmCall→LLMCallFinished,BeforeToolCall→ToolCallStarted,AfterToolCall→ToolCallFinished,ChatCompleted→ChatFinished. PayloadsLlmCallRequest/LlmCallResult/LlmCallDecisionbecomeLLMCallRequest/LLMCallResult/LLMCallDecision. Plugins implementingbefore_llm_callthat importLlmCallDecisionmust update; hook names are unchanged. - Tape store: the kernel's
FileTapeStoreuses a plain substring query. The fuzzy, rapidfuzz-backed search is nowbub.builtin.store.FuzzyFileTapeStore, which the builtin plugin still provides, so CLI users see no change. .envloading moved frombub.frameworktobub.configure;bub.hookimplno longer loads.env.run_onceis now an async generator that writes usage into the givenStreamState. Update subclasses that override it.
Changes
🚨 Breaking Changes
- Install only bub.core by default and streamline the agent kernel - by @frostming and Claude Opus 5.5 in #361 (c705b)
🚀 Features
- Accept republic built-in tools in core Agent - by @frostming and Claude Opus 5.5 in #358 (48a4b)