import type { Request } from "express"
export type SessionConfig = {
apiToken?: string
defaultTeamId?: number
primaryLanguage?: string
baseUrl?: string
requestTimeoutMs?: number
defaultHeadersJson?: string
authScheme?: "auto" | "personal_token" | "oauth"
allowTools?: string | string[]
denyTools?: string | string[]
}
export function getSessionConfig(req: Request): SessionConfig {
const q = req.query as Record<string, string | undefined>
const apiToken = q.apiToken?.trim()
const teamIdStr = q.defaultTeamId?.trim()
const defaultTeamId = teamIdStr ? Number(teamIdStr) : undefined
const validTeamId = defaultTeamId !== undefined && Number.isFinite(defaultTeamId) && defaultTeamId > 0
? defaultTeamId
: undefined
const requestTimeoutMs = q.requestTimeoutMs ? Number(q.requestTimeoutMs) : undefined
return {
apiToken: apiToken || undefined,
defaultTeamId: validTeamId,
primaryLanguage: q.primaryLanguage,
baseUrl: q.baseUrl,
requestTimeoutMs,
defaultHeadersJson: q.defaultHeadersJson,
authScheme: (q.authScheme as SessionConfig["authScheme"]) ?? "auto",
allowTools: q.allowTools,
denyTools: q.denyTools
}
}