Skip to main content
Glama
pattern-vector-service.ts2.78 kB
/** * Pattern Vector Service * * Handles pattern-specific Vector DB operations * Extends BaseVectorService for organizational patterns */ import { VectorDBService } from './vector-db-service'; import { OrganizationalPattern } from './pattern-types'; import { EmbeddingService } from './embedding-service'; import { BaseVectorService, BaseSearchOptions, BaseSearchResult } from './base-vector-service'; export interface PatternSearchOptions extends BaseSearchOptions {} export interface PatternSearchResult extends BaseSearchResult<OrganizationalPattern> {} export class PatternVectorService extends BaseVectorService<OrganizationalPattern> { constructor(collectionName: string = 'patterns', vectorDB?: VectorDBService, embeddingService?: EmbeddingService) { super(collectionName, vectorDB, embeddingService); } // Implement abstract methods from BaseVectorService protected createSearchText(pattern: OrganizationalPattern): string { const triggerText = pattern.triggers.join(' '); const resourceText = pattern.suggestedResources.join(' '); return `${pattern.description} ${triggerText} ${resourceText} ${pattern.rationale}`.toLowerCase(); } protected extractId(pattern: OrganizationalPattern): string { return pattern.id; } protected createPayload(pattern: OrganizationalPattern): Record<string, any> { return { description: pattern.description, triggers: pattern.triggers.map(t => t.toLowerCase()), suggestedResources: pattern.suggestedResources, rationale: pattern.rationale, createdAt: pattern.createdAt, createdBy: pattern.createdBy }; } protected payloadToData(payload: Record<string, any>): OrganizationalPattern { return { id: '', // Will be set from document ID in base class description: payload.description, triggers: payload.triggers, suggestedResources: payload.suggestedResources, rationale: payload.rationale, createdAt: payload.createdAt, createdBy: payload.createdBy }; } // Public API methods - delegate to base class with appropriate names async storePattern(pattern: OrganizationalPattern): Promise<void> { await this.storeData(pattern); } async searchPatterns(query: string, options: PatternSearchOptions = {}): Promise<PatternSearchResult[]> { return await this.searchData(query, options); } async getPattern(id: string): Promise<OrganizationalPattern | null> { return await this.getData(id); } async getAllPatterns(): Promise<OrganizationalPattern[]> { return await this.getAllData(); } async deletePattern(id: string): Promise<void> { await this.deleteData(id); } async getPatternsCount(): Promise<number> { return await this.getDataCount(); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vfarcic/dot-ai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server