All files / src/agent alias.ts

12.5% Statements 1/8
0% Branches 0/2
0% Functions 0/1
14.28% Lines 1/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35                    15x                                                
/**
 * Agent Alias Generator
 *
 * Generates unique funny aliases for agents using adjective-animal combinations.
 * E.g., "jolly-penguin", "bold-eagle", "swift-otter".
 */
 
import { uniqueNamesGenerator, adjectives, animals } from 'unique-names-generator';
import type { AgentRepository } from '../db/repositories/agent-repository.js';
 
const MAX_RETRIES = 10;
 
/**
 * Generate a unique agent alias that doesn't collide with existing agent names.
 *
 * @param repository - Agent repository to check for name collisions
 * @returns A unique adjective-animal alias (e.g., "jolly-penguin")
 */
export async function generateUniqueAlias(repository: AgentRepository): Promise<string> {
  for (let i = 0; i < MAX_RETRIES; i++) {
    const alias = uniqueNamesGenerator({
      dictionaries: [adjectives, animals],
      separator: '-',
      style: 'lowerCase',
    });
 
    const existing = await repository.findByName(alias);
    if (!existing) {
      return alias;
    }
  }
 
  throw new Error(`Failed to generate unique alias after ${MAX_RETRIES} attempts`);
}