refactor: move message received hook into event binding controller

This commit is contained in:
Youzini-afk
2026-03-29 17:24:57 +08:00
parent 899216db62
commit 33afa996aa
3 changed files with 57 additions and 30 deletions

View File

@@ -245,3 +245,39 @@ export async function onBeforeCombinePromptsController(runtime) {
runtime.getGenerationRecallHookStateFromResult(recallResult),
);
}
export function onMessageReceivedController(runtime) {
if (runtime.getCurrentGraph()) {
if (
runtime.getGraphPersistenceState()?.pendingPersist &&
runtime.isGraphMetadataWriteAllowed()
) {
runtime.maybeFlushQueuedGraphPersist("message-received-pending-flush");
}
runtime.maybeCaptureGraphShadowSnapshot("message-received-passive-sync");
}
const pendingRecallSendIntent = runtime.getPendingRecallSendIntent();
if (
pendingRecallSendIntent?.text &&
!runtime.isFreshRecallInputRecord(pendingRecallSendIntent)
) {
runtime.setPendingRecallSendIntent(runtime.createRecallInputRecord());
}
const context = runtime.getContext();
const chat = context?.chat;
const lastMessage =
Array.isArray(chat) && chat.length > 0 ? chat[chat.length - 1] : null;
if (runtime.isAssistantChatMessage(lastMessage)) {
runtime.queueMicrotask(() => {
void runtime.runExtraction().catch((error) => {
runtime.console.error("[ST-BME] 异步自动提取失败:", error);
runtime.notifyExtractionIssue(
error?.message || String(error) || "自动提取失败",
);
});
});
}
}