Skip to main content
Retrieve all signals associated with a specific entity by its type and ID.

Signature

async function getEntitySignals(
  entityType: 'session' | 'trace' | 'span' | 'completion',
  entityId: string
): Promise<Signal[]>

Parameters

entityType
'session' | 'trace' | 'span' | 'completion'
required
Type of entity to retrieve signals for.
entityId
string
required
UUID of the entity to retrieve signals for.

Returns

A Promise<Signal[]> that resolves to an array of signals. Returns an empty array if no signals are found or if the entity does not exist.

Type Definitions

interface Signal {
  value: string | boolean | number;
  type: 'boolean' | 'numerical';
}

Examples

Retrieve signals for a trace

import { getEntitySignals } from 'zeroeval';

const signals = await getEntitySignals('trace', traceId);
console.log('Trace signals:', signals);

Retrieve and analyze session signals

import { getEntitySignals } from 'zeroeval';

const signals = await getEntitySignals('session', sessionId);

if (signals.length > 0) {
  console.log(`Found ${signals.length} signals for session`);
  
  // Filter numerical signals
  const numericalSignals = signals.filter(s => s.type === 'numerical');
  console.log('Numerical signals:', numericalSignals);
  
  // Filter boolean signals
  const booleanSignals = signals.filter(s => s.type === 'boolean');
  console.log('Boolean signals:', booleanSignals);
} else {
  console.log('No signals found for session');
}

Retrieve signals for a span

import { getEntitySignals, tracer } from 'zeroeval';

const span = tracer.startSpan('example');

try {
  // Add some signals
  span.addSignal('metric1', 100);
  span.addSignal('metric2', true);
  
  tracer.endSpan(span);
  
  // Flush to ensure signals are sent
  await tracer.flush();
  
  // Retrieve the signals
  const signals = await getEntitySignals('span', span.id);
  console.log('Span signals:', signals);
} catch (error) {
  tracer.endSpan(span);
  throw error;
}

Check for specific signal values

import { getEntitySignals } from 'zeroeval';

const signals = await getEntitySignals('completion', completionId);

// Convert array to object for easier lookup
const signalMap = signals.reduce((acc, signal, index) => {
  acc[`signal_${index}`] = signal;
  return acc;
}, {} as Record<string, Signal>);

console.log('Signal map:', signalMap);

Error Handling

import { getEntitySignals } from 'zeroeval';

try {
  const signals = await getEntitySignals('trace', traceId);
  
  if (signals.length === 0) {
    console.log('No signals found');
  } else {
    // Process signals
    for (const signal of signals) {
      console.log(`Signal: ${signal.value} (${signal.type})`);
    }
  }
} catch (error) {
  console.error('Failed to retrieve signals:', error);
}

Notes

  • Returns an empty array if the entity does not exist or has no signals
  • Returns an empty array if the response is null or invalid
  • The function handles malformed responses gracefully

Build docs developers (and LLMs) love