learning_ai_common_plat/services/extraction-service/src/server.ts

43 lines
1.3 KiB
TypeScript

/**
* Extraction Service — Fastify server entry point.
*
* Modules: extract, tasks.
* Port: 4005 (configurable via PORT env var).
* Product-agnostic: all data scoped by productId.
*
* Depends on a Python sidecar running LangExtract (default port 4006).
*/
// Resolve secrets from configured provider BEFORE config parsing
import { resolveSecrets, LYSNR_SECRETS } from '@bytelyst/config';
await resolveSecrets([
LYSNR_SECRETS.COSMOS_KEY,
LYSNR_SECRETS.COSMOS_ENDPOINT,
LYSNR_SECRETS.JWT_SECRET,
LYSNR_SECRETS.GEMINI_API_KEY,
]);
import { createServiceApp, startService } from '@bytelyst/fastify-core';
import { extractRoutes } from './modules/extract/routes.js';
import { taskRoutes } from './modules/tasks/routes.js';
import { config } from './lib/config.js';
const app = await createServiceApp({
name: 'extraction-service',
version: '0.1.0',
description: 'LLM-powered structured extraction via LangExtract — product-agnostic',
corsOrigin: config.CORS_ORIGIN,
swagger: {
title: 'Extraction Service',
description: 'LLM-powered structured extraction via LangExtract',
port: config.PORT,
},
metrics: true,
});
// Register route modules
await app.register(extractRoutes, { prefix: '/api' });
await app.register(taskRoutes, { prefix: '/api' });
await startService(app, { port: config.PORT, host: config.HOST });