@morphixai/agent-bus
v1.0.0
Published
Parent/child/sibling messaging bus for agent runtimes — ask/reply, notifications, and subtree teardown.
Maintainers
Readme
@morphixai/agent-bus
Tree-shaped, in-process message bus for agent runtimes — the transport behind
parent ↔ child bidirectional asks in @morphixai/agent-framework.
Each agent instance owns one AgentBus node in a tree mirroring the spawn
tree. Closing a node tears down its subtree and rejects pending asks. Traffic:
asks (request/reply with timeout), notifications (fire-and-forget),
and sibling routing through the common parent. Process-local — no network, no
serialization.
Install
npm install @morphixai/agent-busUsage
import { createBus } from '@morphixai/agent-bus';
const root = createBus('root');
const worker = root.spawnChild('worker-1');
// parent answers children's asks deterministically:
root.onAsk(async (childRunId, question) => `processed: ${question}`);
// child asks parent; the handler's return value resolves the promise:
const answer = await worker.askParent('do thing', { timeoutMs: 30_000 });
// no handler registered? asks buffer for the parent's next prompt:
for (const ask of root.drainPendingAsksForPrompt()) ask.resolve('answer');
// fire-and-forget notes (framework injects them before the next turn):
root.deliver({ type: 'note', payload: 'heads up' });
worker.notifySibling('worker-2', { type: 'status', payload: 'done' });
worker.close(); // tear down subtreeAPI
createBus(runId)— rootAgentBusnode;bus.spawnChild(childRunId)forks.bus.askParent(question, { timeoutMs })— request/replyPromise.bus.onAsk(handler)— parent-side deterministic answer handler.bus.deliver(message)/bus.notifySibling(id, message)— fire-and-forget.bus.drainPendingAsksForPrompt()/bus.drainUnreadNotifications()— pull buffered traffic.bus.subscribe(type?)— async iterator over messages.bus.close()— tear down subtree;BusError,INTERNAL_TYPES.
Versioning
≥ 1.0.0 is the framework-v2 stable line, released in lockstep with
agent-core / agent-workspace / agent-framework. The API is unchanged
from late 0.2.x — the major marks the stable line, not a break.
License
MIT © MorphixAI
