feat(EMBEDDINGS-0001): enable local embedder by default and overhaul settings page
- 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>
This commit is contained in:
77
src/lib/server/models/embedding-profile.ts
Normal file
77
src/lib/server/models/embedding-profile.ts
Normal file
@@ -0,0 +1,77 @@
|
||||
export interface EmbeddingProfileEntityProps {
|
||||
id: string;
|
||||
provider_kind: string;
|
||||
title: string;
|
||||
enabled: boolean | number;
|
||||
is_default: boolean | number;
|
||||
model: string;
|
||||
dimensions: number;
|
||||
config: Record<string, unknown> | string | null;
|
||||
created_at: number;
|
||||
updated_at: number;
|
||||
}
|
||||
|
||||
export class EmbeddingProfileEntity {
|
||||
id: string;
|
||||
provider_kind: string;
|
||||
title: string;
|
||||
enabled: boolean | number;
|
||||
is_default: boolean | number;
|
||||
model: string;
|
||||
dimensions: number;
|
||||
config: Record<string, unknown> | string | null;
|
||||
created_at: number;
|
||||
updated_at: number;
|
||||
|
||||
constructor(props: EmbeddingProfileEntityProps) {
|
||||
this.id = props.id;
|
||||
this.provider_kind = props.provider_kind;
|
||||
this.title = props.title;
|
||||
this.enabled = props.enabled;
|
||||
this.is_default = props.is_default;
|
||||
this.model = props.model;
|
||||
this.dimensions = props.dimensions;
|
||||
this.config = props.config;
|
||||
this.created_at = props.created_at;
|
||||
this.updated_at = props.updated_at;
|
||||
}
|
||||
}
|
||||
|
||||
export interface EmbeddingProfileProps {
|
||||
id: string;
|
||||
providerKind: string;
|
||||
title: string;
|
||||
enabled: boolean;
|
||||
isDefault: boolean;
|
||||
model: string;
|
||||
dimensions: number;
|
||||
config: Record<string, unknown>;
|
||||
createdAt: number;
|
||||
updatedAt: number;
|
||||
}
|
||||
|
||||
export class EmbeddingProfile {
|
||||
id: string;
|
||||
providerKind: string;
|
||||
title: string;
|
||||
enabled: boolean;
|
||||
isDefault: boolean;
|
||||
model: string;
|
||||
dimensions: number;
|
||||
config: Record<string, unknown>;
|
||||
createdAt: number;
|
||||
updatedAt: number;
|
||||
|
||||
constructor(props: EmbeddingProfileProps) {
|
||||
this.id = props.id;
|
||||
this.providerKind = props.providerKind;
|
||||
this.title = props.title;
|
||||
this.enabled = props.enabled;
|
||||
this.isDefault = props.isDefault;
|
||||
this.model = props.model;
|
||||
this.dimensions = props.dimensions;
|
||||
this.config = props.config;
|
||||
this.createdAt = props.createdAt;
|
||||
this.updatedAt = props.updatedAt;
|
||||
}
|
||||
}
|
||||
20
src/lib/server/models/embedding-settings.ts
Normal file
20
src/lib/server/models/embedding-settings.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import type { EmbeddingProfile } from './embedding-profile.js';
|
||||
|
||||
export interface EmbeddingSettingsProps {
|
||||
profiles: EmbeddingProfile[];
|
||||
activeProfile: EmbeddingProfile | null;
|
||||
}
|
||||
|
||||
export class EmbeddingSettings {
|
||||
profiles: EmbeddingProfile[];
|
||||
activeProfile: EmbeddingProfile | null;
|
||||
|
||||
constructor(props: EmbeddingSettingsProps) {
|
||||
this.profiles = props.profiles;
|
||||
this.activeProfile = props.activeProfile;
|
||||
}
|
||||
|
||||
get activeProfileId(): string | null {
|
||||
return this.activeProfile?.id ?? null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user