Skip to content

Releases: JackChen-me/open-multi-agent

v1.2.0

18 Apr 12:24

Choose a tag to compare

First minor release since 1.1.0. MCP integration, three new LLM providers, context management strategies, a CLI, tool output cost controls, and fixes for abort and error propagation.

Features

  • MCP integration. New connectMCPTools() wires any MCP server (stdio) directly into agent tool use. @modelcontextprotocol/sdk is an optional peer dependency. Runnable example at examples/16-mcp-github.ts. (#89, by @ibrahimkzmv)

  • Three new LLM providers. First-class provider: 'deepseek' (deepseek-chat, deepseek-reasoner), provider: 'minimax' (global and China endpoints via MINIMAX_BASE_URL), and verified Groq via OpenAI-compatible baseURL in examples/19-groq.ts. (#113 and #114 by @hkalex; #121 by @mvanhorn)

  • Context management strategies. New AgentConfig.contextStrategy keeps long runs under token ceilings with four strategies: sliding-window, summarize, compact (rule-based, no extra LLM call), and custom. (#88 by @ibrahimkzmv; #111, #119 by @JackChen-me)

  • Tool output cost controls. New AgentConfig.maxToolOutputChars and per-tool ToolDefinition.maxOutputChars truncate large outputs (head + tail with a marker). New AgentConfig.compressToolResults compresses older tool results once the agent has moved on; errors are never compressed. (#110, #115, #116, #117, #118 by @JackChen-me)

  • CLI (oma). New binary for shell and CI with oma run, oma task, oma provider, JSON-first output, and stable exit codes. Docs at docs/cli.md. (#107 by @ibrahimkzmv)

  • AgentConfig.customTools. Inject tool definitions at config time from the orchestrator. Bypasses preset/allowlist filtering but still respects disallowedTools. (#109, #112 by @JackChen-me)

  • glob built-in tool. Find files by glob pattern, sorted by modification time. (#102 by @ibrahimkzmv)

Fixes

  • AbortSignal propagation. Abort now reaches tool execution, the Gemini adapter, and the abort queue path. (#104 fixes #99, #100, #101, by @JackChen-me)

  • Error event propagation. AgentRunner.run() now surfaces error events to callers. (#103 fixes #98, by @JackChen-me)

Examples

  • examples/16-mcp-github.ts: full MCP wiring
  • examples/17-minimax.ts, examples/18-deepseek.ts, examples/19-groq.ts: provider quickstarts
  • examples/with-vercel-ai-sdk/: Next.js + OMA runTeam() + AI SDK useChat

Docs

  • READMEs (EN/ZH) expanded: CLI, MCP, context strategies, tool output control, customTools. ZH caught up with EN on items that shipped in 1.1.

Install

npm install @jackchen_me/open-multi-agent@1.2.0

Thanks to @hkalex, @ibrahimkzmv, and @mvanhorn for the external contributions that make this release.

Full changelog: v1.1.0...v1.2.0

v1.1.0

11 Apr 07:21

Choose a tag to compare

First minor release since 1.0.1. Six new features, two fixes, two new examples, and one behavior change you should read before upgrading.

⚠️ Behavior change (read this before upgrading)

Agents now run with default-deny, dependency-scoped context (#87).
An agent only sees results from tasks it explicitly dependsOn, instead of every prior task in the run. This prevents context leakage between unrelated agents and keeps token usage predictable in larger teams.

If your existing teams relied on agents implicitly seeing all prior task output, add explicit dependsOn edges in your task graph. No API change is required for runTeam() users whose coordinator already produces a sensible DAG.

This change was prompted by a combination of competitive analysis (XCLI scopes sub-agent context to a minimum file set + tool allowlist by default) and a public post on X by guk2472 flagging inter-agent context pollution as the real production killer in multi-agent systems. Thanks for the signal.

Features

  • AbortSignal support for runTeam() and runTasks() (#69). Cancel a run mid-flight from the caller.
  • Skip coordinator for simple goals in runTeam() (#70). Single-agent goals no longer pay the coordinator round-trip.
  • Token budget management at agent and orchestrator level (#71). Stops runs that exceed a configured budget instead of silently burning tokens.
  • Tool allowlist / denylist / preset (#83). Restrict which tools an agent can call without rebuilding the registry.
  • Customizable coordinator (#85). Override the coordinator's model, system prompt, tools, toolPreset, and disallowedTools via CoordinatorConfig.
  • Dependency-scoped agent context (#87). See behavior change above.

Fixes

  • Per-agent mutex prevents concurrent runs on the same Agent instance from corrupting state (#77).
  • Duplicate progress events in the short-circuit path for runTeam() are gone, and completedTaskCount is no longer double-incremented (#82).

Examples

  • Multi-source research aggregation (#79)
  • Multi-perspective code review (#80)

Docs

  • README top fold rewritten and Examples section trimmed (#95)
  • Coverage badge updated to 88% (#57)
  • DECISIONS.md restructured to signal openness on MCP and A2A

Install

npm install @jackchen_me/open-multi-agent@1.1.0

v1.0.0

05 Apr 05:41

Choose a tag to compare

What's new since 0.2.0

Features

  • Structured output — optional outputSchema (Zod) on any agent, with auto-retry on validation failure (#36, #38)
  • Task retry with exponential backoffmaxRetries, retryDelayMs, retryBackoff per task (#37)
  • ObservabilityonTrace callback emits structured spans for LLM calls, tool calls, tasks, and agent runs (#40)
  • Lifecycle hooksbeforeRun / afterRun on AgentConfig for prompt rewriting and result post-processing (#45)
  • Human-in-the-looponApproval callback between task execution rounds to gate the next batch (#46)
  • Loop detection — detects stuck agents repeating the same tool calls or text, with configurable warn / terminate / custom handler (#49)
  • Grok (xAI) adapter — first-class support with dedicated GrokAdapter (#44)
  • Fallback tool-call extraction — local models that emit tool calls as plain text are now handled automatically (#47)

Testing & quality

  • 340 tests, 71% line coverage across src/ (#53)
  • Coverage badge added to README (#55)

Full changelog

v0.2.0...v1.0.0