New capabilities
Agent delegation
Agents in an orchestrated run can now hand a sub-prompt to another agent on the team and receive its final output as a tool result. Opt-in via registerBuiltInTools(registry, { includeDelegateTool: true }). Five guards: self-delegation, unknown agent, cycle detection, configurable depth cap (maxDelegationDepth, default 3), and pool deadlock. Delegated runs’ token usage rolls into the parent’s maxTokenBudget so sub-agents cannot silently bypass it. (#123 by @JackChen-me)
runTeam DAG dashboard CLI
oma runTeam ... --dashboard writes a static HTML view of the resolved task graph after a run, including dependencies and per-task status. (#122 by @ibrahimkzmv, follow-up docs in #141 by @JackChen-me)
The previously advisory outputSchema on AgentConfig is now enforced: results are parsed and validated, with one retry on validation failure. defineTool schemas pass through to the LLM provider. (#149 by @Xin-Mai)
Pluggable shared memory
TeamConfig.sharedMemoryStore accepts any MemoryStore implementation (Redis, SQLite, your own). sharedMemory: true keeps the existing in-process default. (#157 by @JackChen-me)
Advanced LLM sampling
top_p, top_k, repetition_penalty, min_p, and extraBody are now first-class on agent and coordinator configs. Payload spread order is fixed so extraBody overrides sampling parameters but never transport. (#163 by @apollo-mg)
Was previously hardcoded; now configurable per agent. (#173 by @JackChen-me)
Two new providers
Fixes
- Context compaction persistence and turn dropping.
compact strategy was losing turns and not persisting compressed history. (#161 by @apollo-mg)
- OpenAI mixed-content message ordering. Tool messages must precede user messages in mixed content; previously emitted in the wrong order. (#178 by @voidborne-d)
- Provider type widening on configs.
AgentConfig, CoordinatorConfig, and OrchestratorConfig were not using the full SupportedProvider union. (#158 by @JackChen-me)
Behavior changes
#163 removed two implicit defaults that some users may have relied on:
parallel_tool_calls: false is no longer forced. If you need the old behavior, set parallelToolCalls: false explicitly (now exposed via #173).
- The default
frequency_penalty override has been removed.
These are behavior changes, not API breaks, but worth checking if you depended on the old defaults.
The same PR also moved the local <think> tag parsing out of the agent layer into tool/text-tool-extractor.ts. This is internal cleanup with no user-visible impact.
Examples and cookbook
Nine new examples and a category reorganization (#125 by @JackChen-me):
Docs and infrastructure
- README refresh: positioning, branding, hero block, integrations, examples section. (#126, #176, #177, #179 by @JackChen-me)
CLAUDE.md architecture map synced with the current src/ layout. (#171 by @JackChen-me)
- CLI dashboard documented and added to the flag table. (#141 by @JackChen-me)
- Real badges and Codecov integration. (#127, #128, #129, #130 by @JackChen-me)
- npm registry pinned to
npmjs.org via repo-level .npmrc (#170 by @JackChen-me).
- Extended LLM adapter coverage for issue #54. (#144 by @jadegold55)
Install
Thanks to @ibrahimkzmv, @mvanhorn, @Klarline, @jadegold55, @zouhh22333-beep, @Kinoo0, @apollo-mg, @Optimisttt, @Agentscreator, @pei-pei45, @fault-segment, @Xin-Mai, @HuXiangyu123, @JackChiang233, @kenrogers, and @voidborne-d for the external contributions that make this release.
Full changelog: https://github.com/JackChen-me/open-multi-agent/compare/v1.2.0…v1.3.0