# 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`);
    }