Refactor application and runtime boundaries

This commit is contained in:
Hermes Agent
2026-07-29 10:40:39 +00:00
parent 902037f947
commit 0f0a1a5409
10 changed files with 1676 additions and 1678 deletions

View File

@@ -147,6 +147,54 @@ struct NewMessage<'a> {
compaction_tail_start: Option<i32>,
}
impl<'a> NewMessage<'a> {
fn system(session_id: i32, content: &'a str) -> Self {
Self::new(session_id, content, false, false, true)
}
fn user(session_id: i32, content: &'a str, model_content: Option<&'a str>) -> Self {
Self {
model_content,
..Self::new(session_id, content, true, false, false)
}
}
fn tool_result(session_id: i32, content: &'a str) -> Self {
Self::new(session_id, content, false, true, false)
}
fn assistant(session_id: i32, reasoning: bool) -> Self {
Self {
reasoning: reasoning.then_some(""),
reasoning_complete: !reasoning,
..Self::new(session_id, "", false, false, false)
}
}
fn compaction(session_id: i32, content: &'a str, tail_start: Option<i32>) -> Self {
Self {
compaction: true,
compaction_tail_start: tail_start,
..Self::system(session_id, content)
}
}
fn new(session_id: i32, content: &'a str, user: bool, tool: bool, system: bool) -> Self {
Self {
session_id,
user,
tool,
reasoning: None,
reasoning_complete: true,
content,
model_content: None,
system,
compaction: false,
compaction_tail_start: None,
}
}
}
#[derive(Clone, Debug, Identifiable, Queryable, Selectable)]
#[diesel(table_name = a2ui_messages)]
#[diesel(check_for_backend(diesel::sqlite::Sqlite))]
@@ -388,18 +436,7 @@ impl Database {
self.connection
.transaction(|connection| {
let message = diesel::insert_into(messages::table)
.values(NewMessage {
session_id,
user: false,
tool: false,
reasoning: None,
reasoning_complete: true,
content: &content,
model_content: None,
system: true,
compaction: false,
compaction_tail_start: None,
})
.values(NewMessage::system(session_id, &content))
.returning(StoredMessage::as_returning())
.get_result(connection)?;
diesel::insert_into(a2ui_messages::table)
@@ -454,50 +491,17 @@ impl Database {
for content in system_messages {
stored.push(
diesel::insert_into(messages::table)
.values(NewMessage {
session_id,
user: false,
tool: false,
reasoning: None,
reasoning_complete: true,
content,
model_content: None,
system: true,
compaction: false,
compaction_tail_start: None,
})
.values(NewMessage::system(session_id, content))
.returning(StoredMessage::as_returning())
.get_result(connection)?,
);
}
let user = diesel::insert_into(messages::table)
.values(NewMessage {
session_id,
user: true,
tool: false,
reasoning: None,
reasoning_complete: true,
content: prompt,
model_content: model_prompt,
system: false,
compaction: false,
compaction_tail_start: None,
})
.values(NewMessage::user(session_id, prompt, model_prompt))
.returning(StoredMessage::as_returning())
.get_result(connection)?;
let assistant = diesel::insert_into(messages::table)
.values(NewMessage {
session_id,
user: false,
tool: false,
reasoning: reasoning.then_some(""),
reasoning_complete: !reasoning,
content: "",
model_content: None,
system: false,
compaction: false,
compaction_tail_start: None,
})
.values(NewMessage::assistant(session_id, reasoning))
.returning(StoredMessage::as_returning())
.get_result(connection)?;
stored.extend([user, assistant]);
@@ -520,36 +524,14 @@ impl Database {
let mut stored = Vec::with_capacity(system_messages.len() + 3);
stored.push(
diesel::insert_into(messages::table)
.values(NewMessage {
session_id,
user: false,
tool: true,
reasoning: None,
reasoning_complete: true,
content: result,
model_content: None,
system: false,
compaction: false,
compaction_tail_start: None,
})
.values(NewMessage::tool_result(session_id, result))
.returning(StoredMessage::as_returning())
.get_result(connection)?,
);
if let Some(content) = queued_user {
stored.push(
diesel::insert_into(messages::table)
.values(NewMessage {
session_id,
user: true,
tool: false,
reasoning: None,
reasoning_complete: true,
content,
model_content: None,
system: false,
compaction: false,
compaction_tail_start: None,
})
.values(NewMessage::user(session_id, content, None))
.returning(StoredMessage::as_returning())
.get_result(connection)?,
);
@@ -557,35 +539,13 @@ impl Database {
for content in system_messages {
stored.push(
diesel::insert_into(messages::table)
.values(NewMessage {
session_id,
user: false,
tool: false,
reasoning: None,
reasoning_complete: true,
content,
model_content: None,
system: true,
compaction: false,
compaction_tail_start: None,
})
.values(NewMessage::system(session_id, content))
.returning(StoredMessage::as_returning())
.get_result(connection)?,
);
}
let assistant = diesel::insert_into(messages::table)
.values(NewMessage {
session_id,
user: false,
tool: false,
reasoning: reasoning.then_some(""),
reasoning_complete: !reasoning,
content: "",
model_content: None,
system: false,
compaction: false,
compaction_tail_start: None,
})
.values(NewMessage::assistant(session_id, reasoning))
.returning(StoredMessage::as_returning())
.get_result(connection)?;
stored.push(assistant);
@@ -667,36 +627,14 @@ impl Database {
let mut stored = Vec::with_capacity(2);
stored.push(
diesel::insert_into(messages::table)
.values(NewMessage {
session_id,
user: false,
tool: false,
reasoning: None,
reasoning_complete: true,
content: summary,
model_content: None,
system: true,
compaction: true,
compaction_tail_start: tail_start,
})
.values(NewMessage::compaction(session_id, summary, tail_start))
.returning(StoredMessage::as_returning())
.get_result(connection)?,
);
if let Some(content) = running_jobs {
stored.push(
diesel::insert_into(messages::table)
.values(NewMessage {
session_id,
user: false,
tool: true,
reasoning: None,
reasoning_complete: true,
content,
model_content: None,
system: false,
compaction: false,
compaction_tail_start: None,
})
.values(NewMessage::tool_result(session_id, content))
.returning(StoredMessage::as_returning())
.get_result(connection)?,
);