Repository navigation
v0.4.0
Summary
Release v0.4.0 is a large feature release. CUGA now supports multi-agent work through a new supervisor runtime with an agent registry and a composition UI. The full CugaAgent graph is retired; CugaLite and CugaSupervisor are the two supported agents. Event-driven agents arrive with channels, triggers and NL→Flow arming, including WhatsApp as a direct channel. The supported container image now includes an experimental memory workspace built on Evolve, with retention controls and a management API. CUGA can also run over the Agent Client Protocol (ACP) via stdio. We welcome first-time contributor @anupamamurthi.
On the agent side, CugaLite adds a pre-execute VERIFY gate for code blocks that change data, and tries alternatives before it declares a task impossible. The final answer is now configurable (LLM instructions, a deterministic function, or both). Policies are isolated per agent, so playbooks no longer apply to other agents. A rejected-call guard stops the agent from repeating identical rejected API calls. The LLM layer adds a watsonx Orchestrate (wxo) platform and preserves WatsonX reasoning. Security work removes internal error details from server and events responses, and Dependabot alerts were addressed. Pull requests now require a DCO sign-off.
Upgrade notes
- The full CugaAgent graph is removed (#581). Use CugaLite or CugaSupervisor.
- The
evolveextra now requiresaltk-evolve>=1.5.2. - Pull requests now need a DCO
Signed-off-byline (#897).
What's Changed
Supervisor & multi-agent
- feat(supervisor): multi-agent registry, composition UI, and supervisor runtime by @sami-marreed in #433
- feat: retire full CugaAgent graph; keep CugaLite and CugaSupervisor (#580) by @sami-marreed in #581
Memory (experimental)
- feat(memory): add experimental Evolve management API by @illeatmyhat in #736
- feat(memory): add manual retention controls by @illeatmyhat in #735
- feat(memory): add experimental workspace to the supported image by @illeatmyhat in #737
Events & channels
- feat(events & channels): event-driven agents — channels, triggers, and NL→Flow arming by @anupamamurthi in #602
- feat(events & channels): Events followup tooling, deploy kit, rosters by @anupamamurthi in #603
- feat(events & channels): WhatsApp as a direct channel (Meta Cloud API) by @anupamamurthi in #605
CugaAgent
- feat(cuga-lite): pre-execute VERIFY gate for mutating code blocks by @sami-marreed in #739
- fix(cuga_lite): exhaust alternatives before declaring a task impossible (#704) by @Sergey-Zeltyn in #706
Agent, policy & LLM
- feat(agent): configurable final answer — LLM instructions, a deterministic function, or both (#621) by @segevshlomovIBM in #707
- feat(llm): add wxo platform to LLMManager for watsonx Orchestrate routing by @laredo in #716
- fix(policy): per-agent policy isolation — playbooks no longer bleed across agents (#767) by @offerakrabi in #773
- fix(registry): rejected-call guard — stop re-issuing identical rejected API calls (#599) by @Sergey-Zeltyn in #733
- fix(llm): preserve WatsonX reasoning by @sami-marreed in #796
- fix(llm): correct stale RITS registrations — dead Gemma endpoint and 32k Mistral context window by @Sergey-Zeltyn in #725
- fix(state): stop leaking the host wall clock into frozen-world-clock benchmark prompts (#705) by @Sergey-Zeltyn in #708
Integrations & CLI
- feat(acp): add Agent Client Protocol stdio support by @offerakrabi in #787
- feat(appworld): agent-mode login and remote APIs host; fix reassigned variables by @sami-marreed in #795
- fix(answer): classify compose-and-send AppWorld tasks as ACTION (#728) by @Sergey-Zeltyn in #729
- fix(registry): normalize AppWorld file_system paths to canonical ~/ form (#730) by @Sergey-Zeltyn in #740
- feat(cli): add service instance purge command by @illeatmyhat in #726
Knowledge
- fix(knowledge): lower embedding batch defaults so ingest fits a 4GB pod by @dolev31 in #714
- fix(knowledge): let an explicit env override beat the RAG profile by @dolev31 in #713
- fix(knowledge): ground demo starter in Sovereign Core capabilities by @sami-marreed in #906
- docs: replace Knowledge Agent Sovereign Core PDF by @sami-marreed in #905
Security & dependencies
- fix(security): stop sending internal error details to callers by @haroldship in #681
- chore(security): enforce no exception detail in server responses (#721) by @haroldship in #723
- fix(security): stop leaking exception text in the events layer by @haroldship in #769
- chore(llm): use SHA-256 for the model cache key and record why alert 170 is dismissed by @haroldship in #678
- fix(deps): remediate open Dependabot alerts by @haroldship in #763
- fix(deps): address open Dependabot alerts (anyio, accelerate, undici, adm-zip) by @haroldship in #803
Docs, CI & tooling
- ci: add required DCO check and document the external PR limit by @sami-marreed in #897
- docs(contributing): clarify external contribution policy by @sami-marreed in #802
- fix(skills): update cuga commit skill to not commit single files by @offerakrabi in #749
- fix(tests): parse OAuth authorize URL instead of substring matching by @haroldship in #770
New Contributors
- @anupamamurthi made their first contribution in #602
Full Changelog: v0.3.2...v0.4.0