feat(session): add optional end-of-session summarization
This commit is contained in:
@@ -8,6 +8,7 @@ import { AgentOrchestrator, type DelegationConfig } from '../backends/native/orc
|
||||
import type { ToolUseEvent } from '../backends/native/agent.js';
|
||||
import type { MemoryStore } from '../memory/store.js';
|
||||
import type { Config } from '../config/index.js';
|
||||
import { summarizeSessionOnEnd, type SessionEndSummaryConfig } from '../session/endSummary.js';
|
||||
|
||||
export interface SessionBridgeConfig {
|
||||
sessionManager: SessionManager;
|
||||
@@ -59,6 +60,29 @@ export class SessionBridge {
|
||||
const otherClients = Array.from(this.clients.values())
|
||||
.filter(c => c.sessionId === client.sessionId && c.connectionId !== connectionId);
|
||||
if (otherClients.length === 0) {
|
||||
const agent = this.agents.get(client.sessionId);
|
||||
const summaryConfig = this.config.config?.sessions?.end_summary;
|
||||
if (agent && summaryConfig?.enabled) {
|
||||
const history = agent.getHistory();
|
||||
const mappedConfig: SessionEndSummaryConfig = {
|
||||
enabled: summaryConfig.enabled,
|
||||
tier: summaryConfig.tier,
|
||||
maxMessages: summaryConfig.max_messages,
|
||||
maxInputChars: summaryConfig.max_input_chars,
|
||||
maxTokens: summaryConfig.max_tokens,
|
||||
writeToMemory: summaryConfig.write_to_memory,
|
||||
memoryNamespace: summaryConfig.memory_namespace,
|
||||
};
|
||||
void summarizeSessionOnEnd({
|
||||
agent,
|
||||
sessionId: client.sessionId,
|
||||
history,
|
||||
config: mappedConfig,
|
||||
memoryStore: this.config.memoryStore,
|
||||
}).catch((error) => {
|
||||
console.warn('Session end summary failed:', error);
|
||||
});
|
||||
}
|
||||
this.agents.delete(client.sessionId);
|
||||
}
|
||||
this.clients.delete(connectionId);
|
||||
|
||||
Reference in New Issue
Block a user