Dual-path LLM enrichment for AI context prep messages: 1. extraction-service (if EXTRACTION_SERVICE_URL set) 2. Ollama direct (if OLLAMA_URL set) — non-streaming /api/generate 3. Keyword rules fallback 4. Generic fallback New env vars: OLLAMA_URL, OLLAMA_MODEL (default: gemma3:4b) Both LLM paths use 5s timeout and null-return-on-error pattern. Feature-gated behind ai_context_messages.enabled flag.
23 lines
1.1 KiB
TypeScript
23 lines
1.1 KiB
TypeScript
import { z } from 'zod';
|
|
import { baseBackendConfigSchema } from '@bytelyst/backend-config';
|
|
|
|
const envSchema = baseBackendConfigSchema.extend({
|
|
PORT: baseBackendConfigSchema.shape.PORT.default(4011),
|
|
SERVICE_NAME: baseBackendConfigSchema.shape.SERVICE_NAME.default('chronomind-backend'),
|
|
DB_PROVIDER: baseBackendConfigSchema.shape.DB_PROVIDER.default('memory'),
|
|
JWT_SECRET: z.string().default('dev-secret-do-not-use-in-prod'),
|
|
PLATFORM_SERVICE_URL: z.string().default('http://localhost:4003'),
|
|
TELEMETRY_ENABLED: z.coerce.boolean().default(false),
|
|
FEATURE_FLAGS_ENABLED: z.coerce.boolean().default(false),
|
|
FIELD_ENCRYPT_ENABLED: z.coerce.boolean().default(true),
|
|
FIELD_ENCRYPT_KEY_PROVIDER: z.enum(['memory', 'env', 'akv']).default('memory'),
|
|
FIELD_ENCRYPT_KEY: z.string().optional(),
|
|
FIELD_ENCRYPT_MEK_NAME: z.string().default('chronomind-mek'),
|
|
AZURE_KEYVAULT_URL: z.string().optional(),
|
|
EXTRACTION_SERVICE_URL: z.string().optional(),
|
|
OLLAMA_URL: z.string().optional(),
|
|
OLLAMA_MODEL: z.string().default('gemma3:4b'),
|
|
});
|
|
|
|
export const config = envSchema.parse(process.env);
|