import type { RequestEvent } from '@sveltejs/kit'; import { Agent } from '@atproto/api'; import { getOAuthClient } from './atproto/client'; export const sessionCookieName = 'atproto-session'; export async function getSessionAgent(event: RequestEvent) { const sessionDid = event.cookies.get(sessionCookieName); if (!sessionDid) return null; try { const oauthClient = await getOAuthClient(); const oauthSession = await oauthClient.restore(sessionDid); return oauthSession ? new Agent(oauthSession) : null; } catch (err) { console.warn('OAuth restore failed:', err); event.cookies.delete(sessionCookieName, { path: '/' }); return null; } } export function setSessionCookie(event: RequestEvent, did: string) { event.cookies.set(sessionCookieName, did, { path: '/', httpOnly: true, secure: process.env.NODE_ENV === 'production', sameSite: 'lax', maxAge: 60 * 60 * 24 * 30 // 30 days }); } export function deleteSessionCookie(event: RequestEvent) { event.cookies.delete(sessionCookieName, { path: '/' }); }