43 lines
1.3 KiB
TypeScript
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 });
|