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-ai

Data 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);