initial work on message history and data transfer

This commit is contained in:
2026-02-09 20:57:47 +02:00
parent e878b8120b
commit e63fd76d2f
6 changed files with 149 additions and 49 deletions

View File

@@ -1,18 +1,30 @@
mod chatpersistence;
use genai::chat::{ChatMessage, ChatRequest, ChatResponse};
use std::cell::Cell;
use std::sync::atomic::AtomicI64;
use genai::chat::{ChatMessage, ChatRequest};
use genai::Client;
use shared::ai::ai_daemon_server::{AiDaemon, AiDaemonServer};
use shared::ai::{
ChatHistoryRequest, ChatHistoryResponse, ChatRequest as CRequest, ChatResponse as CResponse,
PromptRequest, PromptResponse,
ChatHistoryRequest, ChatHistoryResponse, ChatMessage as CMessage, ChatRequest as CRequest,
ChatResponse as CResponse, PromptRequest, PromptResponse,
};
use tonic::{transport::Server, Request, Response, Status};
use chatpersistence::SqliteChatRepository;
#[derive(Default)]
pub struct DaemonServer {}
pub struct DaemonServer {
message_counter: AtomicI64,
}
impl Default for DaemonServer {
fn default() -> Self {
Self {
message_counter: AtomicI64::new(0),
}
}
}
#[tonic::async_trait]
impl AiDaemon for DaemonServer {
@@ -33,11 +45,26 @@ impl AiDaemon for DaemonServer {
}
async fn chat(&self, request: Request<CRequest>) -> Result<Response<CResponse>, Status> {
let r = request.into_inner();
println!("<<<: {}", r.text());
let response = CResponse {
id: 1,
chat_id: 1,
text: "asdf".to_string(),
is_user: false,
messages: vec![
CMessage {
id: self
.message_counter
.fetch_add(1, std::sync::atomic::Ordering::Relaxed),
text: r.text().to_string(),
is_user: true,
},
CMessage {
id: self
.message_counter
.fetch_add(1, std::sync::atomic::Ordering::Relaxed),
text: format!("Pong: {}", r.text()),
is_user: false,
},
],
};
return Ok(Response::new(response));
}