learning_ai_common_plat/services/extraction-service/src/lib/config.ts
saravanakumardb1 c292bb5cc1 feat(extraction): scaffold extraction-service + @bytelyst/extraction package
- extraction-service: Fastify scaffold (port 4005) with extract/tasks modules
- src/lib/: config, errors, cosmos, product-config, python-bridge
- src/modules/extract/: types (Zod schemas), routes (POST /extract, batch, models)
- src/modules/tasks/: types, repository (Cosmos CRUD), routes (CRUD endpoints)
- Python sidecar: FastAPI app, LangExtract wrapper, models, task registry
- @bytelyst/extraction package: types, client factory, index exports
- Both pnpm build pass clean
2026-02-14 13:31:40 -08:00

19 lines
787 B
TypeScript

import { z } from 'zod';
const envSchema = z.object({
PORT: z.coerce.number().default(4005),
HOST: z.string().default('0.0.0.0'),
NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
CORS_ORIGIN: z.string().optional(),
SERVICE_NAME: z.string().default('extraction-service'),
COSMOS_ENDPOINT: z.string().min(1, 'COSMOS_ENDPOINT is required'),
COSMOS_KEY: z.string().min(1, 'COSMOS_KEY is required'),
COSMOS_DATABASE: z.string().default('lysnrai'),
JWT_SECRET: z.string().min(1, 'JWT_SECRET is required'),
DEFAULT_PRODUCT_ID: z.string().default('lysnrai'),
PYTHON_SIDECAR_URL: z.string().default('http://localhost:4006'),
DEFAULT_MODEL_ID: z.string().default('gemini-2.5-flash'),
});
export const config = envSchema.parse(process.env);