refactor(chat): export flow capabilities individually

This commit is contained in:
2026-07-06 15:13:19 +08:00
parent 99ac24e901
commit 3b53fc9bad
6 changed files with 245 additions and 197 deletions
+37 -33
View File
@@ -23,21 +23,21 @@ const log = new Logger("StoresChatChatSendFlow");
type UiMessage = import("@/data/dto/chat").UiMessage;
export const chatSendActors = {
sendMessageHttp: fromPromise<
{ response: ChatSendResponse; reply: UiMessage | null },
{ content: string }
>(async ({ input }) => {
return sendMessageViaHttp(input.content);
}),
export const sendMessageHttpActor = fromPromise<
{ response: ChatSendResponse; reply: UiMessage | null },
{ content: string }
>(async ({ input }) => {
return sendMessageViaHttp(input.content);
});
httpMessageQueue: fromCallback<ChatEvent>(({ sendBack, receive }) => {
export const httpMessageQueueActor = fromCallback<ChatEvent>(
({ sendBack, receive }) => {
return createMessageQueueActor(sendBack, receive);
}),
};
},
);
export const chatSendActions = {
appendGuestUserMessage: chatAssign(({ context, event }: ChatActionArgs) => {
export const appendGuestUserMessageAction = chatAssign(
({ context, event }: ChatActionArgs) => {
if (event.type !== "ChatSendMessage") return {};
const today = todayString();
@@ -60,9 +60,11 @@ export const chatSendActions = {
upgradePromptVisible: false,
upgradeReason: null,
};
}),
},
);
appendUserMessage: chatAssign(({ context, event }: ChatActionArgs) => {
export const appendUserMessageAction = chatAssign(
({ context, event }: ChatActionArgs) => {
if (event.type !== "ChatSendMessage") return {};
const today = todayString();
@@ -84,9 +86,11 @@ export const chatSendActions = {
upgradePromptVisible: false,
upgradeReason: null,
};
}),
},
);
appendQueuedSendErrorMessage: chatAssign(({ context }: ChatContextArgs) => {
export const appendQueuedSendErrorMessageAction = chatAssign(
({ context }: ChatContextArgs) => {
const messages = [
...context.messages,
{
@@ -96,29 +100,29 @@ export const chatSendActions = {
},
];
return { messages, ...finishPendingReply(context) };
}),
},
);
markQueuedSendStarted: chatAssign(({ context }: ChatContextArgs) =>
export const markQueuedSendStartedAction = chatAssign(
({ context }: ChatContextArgs) =>
beginPendingReply(context),
),
);
applyQueuedHttpOutput: chatAssign(({ context, event }: ChatActionArgs) => {
export const applyQueuedHttpOutputAction = chatAssign(
({ context, event }: ChatActionArgs) => {
if (event.type !== "ChatQueuedHttpDone") return {};
return applyHttpSendOutput(context, event.output);
}),
},
);
clearUpgradePrompt: chatAssign(() => ({
upgradePromptVisible: false,
upgradeReason: null,
canSendMessage: true,
cannotSendReason: null,
requiredCredits: 0,
shortfallCredits: 0,
})),
};
export const sendMessageHttpActor = chatSendActors.sendMessageHttp;
export const httpMessageQueueActor = chatSendActors.httpMessageQueue;
export const clearUpgradePromptAction = chatAssign(() => ({
upgradePromptVisible: false,
upgradeReason: null,
canSendMessage: true,
cannotSendReason: null,
requiredCredits: 0,
shortfallCredits: 0,
}));
function createMessageQueueActor(
sendBack: (event: ChatEvent) => void,