manuallyExtract method
Manually trigger session memory extraction, bypassing threshold checks.
Implementation
Future<ManualExtractionResult> manuallyExtract(
List<SessionMessage> messages,
) async {
if (messages.isEmpty) {
return const ManualExtractionResult(
success: false,
error: 'No messages to summarize',
);
}
state.value.markExtractionStarted();
try {
final setup = await _setupFile();
final prompt = await buildSessionMemoryUpdatePrompt(
setup.currentMemory,
setup.memoryPath,
loadPrompt,
);
await runExtractionAgent(
prompt: prompt,
memoryPath: setup.memoryPath,
contextMessages: messages,
);
logEvent('tengu_session_memory_manual_extraction', {});
state.value.recordExtractionTokenCount(
tokenCountWithEstimation(messages),
);
_updateLastSummarizedMessageIdIfSafe(messages);
return ManualExtractionResult(
success: true,
memoryPath: setup.memoryPath,
);
} catch (e) {
return ManualExtractionResult(success: false, error: e.toString());
} finally {
state.value.markExtractionCompleted();
}
}