morphbox
Version:
Docker-based AI sandbox for development with Claude integration
87 lines (84 loc) • 2.5 kB
JavaScript
import { j as json } from './index-3BbzJtgI.js';
class PersistentSessionManager {
sessions = /* @__PURE__ */ new Map();
restoreSession(sessionId) {
return false;
}
saveSession(sessionId, agentId, metadata) {
this.sessions.set(sessionId, {
id: sessionId,
type: "terminal",
status: "active",
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
lastActivity: (/* @__PURE__ */ new Date()).toISOString(),
metadata
});
}
listSessions() {
return Array.from(this.sessions.values());
}
deleteSession(sessionId) {
this.sessions.delete(sessionId);
}
updateActivity(sessionId) {
const session = this.sessions.get(sessionId);
if (session) {
session.lastActivity = (/* @__PURE__ */ new Date()).toISOString();
}
}
// Additional async methods for compatibility
async createSession(id) {
this.saveSession(id, id, {});
return { id, created: (/* @__PURE__ */ new Date()).toISOString() };
}
async getSession(id) {
return this.sessions.get(id) || null;
}
async destroySession(id) {
this.deleteSession(id);
return true;
}
}
let instance = null;
function getPersistentSessionManager() {
if (!instance) {
instance = new PersistentSessionManager();
}
return instance;
}
const GET = async () => {
try {
const sessionManager = getPersistentSessionManager();
const sessions = sessionManager.listSessions();
return json({
sessions: sessions.map((session) => ({
id: session.id,
type: session.type,
status: session.status,
createdAt: session.createdAt,
lastActivity: session.lastActivity,
metadata: session.metadata
})),
count: sessions.length
});
} catch (error) {
console.error("Error listing sessions:", error);
return json({ error: "Failed to list sessions" }, { status: 500 });
}
};
const DELETE = async ({ url }) => {
try {
const sessionId = url.searchParams.get("sessionId");
if (!sessionId) {
return json({ error: "Session ID required" }, { status: 400 });
}
const sessionManager = getPersistentSessionManager();
await sessionManager.killSession(sessionId);
return json({ success: true, message: "Session terminated" });
} catch (error) {
console.error("Error terminating session:", error);
return json({ error: "Failed to terminate session" }, { status: 500 });
}
};
export { DELETE, GET };
//# sourceMappingURL=_server.ts-feiPw9j7.js.map