export interface WorkspaceFileStorageConfig { readonly driver: "s3" | "local"; readonly baseDir: string; readonly endpoint: string; readonly region: string; readonly bucket: string; readonly accessKeyId: string; readonly secretAccessKey: string; readonly workspaceId: string; } export class WorkspaceFileStorageConfigFactory { create(env: Record): WorkspaceFileStorageConfig { const raw = env["BLOB_STORAGE_DRIVER"]; return { driver: raw === "s3" ? "s3" : "local", baseDir: env["BLOB_STORAGE_BASE_DIR"] ?? ".codemation/blobs", endpoint: env["BLOB_STORAGE_S3_ENDPOINT"] ?? "", region: env["BLOB_STORAGE_S3_REGION"] ?? "", bucket: env["BLOB_STORAGE_S3_BUCKET"] ?? "", accessKeyId: env["BLOB_STORAGE_S3_ACCESS_KEY_ID"] ?? "", secretAccessKey: env["BLOB_STORAGE_S3_SECRET_ACCESS_KEY"] ?? "", workspaceId: env["WORKSPACE_ID"] ?? "", }; } }