Skip to content

Commit d5b3ab8

Browse files
authored
Merge pull request #999 from SciSharp/realtimhub-refactor
realtime-hub-refactor
2 parents 9c032cb + d5f14de commit d5b3ab8

File tree

26 files changed

+640
-192
lines changed

26 files changed

+640
-192
lines changed

BotSharp.sln

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BotSharp.Test.BrowserUse",
143143
EndProject
144144
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BotSharp.LLM.Tests", "tests\BotSharp.LLM.Tests\BotSharp.LLM.Tests.csproj", "{7C0C7D13-D161-4AB0-9C29-83A0F1FF990E}"
145145
EndProject
146+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BotSharp.Test.RealtimeVoice", "tests\BotSharp.Test.RealtimeVoice\BotSharp.Test.RealtimeVoice.csproj", "{B067B126-88CD-4282-BEEF-7369B64423EF}"
147+
EndProject
146148
Global
147149
GlobalSection(SolutionConfigurationPlatforms) = preSolution
148150
Debug|Any CPU = Debug|Any CPU
@@ -599,6 +601,14 @@ Global
599601
{7C0C7D13-D161-4AB0-9C29-83A0F1FF990E}.Release|Any CPU.Build.0 = Release|Any CPU
600602
{7C0C7D13-D161-4AB0-9C29-83A0F1FF990E}.Release|x64.ActiveCfg = Release|Any CPU
601603
{7C0C7D13-D161-4AB0-9C29-83A0F1FF990E}.Release|x64.Build.0 = Release|Any CPU
604+
{B067B126-88CD-4282-BEEF-7369B64423EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
605+
{B067B126-88CD-4282-BEEF-7369B64423EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
606+
{B067B126-88CD-4282-BEEF-7369B64423EF}.Debug|x64.ActiveCfg = Debug|Any CPU
607+
{B067B126-88CD-4282-BEEF-7369B64423EF}.Debug|x64.Build.0 = Debug|Any CPU
608+
{B067B126-88CD-4282-BEEF-7369B64423EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
609+
{B067B126-88CD-4282-BEEF-7369B64423EF}.Release|Any CPU.Build.0 = Release|Any CPU
610+
{B067B126-88CD-4282-BEEF-7369B64423EF}.Release|x64.ActiveCfg = Release|Any CPU
611+
{B067B126-88CD-4282-BEEF-7369B64423EF}.Release|x64.Build.0 = Release|Any CPU
602612
EndGlobalSection
603613
GlobalSection(SolutionProperties) = preSolution
604614
HideSolutionNode = FALSE
@@ -668,6 +678,7 @@ Global
668678
{970BE341-9AC8-99A5-6572-E703C1E02FCB} = {E29DC6C4-5E57-48C5-BCB0-6B8F84782749}
669679
{7D0DB012-9798-4BB9-B15B-A5B0B7B3B094} = {32FAFFFE-A4CB-4FEE-BF7C-84518BBC6DCC}
670680
{7C0C7D13-D161-4AB0-9C29-83A0F1FF990E} = {32FAFFFE-A4CB-4FEE-BF7C-84518BBC6DCC}
681+
{B067B126-88CD-4282-BEEF-7369B64423EF} = {32FAFFFE-A4CB-4FEE-BF7C-84518BBC6DCC}
671682
EndGlobalSection
672683
GlobalSection(ExtensibilityGlobals) = postSolution
673684
SolutionGuid = {A9969D89-C98B-40A5-A12B-FC87E55B3A19}

src/Infrastructure/BotSharp.Abstraction/Agents/Settings/AgentSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ namespace BotSharp.Abstraction.Agents.Settings;
22

33
public class AgentSettings
44
{
5-
public string DataDir { get; set; } = string.Empty;
5+
public string DataDir { get; set; } = "agents";
66
public string TemplateFormat { get; set; } = "liquid";
77
public string HostAgentId { get; set; } = string.Empty;
88
public bool EnableTranslator { get; set; } = false;

src/Infrastructure/BotSharp.Abstraction/Conversations/Settings/ConversationSetting.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ namespace BotSharp.Abstraction.Conversations.Settings;
22

33
public class ConversationSetting
44
{
5-
public string DataDir { get; set; }
5+
public string DataDir { get; set; } = "conversations";
66
public string ChatCompletion { get; set; }
77
public bool EnableKnowledgeBase { get; set; }
88
public bool ShowVerboseLog { get; set; }

src/Infrastructure/BotSharp.Abstraction/MLTasks/IRealTimeCompletion.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Task Connect(RealtimeHubConnection conn,
1818
Action<RoleDialogModel> onInputAudioTranscriptionCompleted,
1919
Action onUserInterrupted);
2020
Task AppenAudioBuffer(string message);
21+
Task AppenAudioBuffer(ArraySegment<byte> data, int length);
2122

2223
Task SendEventToModel(object message);
2324
Task Disconnect();
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace BotSharp.Abstraction.Realtime.Enums;
2+
3+
public enum StreamChannelStatus
4+
{
5+
Open = 1,
6+
Closed = 2
7+
}

src/Infrastructure/BotSharp.Abstraction/Realtime/IRealtimeHub.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ public interface IRealtimeHub
1515
IRealTimeCompletion Completer { get; }
1616
IRealTimeCompletion SetCompleter(string provider);
1717

18-
Task Listen(WebSocket userWebSocket, Action<string> onUserMessageReceived);
18+
Task ConnectToModel(Func<string, Task> responseToUser);
1919
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using BotSharp.Abstraction.Realtime.Enums;
2+
using BotSharp.Abstraction.Realtime.Models;
3+
using System.Threading;
4+
5+
namespace BotSharp.Abstraction.Realtime;
6+
7+
public interface IStreamChannel
8+
{
9+
Task ConnectAsync(string conversationId);
10+
Task<StreamReceiveResult> ReceiveAsync(ArraySegment<byte> buffer, CancellationToken cancellation);
11+
Task SendAsync(byte[] data, CancellationToken cancellation);
12+
Task CloseAsync(StreamChannelStatus status, string description, CancellationToken cancellation);
13+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace BotSharp.Abstraction.Realtime.Models;
2+
3+
public class ModelResponseEvent
4+
{
5+
[JsonPropertyName("event")]
6+
public string Event { get; set; } = string.Empty;
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace BotSharp.Abstraction.Realtime.Models;
2+
3+
public class ModelResponseMediaEvent : ModelResponseEvent
4+
{
5+
[JsonPropertyName("media")]
6+
public string Media { get; set; } = null!;
7+
}

src/Infrastructure/BotSharp.Abstraction/Realtime/Models/RealtimeHubConnection.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ namespace BotSharp.Abstraction.Realtime.Models;
44

55
public class RealtimeHubConnection
66
{
7-
public string Event { get; set; } = null!;
87
public string StreamId { get; set; } = null!;
98
public string? LastAssistantItemId { get; set; } = null!;
109
public long LatestMediaTimestamp { get; set; }
@@ -13,10 +12,9 @@ public class RealtimeHubConnection
1312
public ConcurrentQueue<string> MarkQueue { get; set; } = new();
1413
public string CurrentAgentId { get; set; } = null!;
1514
public string ConversationId { get; set; } = null!;
16-
public string Data { get; set; } = string.Empty;
17-
public Func<string, object> OnModelMessageReceived { get; set; } = null!;
18-
public Func<object> OnModelAudioResponseDone { get; set; } = null!;
19-
public Func<object> OnModelUserInterrupted { get; set; } = null!;
15+
public Func<string, string> OnModelMessageReceived { get; set; } = null!;
16+
public Func<string> OnModelAudioResponseDone { get; set; } = null!;
17+
public Func<string> OnModelUserInterrupted { get; set; } = null!;
2018

2119
public void ResetResponseState()
2220
{

0 commit comments

Comments
 (0)