@pompeii-labs/cli
Version:
Magma CLI
45 lines (44 loc) • 1.09 kB
JavaScript
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
};