import type { Daytona } from '@daytonaio/sdk'; export const DAYTONA_DEFAULT_WORKDIR = '/home/daytona'; export type DaytonaClientOptions = NonNullable< ConstructorParameters[0] >; export type DaytonaRequiredConfig = { apiKey: string; clientOptions: DaytonaClientOptions; }; export type DaytonaRunnerPathsConfig = { workdir: string; }; export function daytonaClientOptions(apiKey: string): DaytonaClientOptions { return { apiKey, ...(process.env.DAYTONA_API_URL?.trim() ? { apiUrl: process.env.DAYTONA_API_URL.trim() } : {}), ...(process.env.DAYTONA_TARGET?.trim() ? { target: process.env.DAYTONA_TARGET.trim() } : {}), }; } export function loadDaytonaRequiredConfig( options: { environment?: 'preview' | 'production' | null; } = {}, ): DaytonaRequiredConfig { const environment = options.environment ?? null; const keyName = environment === 'preview' ? 'DAYTONA_API_KEY_PREVIEW' : 'DAYTONA_API_KEY'; const apiKey = process.env[keyName]?.trim(); if (!apiKey) { throw new Error(`Missing required Daytona configuration: ${keyName}.`); } return { apiKey, clientOptions: daytonaClientOptions(apiKey), }; } export function loadDaytonaRunnerPathsConfig(): DaytonaRunnerPathsConfig { return { workdir: process.env.DAYTONA_WORKDIR?.trim() || DAYTONA_DEFAULT_WORKDIR, }; }