import { defineWrappedResponseHandler } from "#server/utils/handler"; import { R } from "#server/utils/response"; import { resolveAgentIdentity } from "#server/service/agent/identity"; import { createSession } from "#server/service/agent/session"; import { generateTempToken, setTempTokenCookie, getTempTokenTtlMs } from "#server/service/agent/temp-token"; import { getConfigUser, getConfigGlobal } from "#server/utils/context"; export default defineWrappedResponseHandler(async (event) => { const identity = await resolveAgentIdentity(event); let tempToken: string | null = null; let expiresAt: Date | null = null; if (!identity.userId && !identity.tempToken) { tempToken = generateTempToken(); expiresAt = new Date(Date.now() + getTempTokenTtlMs()); setTempTokenCookie(event, tempToken); } else if (!identity.userId && identity.tempToken) { tempToken = identity.tempToken; expiresAt = new Date(Date.now() + getTempTokenTtlMs()); } let modelId: number | null = null; if (identity.userId) { const preferred = await getConfigUser(event, "preferredLlmModelId"); if (preferred && preferred > 0) { modelId = preferred; } } else { const guestDefault = await getConfigGlobal("agentDefaultModelId"); if (guestDefault && guestDefault > 0) { modelId = guestDefault; } } const session = await createSession({ userId: identity.userId, tempToken, modelId, expiresAt, }); return R.success(session); });