Skip to content

Commit 133cef0

Browse files
committed
fix(react-sdk): close WebRTC transport on server disconnect
1 parent b137167 commit 133cef0

20 files changed

Lines changed: 3076 additions & 1967 deletions

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@rapidaai/react",
3-
"version": "1.1.78",
3+
"version": "1.1.79",
44
"description": "An easy to use react client for building generative ai application using Rapida platform.",
55
"repository": {
66
"type": "git",

src/agents/voice-agent.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,19 @@ export class VoiceAgent extends Agent {
117117
// console.log(`${LOG_PREFIX} callback -> onDisconnected`);
118118
this.switchToTextModeOnDisconnect();
119119
},
120+
onConversationDisconnected: async () => {
121+
const activeTransport = this.webrtcTransport;
122+
this.webrtcTransport = null;
123+
if (activeTransport) {
124+
await activeTransport.close();
125+
}
126+
await this.disconnectAgent();
127+
if (this.connectionState !== ConnectionState.Disconnected) {
128+
this.connectionState = ConnectionState.Disconnected;
129+
this.emit(AgentEvent.ConnectionStateEvent, ConnectionState.Disconnected);
130+
}
131+
this.switchToTextModeOnDisconnect();
132+
},
120133
onError: (error) => {
121134
// console.log(`${LOG_PREFIX} callback -> onError`, error);
122135
this.emit(AgentEvent.ErrorEvent, "client", error.message || String(error));

src/audio/message-protocol-handler.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,8 @@ export class MessageProtocolHandler {
130130

131131
// Disconnection (server requests disconnect)
132132
if (response.hasDisconnection()) {
133+
const disconnection = response.getDisconnection();
134+
await this.callbacks.onConversationDisconnected?.(disconnection?.toObject());
133135
this.callbacks.onDisconnected?.();
134136
}
135137

src/clients/protos/artifacts

src/clients/protos/assistant-api_pb.d.ts

Lines changed: 0 additions & 212 deletions
Original file line numberDiff line numberDiff line change
@@ -383,218 +383,6 @@ export namespace GetAllAssistantRequest {
383383
}
384384
}
385385

386-
export class GetAllAssistantTelemetryRequest extends jspb.Message {
387-
hasPaginate(): boolean;
388-
clearPaginate(): void;
389-
getPaginate(): common_pb.Paginate | undefined;
390-
setPaginate(value?: common_pb.Paginate): void;
391-
392-
clearCriteriasList(): void;
393-
getCriteriasList(): Array<common_pb.Criteria>;
394-
setCriteriasList(value: Array<common_pb.Criteria>): void;
395-
addCriterias(value?: common_pb.Criteria, index?: number): common_pb.Criteria;
396-
397-
hasAssistant(): boolean;
398-
clearAssistant(): void;
399-
getAssistant(): common_pb.AssistantDefinition | undefined;
400-
setAssistant(value?: common_pb.AssistantDefinition): void;
401-
402-
serializeBinary(): Uint8Array;
403-
toObject(includeInstance?: boolean): GetAllAssistantTelemetryRequest.AsObject;
404-
static toObject(includeInstance: boolean, msg: GetAllAssistantTelemetryRequest): GetAllAssistantTelemetryRequest.AsObject;
405-
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
406-
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
407-
static serializeBinaryToWriter(message: GetAllAssistantTelemetryRequest, writer: jspb.BinaryWriter): void;
408-
static deserializeBinary(bytes: Uint8Array): GetAllAssistantTelemetryRequest;
409-
static deserializeBinaryFromReader(message: GetAllAssistantTelemetryRequest, reader: jspb.BinaryReader): GetAllAssistantTelemetryRequest;
410-
}
411-
412-
export namespace GetAllAssistantTelemetryRequest {
413-
export type AsObject = {
414-
paginate?: common_pb.Paginate.AsObject,
415-
criteriasList: Array<common_pb.Criteria.AsObject>,
416-
assistant?: common_pb.AssistantDefinition.AsObject,
417-
}
418-
}
419-
420-
export class TelemetryEvent extends jspb.Message {
421-
getMessageid(): string;
422-
setMessageid(value: string): void;
423-
424-
getAssistantid(): string;
425-
setAssistantid(value: string): void;
426-
427-
getAssistantconversationid(): string;
428-
setAssistantconversationid(value: string): void;
429-
430-
getProjectid(): string;
431-
setProjectid(value: string): void;
432-
433-
getOrganizationid(): string;
434-
setOrganizationid(value: string): void;
435-
436-
getName(): string;
437-
setName(value: string): void;
438-
439-
getDataMap(): jspb.Map<string, string>;
440-
clearDataMap(): void;
441-
hasTime(): boolean;
442-
clearTime(): void;
443-
getTime(): google_protobuf_timestamp_pb.Timestamp | undefined;
444-
setTime(value?: google_protobuf_timestamp_pb.Timestamp): void;
445-
446-
serializeBinary(): Uint8Array;
447-
toObject(includeInstance?: boolean): TelemetryEvent.AsObject;
448-
static toObject(includeInstance: boolean, msg: TelemetryEvent): TelemetryEvent.AsObject;
449-
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
450-
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
451-
static serializeBinaryToWriter(message: TelemetryEvent, writer: jspb.BinaryWriter): void;
452-
static deserializeBinary(bytes: Uint8Array): TelemetryEvent;
453-
static deserializeBinaryFromReader(message: TelemetryEvent, reader: jspb.BinaryReader): TelemetryEvent;
454-
}
455-
456-
export namespace TelemetryEvent {
457-
export type AsObject = {
458-
messageid: string,
459-
assistantid: string,
460-
assistantconversationid: string,
461-
projectid: string,
462-
organizationid: string,
463-
name: string,
464-
dataMap: Array<[string, string]>,
465-
time?: google_protobuf_timestamp_pb.Timestamp.AsObject,
466-
}
467-
}
468-
469-
export class TelemetryMetric extends jspb.Message {
470-
getContextid(): string;
471-
setContextid(value: string): void;
472-
473-
getAssistantid(): string;
474-
setAssistantid(value: string): void;
475-
476-
getAssistantconversationid(): string;
477-
setAssistantconversationid(value: string): void;
478-
479-
getProjectid(): string;
480-
setProjectid(value: string): void;
481-
482-
getOrganizationid(): string;
483-
setOrganizationid(value: string): void;
484-
485-
getScope(): string;
486-
setScope(value: string): void;
487-
488-
clearMetricsList(): void;
489-
getMetricsList(): Array<common_pb.Metric>;
490-
setMetricsList(value: Array<common_pb.Metric>): void;
491-
addMetrics(value?: common_pb.Metric, index?: number): common_pb.Metric;
492-
493-
hasTime(): boolean;
494-
clearTime(): void;
495-
getTime(): google_protobuf_timestamp_pb.Timestamp | undefined;
496-
setTime(value?: google_protobuf_timestamp_pb.Timestamp): void;
497-
498-
serializeBinary(): Uint8Array;
499-
toObject(includeInstance?: boolean): TelemetryMetric.AsObject;
500-
static toObject(includeInstance: boolean, msg: TelemetryMetric): TelemetryMetric.AsObject;
501-
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
502-
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
503-
static serializeBinaryToWriter(message: TelemetryMetric, writer: jspb.BinaryWriter): void;
504-
static deserializeBinary(bytes: Uint8Array): TelemetryMetric;
505-
static deserializeBinaryFromReader(message: TelemetryMetric, reader: jspb.BinaryReader): TelemetryMetric;
506-
}
507-
508-
export namespace TelemetryMetric {
509-
export type AsObject = {
510-
contextid: string,
511-
assistantid: string,
512-
assistantconversationid: string,
513-
projectid: string,
514-
organizationid: string,
515-
scope: string,
516-
metricsList: Array<common_pb.Metric.AsObject>,
517-
time?: google_protobuf_timestamp_pb.Timestamp.AsObject,
518-
}
519-
}
520-
521-
export class TelemetryRecord extends jspb.Message {
522-
hasEvent(): boolean;
523-
clearEvent(): void;
524-
getEvent(): TelemetryEvent | undefined;
525-
setEvent(value?: TelemetryEvent): void;
526-
527-
hasMetric(): boolean;
528-
clearMetric(): void;
529-
getMetric(): TelemetryMetric | undefined;
530-
setMetric(value?: TelemetryMetric): void;
531-
532-
getRecordCase(): TelemetryRecord.RecordCase;
533-
serializeBinary(): Uint8Array;
534-
toObject(includeInstance?: boolean): TelemetryRecord.AsObject;
535-
static toObject(includeInstance: boolean, msg: TelemetryRecord): TelemetryRecord.AsObject;
536-
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
537-
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
538-
static serializeBinaryToWriter(message: TelemetryRecord, writer: jspb.BinaryWriter): void;
539-
static deserializeBinary(bytes: Uint8Array): TelemetryRecord;
540-
static deserializeBinaryFromReader(message: TelemetryRecord, reader: jspb.BinaryReader): TelemetryRecord;
541-
}
542-
543-
export namespace TelemetryRecord {
544-
export type AsObject = {
545-
event?: TelemetryEvent.AsObject,
546-
metric?: TelemetryMetric.AsObject,
547-
}
548-
549-
export enum RecordCase {
550-
RECORD_NOT_SET = 0,
551-
EVENT = 1,
552-
METRIC = 2,
553-
}
554-
}
555-
556-
export class GetAllAssistantTelemetryResponse extends jspb.Message {
557-
getCode(): number;
558-
setCode(value: number): void;
559-
560-
getSuccess(): boolean;
561-
setSuccess(value: boolean): void;
562-
563-
clearDataList(): void;
564-
getDataList(): Array<TelemetryRecord>;
565-
setDataList(value: Array<TelemetryRecord>): void;
566-
addData(value?: TelemetryRecord, index?: number): TelemetryRecord;
567-
568-
hasError(): boolean;
569-
clearError(): void;
570-
getError(): common_pb.Error | undefined;
571-
setError(value?: common_pb.Error): void;
572-
573-
hasPaginated(): boolean;
574-
clearPaginated(): void;
575-
getPaginated(): common_pb.Paginated | undefined;
576-
setPaginated(value?: common_pb.Paginated): void;
577-
578-
serializeBinary(): Uint8Array;
579-
toObject(includeInstance?: boolean): GetAllAssistantTelemetryResponse.AsObject;
580-
static toObject(includeInstance: boolean, msg: GetAllAssistantTelemetryResponse): GetAllAssistantTelemetryResponse.AsObject;
581-
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
582-
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
583-
static serializeBinaryToWriter(message: GetAllAssistantTelemetryResponse, writer: jspb.BinaryWriter): void;
584-
static deserializeBinary(bytes: Uint8Array): GetAllAssistantTelemetryResponse;
585-
static deserializeBinaryFromReader(message: GetAllAssistantTelemetryResponse, reader: jspb.BinaryReader): GetAllAssistantTelemetryResponse;
586-
}
587-
588-
export namespace GetAllAssistantTelemetryResponse {
589-
export type AsObject = {
590-
code: number,
591-
success: boolean,
592-
dataList: Array<TelemetryRecord.AsObject>,
593-
error?: common_pb.Error.AsObject,
594-
paginated?: common_pb.Paginated.AsObject,
595-
}
596-
}
597-
598386
export class AssistantTelemetryProvider extends jspb.Message {
599387
getId(): string;
600388
setId(value: string): void;

0 commit comments

Comments
 (0)