Skip to main content

Handoff

Handoff enables seamless transfer of conversation context between agents.

Quick Start

import { Handoff, handoff, Agent } from 'praisonai';

const specialistAgent = new Agent({
  name: 'Specialist',
  instructions: 'You are a technical specialist.'
});

const myHandoff = handoff({
  target: specialistAgent,
  condition: (ctx) => ctx.input.includes('technical')
});

const mainAgent = new Agent({
  name: 'Main',
  instructions: 'You are a helpful assistant.',
  handoffs: [myHandoff]
});

Configuration

interface HandoffConfig {
  target: Agent;
  condition: (ctx: HandoffContext) => boolean;
  onHandoff?: (ctx: HandoffContext) => void;
}

interface HandoffContext {
  input: string;
  history: Message[];
  metadata?: Record<string, any>;
}

Handoff Filters

import { handoffFilters } from 'praisonai';

// Built-in filters
const technicalHandoff = handoff({
  target: techAgent,
  condition: handoffFilters.containsKeywords(['code', 'debug', 'error'])
});

const urgentHandoff = handoff({
  target: urgentAgent,
  condition: handoffFilters.matchesPattern(/urgent|asap|emergency/i)
});

Example

import { Agent, handoff } from 'praisonai';

// Create specialized agents
const codeAgent = new Agent({
  name: 'CodeExpert',
  instructions: 'You are a coding expert.'
});

const supportAgent = new Agent({
  name: 'Support',
  instructions: 'You handle customer support.'
});

// Create main agent with handoffs
const mainAgent = new Agent({
  name: 'Assistant',
  instructions: 'You are a helpful assistant.',
  handoffs: [
    handoff({
      target: codeAgent,
      condition: (ctx) => /code|programming|debug/i.test(ctx.input),
      onHandoff: (ctx) => console.log('Handing off to code expert...')
    }),
    handoff({
      target: supportAgent,
      condition: (ctx) => /help|support|issue/i.test(ctx.input)
    })
  ]
});

CLI Usage

praisonai-ts handoff info
The CLI provides information about the handoff feature. Full handoff functionality requires SDK usage.