Next.js
Setup
pnpm add @m4trix/coreimport {
AgentFactory,
AgentNetwork,
AgentNetworkEvent,
NextEndpoint,
S,
} from '@m4trix/core/matrix';
const requestEvent = AgentNetworkEvent.of('chat-request', S.Struct({ message: S.String }));
const responseEvent = AgentNetworkEvent.of('chat-response', S.Struct({ text: S.String, done: S.Boolean }));
const agent = AgentFactory.run()
.listensTo([requestEvent])
.emits([responseEvent])
.logic(async ({ triggerEvent, emit }) => {
emit({
name: 'chat-response',
payload: { text: `Echo: ${triggerEvent.payload.message}`, done: true },
});
})
.produce({});
const network = AgentNetwork.setup(
({ mainChannel, createChannel, sink, registerAgent }) => {
const main = mainChannel('main');
const client = createChannel('client').sink(sink.httpStream());
registerAgent(agent).subscribe(main).publishTo(client);
},
);
const api = network.expose({
protocol: 'sse',
select: { channels: 'client' },
startEventName: 'chat-request',
});
const handler = NextEndpoint.from(api).handler();
export const GET = handler;
export const POST = handler;How It Works
GET vs POST
Full Example with OpenAI Streaming
Last updated