- Wire local embedding provider as the default on startup when no profile is configured - Refactor embedding settings into dedicated service, DTOs, mappers and models - Rebuild settings page with profile management UI and live test feedback - Expose index summary (indexed versions + embedding count) on repo endpoints - Harden indexing pipeline and context search with additional test coverage Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
52 lines
1.9 KiB
TypeScript
52 lines
1.9 KiB
TypeScript
/**
|
|
* GET /api/v1/settings/embedding — retrieve embedding settings
|
|
* POST /api/v1/settings/embedding — update active embedding settings
|
|
* PUT /api/v1/settings/embedding — alias for POST
|
|
*/
|
|
|
|
import { json } from '@sveltejs/kit';
|
|
import type { RequestHandler } from './$types';
|
|
import type { EmbeddingSettingsUpdateDto } from '$lib/dtos/embedding-settings.js';
|
|
import { getClient } from '$lib/server/db/client';
|
|
import { EmbeddingSettingsDtoMapper } from '$lib/server/mappers/embedding-settings.dto.mapper.js';
|
|
import { EmbeddingSettingsService } from '$lib/server/services/embedding-settings.service.js';
|
|
import { handleServiceError, InvalidInputError } from '$lib/server/utils/validation';
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// GET — Return embedding settings
|
|
// ---------------------------------------------------------------------------
|
|
|
|
export const GET: RequestHandler = () => {
|
|
try {
|
|
const service = new EmbeddingSettingsService(getClient());
|
|
return json(EmbeddingSettingsDtoMapper.toDto(service.getSettings()));
|
|
} catch (err) {
|
|
return handleServiceError(err);
|
|
}
|
|
};
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// POST/PUT — Create or update a profile
|
|
// ---------------------------------------------------------------------------
|
|
|
|
async function upsertSettings(body: unknown) {
|
|
if (typeof body !== 'object' || body === null) {
|
|
throw new InvalidInputError('Request body must be a JSON object');
|
|
}
|
|
|
|
const service = new EmbeddingSettingsService(getClient());
|
|
const settings = await service.updateSettings(body as EmbeddingSettingsUpdateDto);
|
|
return EmbeddingSettingsDtoMapper.toDto(settings);
|
|
}
|
|
|
|
export const POST: RequestHandler = async ({ request }) => {
|
|
try {
|
|
const body = await request.json();
|
|
return json(await upsertSettings(body));
|
|
} catch (err) {
|
|
return handleServiceError(err);
|
|
}
|
|
};
|
|
|
|
export const PUT: RequestHandler = POST;
|