Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.m4trix.dev/llms.txt

Use this file to discover all available pages before exploring further.

Unit Testing Agents

Test agent logic in isolation by calling the logic with mock trigger events. Use makeBound to create full event envelopes:
import { AgentNetworkEvent, S } from '@m4trix/core/matrix';

const requestEvent = AgentNetworkEvent.of('user-request', S.Struct({ query: S.String }));
const responseEvent = AgentNetworkEvent.of('agent-response', S.Struct({ answer: S.String }));

const envelope = requestEvent.makeBound(
  { runId: crypto.randomUUID() },
  { query: 'Hello' },
);

// Call your agent's logic (you may need to extract it for testing)
const emitted: unknown[] = [];
const emit = (e: unknown) => emitted.push(e);
await myAgentLogic({ triggerEvent: envelope, emit, params: {} });

expect(emitted).toHaveLength(1);
expect(emitted[0]).toMatchObject({ name: 'agent-response', payload: { answer: expect.any(String) } });

Integration Testing the Network

Run the network inside an Effect scope and publish events programmatically:
import { Effect } from 'effect';

await Effect.runPromise(
  Effect.scoped(
    Effect.gen(function* () {
      const plane = yield* network.run();
      const main = network.getMainChannel()!;
      // Publish a start event, collect from client channel, assert
    }),
  ),
);

Replay

For replay-based testing, store event sequences (e.g. from a run artifact) and replay them through the network. Use makeBound or decode to reconstruct envelopes from stored JSON.

Evals

Use @m4trix/evals for repeatable evaluation runs. See Eval Harness and the evals package docs.