summary system backend implementation

This commit is contained in:
Storme-bit
2026-04-19 07:19:27 -07:00
parent 57e8c4c486
commit 4cc87d96b6
5 changed files with 178 additions and 4 deletions

View File

@@ -4,6 +4,7 @@ const embedding = require("../services/embedding");
const qdrant = require("../services/qdrant");
const { ORCHESTRATION } = require("@nexusai/shared");
const appSettings = require("../config/settings");
const {triggerSummary} = require('../services/summarization')
function buildPrompt(recentEpisodes, semanticEpisodes, entities, userMessage, systemPrompt) {
const parts = [systemPrompt ?? ORCHESTRATION.SYSTEM_PROMPT];
@@ -193,12 +194,18 @@ async function chat(externalId, userMessage, options = {}) {
console.error(`[orchestration] Failed to save episode`, err.message),
);
// 7. Auto-name on first message
// 7. Trigger summarization check (fire-and-forget)
// Pass full episodes list so summarization can sum tokens accurately
const allEpisodes = await memory.getRecentEpisodes(session.id, 9999);
triggerSummary(session, allEpisodes);
// 8. Auto-name on first message
if (isFirstMessage && !session.name) {
autoNameSession(externalId, userMessage, result.text).catch(() => {}); // already logged inside autoNameSession
}
// 8. Return response
// 9. Return response
return {
sessionId: externalId,
response: result.text,
@@ -311,6 +318,8 @@ async function chatStream(externalId, userMessage, onChunk, options = {}) {
if (fullText.trim()) {
await memory.createEpisode(session.id, userMessage, fullText, tokenCount, session.project_id ?? null);
const allEpisodes = await memory.getRecentEpisodes(session.id, 9999);
triggerSummary(session, allEpisodes);
} else {
console.warn(
"[orchestration] Stream finished with no assistant text; episode not saved",