Files
startup/server/socketHandlers.js

67 lines
2.2 KiB
JavaScript

export function registerSocketHandlers(io, sessionManager) {
io.on("connection", (socket) => {
socket.emit("session:state", sessionManager.getState());
socket.emit("log:snapshot", sessionManager.getLogSnapshot());
socket.emit("chat:snapshot", { content: sessionManager.getChatSnapshot() });
socket.on("session:start", async (payload, callback) => {
try {
await sessionManager.start();
callback?.({ ok: true });
} catch (error) {
socket.emit("session:error", { message: error.message });
callback?.({ ok: false, error: error.message });
}
});
socket.on("session:stop", async (payload, callback) => {
try {
await sessionManager.stop();
callback?.({ ok: true });
} catch (error) {
socket.emit("session:error", { message: error.message });
callback?.({ ok: false, error: error.message });
}
});
socket.on("team:activate", async (payload, callback) => {
try {
await sessionManager.activateTeam();
callback?.({ ok: true });
} catch (error) {
socket.emit("session:error", { message: error.message });
callback?.({ ok: false, error: error.message });
}
});
socket.on("prompt:send", async ({ prompt }, callback) => {
try {
await sessionManager.sendPrompt(prompt);
callback?.({ ok: true });
} catch (error) {
socket.emit("session:error", { message: error.message });
callback?.({ ok: false, error: error.message });
}
});
socket.on("terminal:resize", ({ cols, rows }) => {
sessionManager.resize({ cols, rows });
});
socket.on("logs:clear", (payload, callback) => {
sessionManager.clearLogs();
callback?.({ ok: true });
});
socket.on("project:select", async ({ projectPath }, callback) => {
try {
await sessionManager.setProjectPath(projectPath);
callback?.({ ok: true, projectPath: sessionManager.getState().currentProjectPath });
} catch (error) {
socket.emit("session:error", { message: error.message });
callback?.({ ok: false, error: error.message });
}
});
});
}