add ChatContext proto (#1246)

This commit is contained in:
Théo Monnom
2025-10-08 11:35:37 -07:00
committed by GitHub
parent 49a136864c
commit b1e564f85d
3 changed files with 995 additions and 0 deletions
+892
View File
@@ -0,0 +1,892 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.10
// protoc v4.23.4
// source: agent/livekit_agent_session.proto
package agent
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type ChatRole int32
const (
ChatRole_DEVELOPER ChatRole = 0
ChatRole_SYSTEM ChatRole = 1
ChatRole_USER ChatRole = 2
ChatRole_ASSISTANT ChatRole = 3
)
// Enum value maps for ChatRole.
var (
ChatRole_name = map[int32]string{
0: "DEVELOPER",
1: "SYSTEM",
2: "USER",
3: "ASSISTANT",
}
ChatRole_value = map[string]int32{
"DEVELOPER": 0,
"SYSTEM": 1,
"USER": 2,
"ASSISTANT": 3,
}
)
func (x ChatRole) Enum() *ChatRole {
p := new(ChatRole)
*p = x
return p
}
func (x ChatRole) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ChatRole) Descriptor() protoreflect.EnumDescriptor {
return file_agent_livekit_agent_session_proto_enumTypes[0].Descriptor()
}
func (ChatRole) Type() protoreflect.EnumType {
return &file_agent_livekit_agent_session_proto_enumTypes[0]
}
func (x ChatRole) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ChatRole.Descriptor instead.
func (ChatRole) EnumDescriptor() ([]byte, []int) {
return file_agent_livekit_agent_session_proto_rawDescGZIP(), []int{0}
}
type MetricsReport struct {
state protoimpl.MessageState `protogen:"open.v1"`
StartedSpeakingAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=started_speaking_at,json=startedSpeakingAt,proto3" json:"started_speaking_at,omitempty"`
StoppedSpeakingAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=stopped_speaking_at,json=stoppedSpeakingAt,proto3" json:"stopped_speaking_at,omitempty"`
TranscriptionDelay *float64 `protobuf:"fixed64,3,opt,name=transcription_delay,json=transcriptionDelay,proto3,oneof" json:"transcription_delay,omitempty"`
EndOfTurnDelay *float64 `protobuf:"fixed64,4,opt,name=end_of_turn_delay,json=endOfTurnDelay,proto3,oneof" json:"end_of_turn_delay,omitempty"`
OnUserTurnCompletedDelay *float64 `protobuf:"fixed64,5,opt,name=on_user_turn_completed_delay,json=onUserTurnCompletedDelay,proto3,oneof" json:"on_user_turn_completed_delay,omitempty"`
LlmNodeTtft *float64 `protobuf:"fixed64,6,opt,name=llm_node_ttft,json=llmNodeTtft,proto3,oneof" json:"llm_node_ttft,omitempty"`
TtsNodeTtfb *float64 `protobuf:"fixed64,7,opt,name=tts_node_ttfb,json=ttsNodeTtfb,proto3,oneof" json:"tts_node_ttfb,omitempty"`
E2ELatency *float64 `protobuf:"fixed64,8,opt,name=e2e_latency,json=e2eLatency,proto3,oneof" json:"e2e_latency,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *MetricsReport) Reset() {
*x = MetricsReport{}
mi := &file_agent_livekit_agent_session_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *MetricsReport) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MetricsReport) ProtoMessage() {}
func (x *MetricsReport) ProtoReflect() protoreflect.Message {
mi := &file_agent_livekit_agent_session_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MetricsReport.ProtoReflect.Descriptor instead.
func (*MetricsReport) Descriptor() ([]byte, []int) {
return file_agent_livekit_agent_session_proto_rawDescGZIP(), []int{0}
}
func (x *MetricsReport) GetStartedSpeakingAt() *timestamppb.Timestamp {
if x != nil {
return x.StartedSpeakingAt
}
return nil
}
func (x *MetricsReport) GetStoppedSpeakingAt() *timestamppb.Timestamp {
if x != nil {
return x.StoppedSpeakingAt
}
return nil
}
func (x *MetricsReport) GetTranscriptionDelay() float64 {
if x != nil && x.TranscriptionDelay != nil {
return *x.TranscriptionDelay
}
return 0
}
func (x *MetricsReport) GetEndOfTurnDelay() float64 {
if x != nil && x.EndOfTurnDelay != nil {
return *x.EndOfTurnDelay
}
return 0
}
func (x *MetricsReport) GetOnUserTurnCompletedDelay() float64 {
if x != nil && x.OnUserTurnCompletedDelay != nil {
return *x.OnUserTurnCompletedDelay
}
return 0
}
func (x *MetricsReport) GetLlmNodeTtft() float64 {
if x != nil && x.LlmNodeTtft != nil {
return *x.LlmNodeTtft
}
return 0
}
func (x *MetricsReport) GetTtsNodeTtfb() float64 {
if x != nil && x.TtsNodeTtfb != nil {
return *x.TtsNodeTtfb
}
return 0
}
func (x *MetricsReport) GetE2ELatency() float64 {
if x != nil && x.E2ELatency != nil {
return *x.E2ELatency
}
return 0
}
type ChatMessage struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Role ChatRole `protobuf:"varint,2,opt,name=role,proto3,enum=livekit.agent.ChatRole" json:"role,omitempty"`
Content []*ChatMessage_ChatContent `protobuf:"bytes,3,rep,name=content,proto3" json:"content,omitempty"`
Interrupted bool `protobuf:"varint,4,opt,name=interrupted,proto3" json:"interrupted,omitempty"`
TranscriptConfidence *float64 `protobuf:"fixed64,5,opt,name=transcript_confidence,json=transcriptConfidence,proto3,oneof" json:"transcript_confidence,omitempty"`
Extra map[string]string `protobuf:"bytes,6,rep,name=extra,proto3" json:"extra,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
Metrics *MetricsReport `protobuf:"bytes,7,opt,name=metrics,proto3" json:"metrics,omitempty"`
CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ChatMessage) Reset() {
*x = ChatMessage{}
mi := &file_agent_livekit_agent_session_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ChatMessage) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ChatMessage) ProtoMessage() {}
func (x *ChatMessage) ProtoReflect() protoreflect.Message {
mi := &file_agent_livekit_agent_session_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ChatMessage.ProtoReflect.Descriptor instead.
func (*ChatMessage) Descriptor() ([]byte, []int) {
return file_agent_livekit_agent_session_proto_rawDescGZIP(), []int{1}
}
func (x *ChatMessage) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *ChatMessage) GetRole() ChatRole {
if x != nil {
return x.Role
}
return ChatRole_DEVELOPER
}
func (x *ChatMessage) GetContent() []*ChatMessage_ChatContent {
if x != nil {
return x.Content
}
return nil
}
func (x *ChatMessage) GetInterrupted() bool {
if x != nil {
return x.Interrupted
}
return false
}
func (x *ChatMessage) GetTranscriptConfidence() float64 {
if x != nil && x.TranscriptConfidence != nil {
return *x.TranscriptConfidence
}
return 0
}
func (x *ChatMessage) GetExtra() map[string]string {
if x != nil {
return x.Extra
}
return nil
}
func (x *ChatMessage) GetMetrics() *MetricsReport {
if x != nil {
return x.Metrics
}
return nil
}
func (x *ChatMessage) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
return x.CreatedAt
}
return nil
}
type FunctionCall struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
CallId string `protobuf:"bytes,2,opt,name=call_id,json=callId,proto3" json:"call_id,omitempty"`
Arguments string `protobuf:"bytes,3,opt,name=arguments,proto3" json:"arguments,omitempty"`
Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *FunctionCall) Reset() {
*x = FunctionCall{}
mi := &file_agent_livekit_agent_session_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *FunctionCall) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FunctionCall) ProtoMessage() {}
func (x *FunctionCall) ProtoReflect() protoreflect.Message {
mi := &file_agent_livekit_agent_session_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use FunctionCall.ProtoReflect.Descriptor instead.
func (*FunctionCall) Descriptor() ([]byte, []int) {
return file_agent_livekit_agent_session_proto_rawDescGZIP(), []int{2}
}
func (x *FunctionCall) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *FunctionCall) GetCallId() string {
if x != nil {
return x.CallId
}
return ""
}
func (x *FunctionCall) GetArguments() string {
if x != nil {
return x.Arguments
}
return ""
}
func (x *FunctionCall) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *FunctionCall) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
return x.CreatedAt
}
return nil
}
type FunctionCallOutput struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
CallId string `protobuf:"bytes,3,opt,name=call_id,json=callId,proto3" json:"call_id,omitempty"`
Output string `protobuf:"bytes,4,opt,name=output,proto3" json:"output,omitempty"`
IsError bool `protobuf:"varint,5,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *FunctionCallOutput) Reset() {
*x = FunctionCallOutput{}
mi := &file_agent_livekit_agent_session_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *FunctionCallOutput) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FunctionCallOutput) ProtoMessage() {}
func (x *FunctionCallOutput) ProtoReflect() protoreflect.Message {
mi := &file_agent_livekit_agent_session_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use FunctionCallOutput.ProtoReflect.Descriptor instead.
func (*FunctionCallOutput) Descriptor() ([]byte, []int) {
return file_agent_livekit_agent_session_proto_rawDescGZIP(), []int{3}
}
func (x *FunctionCallOutput) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *FunctionCallOutput) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *FunctionCallOutput) GetCallId() string {
if x != nil {
return x.CallId
}
return ""
}
func (x *FunctionCallOutput) GetOutput() string {
if x != nil {
return x.Output
}
return ""
}
func (x *FunctionCallOutput) GetIsError() bool {
if x != nil {
return x.IsError
}
return false
}
func (x *FunctionCallOutput) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
return x.CreatedAt
}
return nil
}
type AgentHandoff struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
OldAgentId *string `protobuf:"bytes,2,opt,name=old_agent_id,json=oldAgentId,proto3,oneof" json:"old_agent_id,omitempty"`
NewAgentId string `protobuf:"bytes,3,opt,name=new_agent_id,json=newAgentId,proto3" json:"new_agent_id,omitempty"`
CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *AgentHandoff) Reset() {
*x = AgentHandoff{}
mi := &file_agent_livekit_agent_session_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AgentHandoff) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AgentHandoff) ProtoMessage() {}
func (x *AgentHandoff) ProtoReflect() protoreflect.Message {
mi := &file_agent_livekit_agent_session_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AgentHandoff.ProtoReflect.Descriptor instead.
func (*AgentHandoff) Descriptor() ([]byte, []int) {
return file_agent_livekit_agent_session_proto_rawDescGZIP(), []int{4}
}
func (x *AgentHandoff) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *AgentHandoff) GetOldAgentId() string {
if x != nil && x.OldAgentId != nil {
return *x.OldAgentId
}
return ""
}
func (x *AgentHandoff) GetNewAgentId() string {
if x != nil {
return x.NewAgentId
}
return ""
}
func (x *AgentHandoff) GetCreatedAt() *timestamppb.Timestamp {
if x != nil {
return x.CreatedAt
}
return nil
}
type ChatContext struct {
state protoimpl.MessageState `protogen:"open.v1"`
Items []*ChatContext_ChatItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ChatContext) Reset() {
*x = ChatContext{}
mi := &file_agent_livekit_agent_session_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ChatContext) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ChatContext) ProtoMessage() {}
func (x *ChatContext) ProtoReflect() protoreflect.Message {
mi := &file_agent_livekit_agent_session_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ChatContext.ProtoReflect.Descriptor instead.
func (*ChatContext) Descriptor() ([]byte, []int) {
return file_agent_livekit_agent_session_proto_rawDescGZIP(), []int{5}
}
func (x *ChatContext) GetItems() []*ChatContext_ChatItem {
if x != nil {
return x.Items
}
return nil
}
type ChatMessage_ChatContent struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Types that are valid to be assigned to Payload:
//
// *ChatMessage_ChatContent_Text
Payload isChatMessage_ChatContent_Payload `protobuf_oneof:"payload"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ChatMessage_ChatContent) Reset() {
*x = ChatMessage_ChatContent{}
mi := &file_agent_livekit_agent_session_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ChatMessage_ChatContent) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ChatMessage_ChatContent) ProtoMessage() {}
func (x *ChatMessage_ChatContent) ProtoReflect() protoreflect.Message {
mi := &file_agent_livekit_agent_session_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ChatMessage_ChatContent.ProtoReflect.Descriptor instead.
func (*ChatMessage_ChatContent) Descriptor() ([]byte, []int) {
return file_agent_livekit_agent_session_proto_rawDescGZIP(), []int{1, 0}
}
func (x *ChatMessage_ChatContent) GetPayload() isChatMessage_ChatContent_Payload {
if x != nil {
return x.Payload
}
return nil
}
func (x *ChatMessage_ChatContent) GetText() string {
if x != nil {
if x, ok := x.Payload.(*ChatMessage_ChatContent_Text); ok {
return x.Text
}
}
return ""
}
type isChatMessage_ChatContent_Payload interface {
isChatMessage_ChatContent_Payload()
}
type ChatMessage_ChatContent_Text struct {
Text string `protobuf:"bytes,1,opt,name=text,proto3,oneof"`
}
func (*ChatMessage_ChatContent_Text) isChatMessage_ChatContent_Payload() {}
type ChatContext_ChatItem struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Types that are valid to be assigned to Item:
//
// *ChatContext_ChatItem_Message
// *ChatContext_ChatItem_FunctionCall
// *ChatContext_ChatItem_FunctionCallOutput
// *ChatContext_ChatItem_AgentHandoff
Item isChatContext_ChatItem_Item `protobuf_oneof:"item"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ChatContext_ChatItem) Reset() {
*x = ChatContext_ChatItem{}
mi := &file_agent_livekit_agent_session_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ChatContext_ChatItem) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ChatContext_ChatItem) ProtoMessage() {}
func (x *ChatContext_ChatItem) ProtoReflect() protoreflect.Message {
mi := &file_agent_livekit_agent_session_proto_msgTypes[8]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ChatContext_ChatItem.ProtoReflect.Descriptor instead.
func (*ChatContext_ChatItem) Descriptor() ([]byte, []int) {
return file_agent_livekit_agent_session_proto_rawDescGZIP(), []int{5, 0}
}
func (x *ChatContext_ChatItem) GetItem() isChatContext_ChatItem_Item {
if x != nil {
return x.Item
}
return nil
}
func (x *ChatContext_ChatItem) GetMessage() *ChatMessage {
if x != nil {
if x, ok := x.Item.(*ChatContext_ChatItem_Message); ok {
return x.Message
}
}
return nil
}
func (x *ChatContext_ChatItem) GetFunctionCall() *FunctionCall {
if x != nil {
if x, ok := x.Item.(*ChatContext_ChatItem_FunctionCall); ok {
return x.FunctionCall
}
}
return nil
}
func (x *ChatContext_ChatItem) GetFunctionCallOutput() *FunctionCallOutput {
if x != nil {
if x, ok := x.Item.(*ChatContext_ChatItem_FunctionCallOutput); ok {
return x.FunctionCallOutput
}
}
return nil
}
func (x *ChatContext_ChatItem) GetAgentHandoff() *AgentHandoff {
if x != nil {
if x, ok := x.Item.(*ChatContext_ChatItem_AgentHandoff); ok {
return x.AgentHandoff
}
}
return nil
}
type isChatContext_ChatItem_Item interface {
isChatContext_ChatItem_Item()
}
type ChatContext_ChatItem_Message struct {
Message *ChatMessage `protobuf:"bytes,1,opt,name=message,proto3,oneof"`
}
type ChatContext_ChatItem_FunctionCall struct {
FunctionCall *FunctionCall `protobuf:"bytes,2,opt,name=function_call,json=functionCall,proto3,oneof"`
}
type ChatContext_ChatItem_FunctionCallOutput struct {
FunctionCallOutput *FunctionCallOutput `protobuf:"bytes,3,opt,name=function_call_output,json=functionCallOutput,proto3,oneof"`
}
type ChatContext_ChatItem_AgentHandoff struct {
AgentHandoff *AgentHandoff `protobuf:"bytes,4,opt,name=agent_handoff,json=agentHandoff,proto3,oneof"`
}
func (*ChatContext_ChatItem_Message) isChatContext_ChatItem_Item() {}
func (*ChatContext_ChatItem_FunctionCall) isChatContext_ChatItem_Item() {}
func (*ChatContext_ChatItem_FunctionCallOutput) isChatContext_ChatItem_Item() {}
func (*ChatContext_ChatItem_AgentHandoff) isChatContext_ChatItem_Item() {}
var File_agent_livekit_agent_session_proto protoreflect.FileDescriptor
const file_agent_livekit_agent_session_proto_rawDesc = "" +
"\n" +
"!agent/livekit_agent_session.proto\x12\rlivekit.agent\x1a\x1fgoogle/protobuf/timestamp.proto\"\xcd\x04\n" +
"\rMetricsReport\x12J\n" +
"\x13started_speaking_at\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\x11startedSpeakingAt\x12J\n" +
"\x13stopped_speaking_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x11stoppedSpeakingAt\x124\n" +
"\x13transcription_delay\x18\x03 \x01(\x01H\x00R\x12transcriptionDelay\x88\x01\x01\x12.\n" +
"\x11end_of_turn_delay\x18\x04 \x01(\x01H\x01R\x0eendOfTurnDelay\x88\x01\x01\x12C\n" +
"\x1con_user_turn_completed_delay\x18\x05 \x01(\x01H\x02R\x18onUserTurnCompletedDelay\x88\x01\x01\x12'\n" +
"\rllm_node_ttft\x18\x06 \x01(\x01H\x03R\vllmNodeTtft\x88\x01\x01\x12'\n" +
"\rtts_node_ttfb\x18\a \x01(\x01H\x04R\vttsNodeTtfb\x88\x01\x01\x12$\n" +
"\ve2e_latency\x18\b \x01(\x01H\x05R\n" +
"e2eLatency\x88\x01\x01B\x16\n" +
"\x14_transcription_delayB\x14\n" +
"\x12_end_of_turn_delayB\x1f\n" +
"\x1d_on_user_turn_completed_delayB\x10\n" +
"\x0e_llm_node_ttftB\x10\n" +
"\x0e_tts_node_ttfbB\x0e\n" +
"\f_e2e_latency\"\x9c\x04\n" +
"\vChatMessage\x12\x0e\n" +
"\x02id\x18\x01 \x01(\tR\x02id\x12+\n" +
"\x04role\x18\x02 \x01(\x0e2\x17.livekit.agent.ChatRoleR\x04role\x12@\n" +
"\acontent\x18\x03 \x03(\v2&.livekit.agent.ChatMessage.ChatContentR\acontent\x12 \n" +
"\vinterrupted\x18\x04 \x01(\bR\vinterrupted\x128\n" +
"\x15transcript_confidence\x18\x05 \x01(\x01H\x00R\x14transcriptConfidence\x88\x01\x01\x12;\n" +
"\x05extra\x18\x06 \x03(\v2%.livekit.agent.ChatMessage.ExtraEntryR\x05extra\x126\n" +
"\ametrics\x18\a \x01(\v2\x1c.livekit.agent.MetricsReportR\ametrics\x129\n" +
"\n" +
"created_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x1a.\n" +
"\vChatContent\x12\x14\n" +
"\x04text\x18\x01 \x01(\tH\x00R\x04textB\t\n" +
"\apayload\x1a8\n" +
"\n" +
"ExtraEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x18\n" +
"\x16_transcript_confidence\"\xa4\x01\n" +
"\fFunctionCall\x12\x0e\n" +
"\x02id\x18\x01 \x01(\tR\x02id\x12\x17\n" +
"\acall_id\x18\x02 \x01(\tR\x06callId\x12\x1c\n" +
"\targuments\x18\x03 \x01(\tR\targuments\x12\x12\n" +
"\x04name\x18\x04 \x01(\tR\x04name\x129\n" +
"\n" +
"created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"\xbf\x01\n" +
"\x12FunctionCallOutput\x12\x0e\n" +
"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
"\x04name\x18\x02 \x01(\tR\x04name\x12\x17\n" +
"\acall_id\x18\x03 \x01(\tR\x06callId\x12\x16\n" +
"\x06output\x18\x04 \x01(\tR\x06output\x12\x19\n" +
"\bis_error\x18\x05 \x01(\bR\aisError\x129\n" +
"\n" +
"created_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"\xb3\x01\n" +
"\fAgentHandoff\x12\x0e\n" +
"\x02id\x18\x01 \x01(\tR\x02id\x12%\n" +
"\fold_agent_id\x18\x02 \x01(\tH\x00R\n" +
"oldAgentId\x88\x01\x01\x12 \n" +
"\fnew_agent_id\x18\x03 \x01(\tR\n" +
"newAgentId\x129\n" +
"\n" +
"created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAtB\x0f\n" +
"\r_old_agent_id\"\xf4\x02\n" +
"\vChatContext\x129\n" +
"\x05items\x18\x01 \x03(\v2#.livekit.agent.ChatContext.ChatItemR\x05items\x1a\xa9\x02\n" +
"\bChatItem\x126\n" +
"\amessage\x18\x01 \x01(\v2\x1a.livekit.agent.ChatMessageH\x00R\amessage\x12B\n" +
"\rfunction_call\x18\x02 \x01(\v2\x1b.livekit.agent.FunctionCallH\x00R\ffunctionCall\x12U\n" +
"\x14function_call_output\x18\x03 \x01(\v2!.livekit.agent.FunctionCallOutputH\x00R\x12functionCallOutput\x12B\n" +
"\ragent_handoff\x18\x04 \x01(\v2\x1b.livekit.agent.AgentHandoffH\x00R\fagentHandoffB\x06\n" +
"\x04item*>\n" +
"\bChatRole\x12\r\n" +
"\tDEVELOPER\x10\x00\x12\n" +
"\n" +
"\x06SYSTEM\x10\x01\x12\b\n" +
"\x04USER\x10\x02\x12\r\n" +
"\tASSISTANT\x10\x03B+Z)github.com/livekit/protocol/livekit/agentb\x06proto3"
var (
file_agent_livekit_agent_session_proto_rawDescOnce sync.Once
file_agent_livekit_agent_session_proto_rawDescData []byte
)
func file_agent_livekit_agent_session_proto_rawDescGZIP() []byte {
file_agent_livekit_agent_session_proto_rawDescOnce.Do(func() {
file_agent_livekit_agent_session_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_agent_livekit_agent_session_proto_rawDesc), len(file_agent_livekit_agent_session_proto_rawDesc)))
})
return file_agent_livekit_agent_session_proto_rawDescData
}
var file_agent_livekit_agent_session_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_agent_livekit_agent_session_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_agent_livekit_agent_session_proto_goTypes = []any{
(ChatRole)(0), // 0: livekit.agent.ChatRole
(*MetricsReport)(nil), // 1: livekit.agent.MetricsReport
(*ChatMessage)(nil), // 2: livekit.agent.ChatMessage
(*FunctionCall)(nil), // 3: livekit.agent.FunctionCall
(*FunctionCallOutput)(nil), // 4: livekit.agent.FunctionCallOutput
(*AgentHandoff)(nil), // 5: livekit.agent.AgentHandoff
(*ChatContext)(nil), // 6: livekit.agent.ChatContext
(*ChatMessage_ChatContent)(nil), // 7: livekit.agent.ChatMessage.ChatContent
nil, // 8: livekit.agent.ChatMessage.ExtraEntry
(*ChatContext_ChatItem)(nil), // 9: livekit.agent.ChatContext.ChatItem
(*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp
}
var file_agent_livekit_agent_session_proto_depIdxs = []int32{
10, // 0: livekit.agent.MetricsReport.started_speaking_at:type_name -> google.protobuf.Timestamp
10, // 1: livekit.agent.MetricsReport.stopped_speaking_at:type_name -> google.protobuf.Timestamp
0, // 2: livekit.agent.ChatMessage.role:type_name -> livekit.agent.ChatRole
7, // 3: livekit.agent.ChatMessage.content:type_name -> livekit.agent.ChatMessage.ChatContent
8, // 4: livekit.agent.ChatMessage.extra:type_name -> livekit.agent.ChatMessage.ExtraEntry
1, // 5: livekit.agent.ChatMessage.metrics:type_name -> livekit.agent.MetricsReport
10, // 6: livekit.agent.ChatMessage.created_at:type_name -> google.protobuf.Timestamp
10, // 7: livekit.agent.FunctionCall.created_at:type_name -> google.protobuf.Timestamp
10, // 8: livekit.agent.FunctionCallOutput.created_at:type_name -> google.protobuf.Timestamp
10, // 9: livekit.agent.AgentHandoff.created_at:type_name -> google.protobuf.Timestamp
9, // 10: livekit.agent.ChatContext.items:type_name -> livekit.agent.ChatContext.ChatItem
2, // 11: livekit.agent.ChatContext.ChatItem.message:type_name -> livekit.agent.ChatMessage
3, // 12: livekit.agent.ChatContext.ChatItem.function_call:type_name -> livekit.agent.FunctionCall
4, // 13: livekit.agent.ChatContext.ChatItem.function_call_output:type_name -> livekit.agent.FunctionCallOutput
5, // 14: livekit.agent.ChatContext.ChatItem.agent_handoff:type_name -> livekit.agent.AgentHandoff
15, // [15:15] is the sub-list for method output_type
15, // [15:15] is the sub-list for method input_type
15, // [15:15] is the sub-list for extension type_name
15, // [15:15] is the sub-list for extension extendee
0, // [0:15] is the sub-list for field type_name
}
func init() { file_agent_livekit_agent_session_proto_init() }
func file_agent_livekit_agent_session_proto_init() {
if File_agent_livekit_agent_session_proto != nil {
return
}
file_agent_livekit_agent_session_proto_msgTypes[0].OneofWrappers = []any{}
file_agent_livekit_agent_session_proto_msgTypes[1].OneofWrappers = []any{}
file_agent_livekit_agent_session_proto_msgTypes[4].OneofWrappers = []any{}
file_agent_livekit_agent_session_proto_msgTypes[6].OneofWrappers = []any{
(*ChatMessage_ChatContent_Text)(nil),
}
file_agent_livekit_agent_session_proto_msgTypes[8].OneofWrappers = []any{
(*ChatContext_ChatItem_Message)(nil),
(*ChatContext_ChatItem_FunctionCall)(nil),
(*ChatContext_ChatItem_FunctionCallOutput)(nil),
(*ChatContext_ChatItem_AgentHandoff)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_agent_livekit_agent_session_proto_rawDesc), len(file_agent_livekit_agent_session_proto_rawDesc)),
NumEnums: 1,
NumMessages: 9,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_agent_livekit_agent_session_proto_goTypes,
DependencyIndexes: file_agent_livekit_agent_session_proto_depIdxs,
EnumInfos: file_agent_livekit_agent_session_proto_enumTypes,
MessageInfos: file_agent_livekit_agent_session_proto_msgTypes,
}.Build()
File_agent_livekit_agent_session_proto = out.File
file_agent_livekit_agent_session_proto_goTypes = nil
file_agent_livekit_agent_session_proto_depIdxs = nil
}
+22
View File
@@ -51,6 +51,11 @@ func Proto() error {
"livekit_cloud_agent.proto",
"livekit_phone_number.proto",
}
agentProtoFiles := []string{
"agent/livekit_agent_session.proto",
}
protoFiles := []string{
"livekit_agent.proto",
"livekit_analytics.proto",
@@ -148,6 +153,23 @@ func Proto() error {
if err := cmd.Run(); err != nil {
return err
}
fmt.Println("generating protobuf (livekit/agent)")
{
args := []string{
"--go_out", target,
"--go_opt=paths=source_relative",
"--plugin=go=" + protocGoPath,
"-I=./protobufs",
}
args = append(args, agentProtoFiles...)
cmd := exec.Command(protoc, args...)
connectStd(cmd)
if err := cmd.Run(); err != nil {
return err
}
}
fmt.Println("generating grpc protobuf")
args = append([]string{
"--go_out", ".",
@@ -0,0 +1,81 @@
syntax = "proto3";
package livekit.agent;
option go_package = "github.com/livekit/protocol/livekit/agent";
import "google/protobuf/timestamp.proto";
enum ChatRole {
DEVELOPER = 0;
SYSTEM = 1;
USER = 2;
ASSISTANT = 3;
}
message MetricsReport {
google.protobuf.Timestamp started_speaking_at = 1;
google.protobuf.Timestamp stopped_speaking_at = 2;
optional double transcription_delay = 3;
optional double end_of_turn_delay = 4;
optional double on_user_turn_completed_delay = 5;
optional double llm_node_ttft = 6;
optional double tts_node_ttfb = 7;
optional double e2e_latency = 8;
}
message ChatMessage {
message ChatContent {
oneof payload {
string text = 1;
}
}
string id = 1;
ChatRole role = 2;
repeated ChatContent content = 3;
bool interrupted = 4;
optional double transcript_confidence = 5;
map<string, string> extra = 6;
MetricsReport metrics = 7;
google.protobuf.Timestamp created_at = 8;
}
message FunctionCall {
string id = 1;
string call_id = 2;
string arguments = 3;
string name = 4;
google.protobuf.Timestamp created_at = 5;
}
message FunctionCallOutput {
string id = 1;
string name = 2;
string call_id = 3;
string output = 4;
bool is_error = 5;
google.protobuf.Timestamp created_at = 6;
}
message AgentHandoff {
string id = 1;
optional string old_agent_id = 2;
string new_agent_id = 3;
google.protobuf.Timestamp created_at = 4;
}
message ChatContext {
message ChatItem {
oneof item {
ChatMessage message = 1;
FunctionCall function_call = 2;
FunctionCallOutput function_call_output = 3;
AgentHandoff agent_handoff = 4;
}
}
repeated ChatItem items = 1;
}