Versions in this module Expand all Collapse all v0 v0.1.0 Aug 30, 2026 Changes in this version + const BuiltinHoldMusic + const CallerHangupInstruction + const DefaultCallerHangupCleanupTimeout + const DefaultCallerHangupNoticeTimeout + const DefaultTaskGroupMaxExecutions + const DefaultWarmTransferCleanupTimeout + const DefaultWarmTransferDialDrainTimeout + const DefaultWarmTransferMergeTimeout + const HumanAgentIdentity + const WarmTransferInstructionsTemplate + const WarmTransferPersona + var ErrTaskGroupAlreadyStarted = errors.New("workflows: task group has already started") + var ErrTaskGroupExecutionLimit = errors.New("workflows: task group execution limit exceeded") + var ErrTaskGroupNotComplete = errors.New("workflows: task group is not complete") + var ErrTaskGroupSummarizerNeeded = errors.New("workflows: summarizeChatCtx requires a standard LLM or summarizer") + var ErrWarmTransferAlreadyDone = errors.New("workflows: warm transfer is already complete") + var ErrWarmTransferAlreadyStarted = errors.New("workflows: warm transfer has already started") + var ErrWarmTransferCallerGone = errors.New("workflows: caller hung up before the transfer completed") + var ErrWarmTransferDeclined = errors.New("workflows: human agent declined to connect") + var ErrWarmTransferNotReady = errors.New("workflows: warm transfer is not ready to merge") + var ErrWarmTransferNotStarted = errors.New("workflows: warm transfer has not started") + var ErrWarmTransferRoomClosed = errors.New("workflows: human agent room closed") + var ErrWarmTransferVoicemail = errors.New("workflows: voicemail detected") + func CreateCallerHangupSpeech(ctx context.Context, session WarmTransferSession, speech WarmTransferSpeech, ...) (*voice.SpeechHandle, error) + func CreateWarmTransferSpeech(ctx context.Context, session WarmTransferSession, speech WarmTransferSpeech, ...) (*voice.SpeechHandle, error) + func FormatWarmTransferConversation(chat *llm.ChatContext) string + func ResolveHumanAgentRoomName(callerRoomName string, override *string) (string, error) + func ResolveWarmTransferInstructions(config WarmTransferInstructionConfig, chat *llm.ChatContext) string + func SummarizeChatContext(ctx context.Context, model llm.LLM, chat *llm.ChatContext) (*llm.ChatContext, error) + type AgentTaskAdapter struct + func AdaptAgentTask[Result, UserData any](task *voice.AgentTask[Result, UserData], runner TaskRunner[Result, UserData]) (*AgentTaskAdapter[Result, UserData], error) + func (a *AgentTaskAdapter[Result, UserData]) AgentTask() *voice.AgentTask[Result, UserData] + func (a *AgentTaskAdapter[Result, UserData]) ChatContext() *llm.ChatContext + func (a *AgentTaskAdapter[Result, UserData]) Run(ctx context.Context) (any, error) + func (a *AgentTaskAdapter[Result, UserData]) ToolContext() *llm.Context + func (a *AgentTaskAdapter[Result, UserData]) UpdateChatContext(ctx context.Context, chat *llm.ChatContext) error + func (a *AgentTaskAdapter[Result, UserData]) UpdateTools(ctx context.Context, tools *llm.Context) error + type ChatSummarizer interface + SummarizeChatContext func(context.Context, *llm.ChatContext) (*llm.ChatContext, error) + type ChatSummarizerFunc func(context.Context, *llm.ChatContext) (*llm.ChatContext, error) + func (f ChatSummarizerFunc) SummarizeChatContext(ctx context.Context, chat *llm.ChatContext) (*llm.ChatContext, error) + type InstructionPart struct + func InstructionPartPtr(value InstructionPart) *InstructionPart + func ModalInstruction(value llm.Instructions) InstructionPart + func TextInstruction(value string) InstructionPart + func (p InstructionPart) Instructions() llm.Instructions + func (p InstructionPart) Value() string + type InstructionParts struct + Extra *InstructionPart + Persona *InstructionPart + type Task interface + ChatContext func() *llm.ChatContext + Run func(context.Context) (any, error) + ToolContext func() *llm.Context + UpdateChatContext func(context.Context, *llm.ChatContext) error + UpdateTools func(context.Context, *llm.Context) error + type TaskCompletedEvent struct + AgentTask Task + Result any + TaskID string + type TaskFactory func() Task + type TaskGroup struct + func MustTaskGroup(options TaskGroupOptions) *TaskGroup + func NewTaskGroup(options TaskGroupOptions) (*TaskGroup, error) + func (g *TaskGroup) Add(factory TaskFactory, registration TaskRegistration) *TaskGroup + func (g *TaskGroup) AddTask(factory TaskFactory, registration TaskRegistration) error + func (g *TaskGroup) ChatContext() *llm.ChatContext + func (g *TaskGroup) Done() bool + func (g *TaskGroup) PreserveFunctionCallHistory() bool + func (g *TaskGroup) Result() (TaskGroupResult, error) + func (g *TaskGroup) Run(ctx context.Context) (TaskGroupResult, error) + type TaskGroupOptions struct + ChatCtx *llm.ChatContext + LLM llm.LLM + MaxExecutions int + OnTaskCompleted func(context.Context, TaskCompletedEvent) error + PreserveFunctionCallHistory bool + ReturnExceptions bool + SummarizeChatCtx *bool + Summarizer ChatSummarizer + type TaskGroupResult struct + TaskResults map[string]any + type TaskRegistration struct + Description string + ID string + type TaskRunner func(context.Context, *voice.AgentTask[Result, UserData]) (Result, error) + type WarmTransferBackend interface + CallerDisconnected func() <-chan WarmTransferParticipantEvent + CallerLocalIdentity func(context.Context) (string, error) + CallerPresent func(context.Context) (bool, error) + CallerRoomName func(context.Context) (string, error) + CaptureCallerIO func(context.Context) (WarmTransferIOState, error) + DeleteRoom func(context.Context, string) error + Dial func(context.Context, WarmTransferDialRequest) (WarmTransferConsultation, error) + MoveParticipant func(context.Context, string, string, string) error + RemoveParticipant func(context.Context, string, string) error + SetCallerIO func(context.Context, WarmTransferIOState) error + StartHold func(context.Context, WarmTransferHoldAudio) (WarmTransferHold, error) + type WarmTransferBackendFuncs struct + CallerDisconnectedChan <-chan WarmTransferParticipantEvent + CallerLocalIdentityFunc func(context.Context) (string, error) + CallerPresentFunc func(context.Context) (bool, error) + CallerRoomNameFunc func(context.Context) (string, error) + CaptureCallerIOFunc func(context.Context) (WarmTransferIOState, error) + DeleteRoomFunc func(context.Context, string) error + DialFunc func(context.Context, WarmTransferDialRequest) (WarmTransferConsultation, error) + MoveParticipantFunc func(context.Context, string, string, string) error + PostMergeCleanupFunc func(context.Context, string) error + RemoveParticipantFunc func(context.Context, string, string) error + SetCallerIOFunc func(context.Context, WarmTransferIOState) error + StartHoldFunc func(context.Context, WarmTransferHoldAudio) (WarmTransferHold, error) + func (b WarmTransferBackendFuncs) CallerDisconnected() <-chan WarmTransferParticipantEvent + func (b WarmTransferBackendFuncs) CallerLocalIdentity(ctx context.Context) (string, error) + func (b WarmTransferBackendFuncs) CallerPresent(ctx context.Context) (bool, error) + func (b WarmTransferBackendFuncs) CallerRoomName(ctx context.Context) (string, error) + func (b WarmTransferBackendFuncs) CaptureCallerIO(ctx context.Context) (WarmTransferIOState, error) + func (b WarmTransferBackendFuncs) DeleteCallerRoomOnDisconnect(ctx context.Context, room string) error + func (b WarmTransferBackendFuncs) DeleteRoom(ctx context.Context, room string) error + func (b WarmTransferBackendFuncs) Dial(ctx context.Context, request WarmTransferDialRequest) (WarmTransferConsultation, error) + func (b WarmTransferBackendFuncs) MoveParticipant(ctx context.Context, from, identity, to string) error + func (b WarmTransferBackendFuncs) RemoveParticipant(ctx context.Context, room, identity string) error + func (b WarmTransferBackendFuncs) SetCallerIO(ctx context.Context, state WarmTransferIOState) error + func (b WarmTransferBackendFuncs) StartHold(ctx context.Context, audio WarmTransferHoldAudio) (WarmTransferHold, error) + type WarmTransferConsultation interface + Close func(context.Context) error + Disconnected func() <-chan error + RoomName func() string + Session func() WarmTransferSession + type WarmTransferDialRequest struct + AllowInterruptions *bool + CallerIdentity string + CallerRoomName string + ChatContext *llm.ChatContext + DTMF *string + HumanIdentity string + HumanRoomName string + Instructions llm.Instructions + LLM agents.Override[llm.LLM] + RingingTimeout *time.Duration + SIPCallTo string + SIPConnection *livekit.SIPOutboundConfig + SIPHeaders map[string]string + SIPNumber string + SIPTrunkID string + STT agents.Override[stt.STT] + TTS agents.Override[tts.TTS] + Tools *llm.Context + TurnHandling *voice.TurnHandlingOptions + VAD agents.Override[vad.VAD] + func (r WarmTransferDialRequest) Clone() WarmTransferDialRequest + type WarmTransferHold interface + Stop func(context.Context) error + type WarmTransferHoldAudio struct + Source string + Volume float64 + type WarmTransferIOState struct + AudioInput bool + AudioOutput bool + TranscriptionOutput bool + type WarmTransferInstructionConfig struct + Full *string + Parts *InstructionParts + func FullWarmTransferInstructions(value string) WarmTransferInstructionConfig + func PartialWarmTransferInstructions(value InstructionParts) WarmTransferInstructionConfig + type WarmTransferParticipantEvent struct + Identity string + Kind livekit.ParticipantInfo_Kind + type WarmTransferPostMergeBackend interface + DeleteCallerRoomOnDisconnect func(context.Context, string) error + type WarmTransferResult struct + HumanAgentIdentity string + type WarmTransferSession interface + Close func(context.Context, ...voice.CloseOptions) error + GenerateReply func(context.Context, voice.GenerateReplyOptions) (*voice.SpeechHandle, error) + Interrupt func(context.Context, bool) error + Say func(context.Context, string, voice.SayOptions) (*voice.SpeechHandle, error) + type WarmTransferSpeech struct + Start func(context.Context, WarmTransferSession) (*voice.SpeechHandle, error) + Text *string + func SpeechFunc(start func(context.Context, WarmTransferSession) (*voice.SpeechHandle, error)) WarmTransferSpeech + func TextSpeech(text string) WarmTransferSpeech + type WarmTransferTask struct + func CreateWarmTransferTask[UserData any](options WarmTransferTaskOptions[UserData]) (*WarmTransferTask[UserData], error) + func MustWarmTransferTask[UserData any](options WarmTransferTaskOptions[UserData]) *WarmTransferTask[UserData] + func NewWarmTransferTask[UserData any](options WarmTransferTaskOptions[UserData]) (*WarmTransferTask[UserData], error) + func (t *WarmTransferTask[UserData]) Instructions() llm.Instructions + func (t *WarmTransferTask[UserData]) Run(ctx context.Context) (result WarmTransferResult, runErr error) + func (t *WarmTransferTask[UserData]) ToolContext() *llm.Context + func (t *WarmTransferTask[UserData]) VoiceTask() *voice.AgentTask[WarmTransferResult, UserData] + func (t *WarmTransferTask[UserData]) WaitReady(ctx context.Context) error + type WarmTransferTaskOptions struct + AbortContext context.Context + AllowInterruptions *bool + Backend WarmTransferBackend + CallerHangupCleanupTimeout time.Duration + CallerHangupInstruction *string + CallerHangupNoticeTimeout time.Duration + CallerHangupSpeech WarmTransferSpeech + ChatCtx *llm.ChatContext + CleanupTimeout time.Duration + DTMF *string + DialDrainTimeout time.Duration + GreetingSpeech WarmTransferSpeech + HoldAudio agents.Override[WarmTransferHoldAudio] + Instructions WarmTransferInstructionConfig + LLM agents.Override[llm.LLM] + MergeTimeout time.Duration + OnError func(error) + RingingTimeout *time.Duration + RoomName *string + SIPCallTo string + SIPConnection *livekit.SIPOutboundConfig + SIPHeaders map[string]string + SIPNumber string + SIPTrunkID agents.Override[string] + STT agents.Override[stt.STT] + TTS agents.Override[tts.TTS] + Tools *llm.Context + TurnHandling *voice.TurnHandlingOptions + VAD agents.Override[vad.VAD]