UNPKG

@pompeii-labs/cli

Version:

Magma CLI

45 lines (44 loc) 1.09 kB
function send(msg) { this.ws.send(JSON.stringify(msg)); } async function receive(data) { try { const parsedData = JSON.parse(data); switch (parsedData.type) { case "message": return await handleMessage.bind(this)(parsedData.data); default: this.logger?.warn(`Unhandled message type: ${parsedData.type}`); break; } } catch (error) { this.logger?.error(error.message ?? "Unknown"); this.send({ type: "error", data: error.message ?? "Unknown" }); } } async function handleMessage(data) { if (data.role && data.role !== "user") return; if (this.processing) { this.kill(); } this.logger?.info(`\u{1F464} ${data.content}`); data.role ??= "user"; this.addMessage(data); this.send({ type: "loading", data: true }); const reply = await this.main(); if (!reply) return; this.logger?.info(`\u{1F916} ${reply.content}`); this.send({ type: "message", agent_id: this.agentId, data: reply }); this.send({ type: "loading", data: false }); } const Handlers = { receive, send }; export { Handlers };