code clean up pass
This commit is contained in:
@@ -98,27 +98,26 @@ function deleteSessionByExternalId(externalId) {
|
||||
|
||||
// --Episodes --------------------------------------------------
|
||||
// Creates a new episode linked to a session, with user message, AI response, optional token count, and metadata
|
||||
async function createEpisode(sessionId, userMessage, aiResponse, tokenCount = null, metadata = null, projectId=null) {
|
||||
async function createEpisode(sessionId, userMessage, aiResponse, tokenCount = null, projectId=null) {
|
||||
const db = getDB();
|
||||
|
||||
// Wrap insert + session touch in a transaction — both succeed or neither does
|
||||
const insert = db.transaction(() => {
|
||||
const stmt = db.prepare(`
|
||||
INSERT INTO episodes (session_id, user_message, ai_response, token_count, metadata)
|
||||
VALUES (?, ?, ?, ?, ?)
|
||||
INSERT INTO episodes (session_id, user_message, ai_response, token_count)
|
||||
VALUES (?, ?, ?, ?)
|
||||
`);
|
||||
const result = stmt.run(
|
||||
sessionId,
|
||||
userMessage,
|
||||
aiResponse,
|
||||
tokenCount,
|
||||
metadata ? JSON.stringify(metadata) : null
|
||||
);
|
||||
touchSession(sessionId);
|
||||
return getEpisode(result.lastInsertRowid);
|
||||
});
|
||||
|
||||
const episode= insert();
|
||||
const episode = insert();
|
||||
|
||||
//embed ascynchronously after SQLite completes, non-blocking. If embedding fail, the episode still saved.
|
||||
getEpisodeEmbedding(userMessage, aiResponse)
|
||||
@@ -155,11 +154,12 @@ function getEpisodesBySession(sessionId, limit = EPISODIC.DEFAULT_PAGE_SIZE, off
|
||||
}
|
||||
|
||||
// Retrieves recent episodes across all sessions, ordered by creation time descending, with a limit
|
||||
function getRecentEpisodes(limit = EPISODIC.DEFAULT_RECENT_LIMIT) {
|
||||
function getRecentEpisodes(sessionId, limit = EPISODIC.DEFAULT_RECENT_LIMIT) {
|
||||
// Cross-session recent episodes — useful for recency-based retrieval
|
||||
const db = getDB();
|
||||
const stmt = db.prepare(`
|
||||
SELECT * FROM episodes
|
||||
WHERE session_id = ?
|
||||
ORDER BY created_at DESC
|
||||
LIMIT ?
|
||||
`);
|
||||
|
||||
@@ -83,9 +83,7 @@ app.patch('/sessions/by-external/:externalId', (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Updates the session's updated_at timestamp to now
|
||||
// Deletes a session and all associated episodes
|
||||
app.delete('/sessions/by-external/:externalId', (req, res) => {
|
||||
episodic.deleteSessionByExternalId(req.params.externalId);
|
||||
res.status(204).send();
|
||||
@@ -103,13 +101,6 @@ app.post('/episodes', async (req, res) => {
|
||||
}
|
||||
const episode = await episodic.createEpisode(sessionId, userMessage, aiResponse, tokenCount, metadata, projectId);
|
||||
|
||||
console.log('[memory] create episode body:', {
|
||||
sessionId,
|
||||
userMessageLength: userMessage?.length,
|
||||
aiResponseLength: aiResponse?.length,
|
||||
tokenCount
|
||||
});
|
||||
|
||||
res.status(201).json(episode);
|
||||
});
|
||||
|
||||
|
||||
@@ -182,20 +182,15 @@ async function chat(externalId, userMessage, options = {}) {
|
||||
const result = await inference.complete(prompt, {...options, temperature, repeatPenalty, topP, topK});
|
||||
|
||||
// 6. Write episode back to memory
|
||||
memory
|
||||
.createEpisode(
|
||||
session.id,
|
||||
userMessage,
|
||||
result.text,
|
||||
(result.evalCount || 0) + (result.promptEvalCount || 0),
|
||||
session.project_id ?? null,
|
||||
)
|
||||
.catch((err) =>
|
||||
console.error(`[orchestration] Failed to save episode`, err.message),
|
||||
try {
|
||||
await memory.createEpisode(
|
||||
session.id, userMessage, result.text,
|
||||
(result.evalCount || 0) + (result.promptEvalCount || 0),
|
||||
session.project_id ?? null,
|
||||
);
|
||||
|
||||
// 7. Trigger summarization check (fire-and-forget)
|
||||
// Pass full episodes list so summarization can sum tokens accurately
|
||||
} catch (err) {
|
||||
console.error('[orchestration] Failed to save episode:', err.message);
|
||||
}
|
||||
const allEpisodes = await memory.getRecentEpisodes(session.id, 9999);
|
||||
triggerSummary(session, allEpisodes);
|
||||
|
||||
@@ -258,7 +253,6 @@ async function chatStream(externalId, userMessage, onChunk, options = {}) {
|
||||
);
|
||||
|
||||
const entities = await getRelevantEntities(userMessage, session.project_id ?? null);
|
||||
console.log('[orchestration] entity search projectId:', session.project_id ?? null);
|
||||
|
||||
const prompt = buildPrompt(
|
||||
recentEpisodes,
|
||||
|
||||
Reference in New Issue
Block a user