v1.14.0
Breaking changes
This release shipped as a minor version, so a caller on a ^1.x range receives it without an explicit upgrade step. npm reports an engines mismatch as an EBADENGINE warning rather than an install failure, so a Node 18 project installs 1.14.0 successfully and then fails at run time.
- Node.js 20 or newer is now required across
@open-multi-agent/core,@open-multi-agent/otel, andcreate-oma-app. Node 18 reached end of life on 2025-04-30. - The bundled
openaidependency moved from v4 to v6. A project that also depends onopenaidirectly resolves a nested second copy until it moves to v6 as well. - Plans that were previously accepted can now fail at validation time. Invalid task dependency graphs, unsatisfiable task requirements, and invalid coordinator plans are rejected before execution instead of running partially. Each of these surfaces a defect that was previously silent, so correct graphs and rosters are unaffected. The individual entries are under Correctness and safety below.
Adaptive plan recovery
A run can now revise the not-yet-executed part of its task graph instead of carrying a plan that stopped fitting the work.
- Opt in with
recovery.mode: 'repairable', then supply aReplanneror anonTaskOutcomecallback that proposes an append-onlyPlanPatch. - Patches are validated for agent eligibility, limits, task states, references, and the resulting DAG, then gated through the optional
onPlanPatchapproval. - Application happens atomically at a task-outcome barrier, before downstream dispatch or failure cascade, so no original dependent starts against a stale plan.
- Revision history is exposed in results, progress events, and observability spans, and persisted through checkpoints with rollback when a checkpoint write fails.
See adaptive recovery.
Execution routing
- Added opt-in hybrid semantic routing through
executionRouting: { strategy: 'hybrid' }. Deterministic Team decisions stay authoritative; deterministic Single decisions receive one structured semantic assessment. - Added a provider-neutral
TaskProfilerinterface, a built-inLLMTaskProfiler, a strict task-profile schema, typed routing failures with timeout and fallback metadata, and semantic-routing observability. - Automatic
runTeam()routing remains deterministic, so existing runs are unchanged.
Provider support
- DeepSeek V4 Flash reasoning controls:
AgentConfig.thinking.enabledmaps to DeepSeek’s nativethinking.type, andthinking.effortaccepts the DeepSeek-only value'max'without forwarding it to OpenAI, Azure OpenAI, or GitHub Copilot. - Refreshed DeepSeek model guidance, retired aliases, examples, CLI reference, and scaffold defaults.
Correctness and safety
- Task requirements are enforced as global hard constraints across every scheduling strategy. A task whose
requiredTools,requiredCapabilities,requiredBackend, orrequiredProviderno agent satisfies is rejected instead of being dispatched to an ineligible agent. - Invalid task dependency graphs are rejected up front instead of executing a partially valid plan.
- The coordinator fails closed on an invalid plan rather than continuing with a plan it could not validate.
- OpenAI user aborts are classified as cancellation rather than as a retryable failure, and unsupported custom tool calls are rejected explicitly.
Compatibility
- Every public export from 1.13.0 is still exported, and new result and configuration fields remain optional.
- Adaptive recovery adds a version 2 task-queue snapshot.
fromSnapshot()still accepts version 1, so checkpoints written by earlier releases remain restorable. @open-multi-agent/[email protected]is republished to carry the Node 20enginesfloor. Its@open-multi-agent/core@^1.11.0range is unchanged.[email protected]pins generated starters to core1.14.0.
Thanks
- HarperZ9 contributed the mid-task recovery conformance fixture in #452, which pins the idempotency outcomes of four recovery cases against the current task-level checkpoint granularity.