Add Luna.Core server with SignalR hub, session management, and tool system

Implement the core application server as an ASP.NET web host with:
- SignalR ChatHub for real-time client communication
- Session management with token estimation for context windowing
- Extensible tool system with attribute-based tool discovery
- Chat stream update builder for streaming AI responses
- App configuration with appsettings for development and production
This commit is contained in:
2026-04-04 04:10:58 +02:00
parent 29eb3851c9
commit 2f5841a1b9
23 changed files with 586 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
using Luna.Core.Abstractions;
using Luna.Shared;
using Microsoft.AspNetCore.SignalR;
namespace Luna.Core.Hubs;
public class ChatHubContext(IHubContext<ChatHub> hubContext) : IChatHubContext
{
public async Task SendResponseAsync(string connectionId, ChannelMessage message, CancellationToken cancellationToken = default)
{
await GetClient(connectionId)
.SendAsync("OnMessageReceived", message, cancellationToken);
}
public async Task SendStreamingResponseAsync(
string connectionId,
IAsyncEnumerable<ChatStreamUpdate> messageStream,
CancellationToken cancellationToken = default)
{
var client = GetClient(connectionId);
await foreach (var update in messageStream.WithCancellation(cancellationToken))
{
await client.SendAsync("OnMessageStreamReceived", update, cancellationToken);
}
}
private ISingleClientProxy GetClient(string connectionId)
=> hubContext.Clients.Client(connectionId);
}