Adapters Package
Data adapters and AI providers for flexible integrations
Overview
The adapters package provides pluggable storage backends and AI embedding providers.
Installation
pnpm add @flakiness-detective/adapters
# Optional peer dependencies
pnpm add @google-cloud/firestore @google/generative-aiData Adapters
In-Memory Adapter
Fast, ephemeral storage for development and testing.
import { createDataAdapter } from '@flakiness-detective/adapters';
const adapter = createDataAdapter({
type: 'in-memory'
}, logger);Filesystem Adapter
JSON-based persistence with automatic Date serialization.
const adapter = createDataAdapter({
type: 'filesystem',
basePath: './data',
failuresFile: 'failures.json',
clustersFile: 'clusters.json'
}, logger);Firestore Adapter
Production-ready Google Cloud Firestore integration with custom schema support.
import * as admin from 'firebase-admin';
const adapter = createDataAdapter({
type: 'firestore',
firestoreDb: admin.firestore(),
failuresCollection: 'test_failures',
clustersCollection: 'flaky_clusters'
}, logger);Custom Schema Support
Connect to existing Firestore collections with custom schemas:
const adapter = createDataAdapter({
type: 'firestore',
firestoreDb: admin.firestore(),
customSchema: {
fieldMapping: {
id: 'id',
testTitle: 'testName',
testFile: 'testFile',
errorMessage: 'errorMessage',
timestamp: 'createdAt',
metadata: {
projectName: 'projectName',
runId: 'runId'
}
},
failureFilter: {
field: 'status',
operator: '==',
value: 'failed'
}
}
}, logger);Embedding Providers
Google Generative AI
Production embeddings using Google's text-embedding-004 model.
import { createEmbeddingProvider } from '@flakiness-detective/adapters';
const provider = createEmbeddingProvider({
type: 'google',
apiKey: process.env.GOOGLE_AI_API_KEY,
model: 'text-embedding-004',
batchSize: 100,
batchDelay: 1000
}, logger);Mock Provider
Deterministic embeddings for testing (no API calls).
const provider = createEmbeddingProvider({
type: 'mock'
}, logger);Factory Functions
import {
createDataAdapter,
createEmbeddingProvider
} from '@flakiness-detective/adapters';
// Create adapter based on config
const adapter = createDataAdapter(config, logger);
// Create provider based on config
const provider = createEmbeddingProvider(config, logger);