feat: add guarded image generation controls

This commit is contained in:
john
2026-07-20 07:37:43 +08:00
parent 72ed4dde83
commit 105a72c1f1
19 changed files with 482 additions and 23 deletions
+11 -1
View File
@@ -15,6 +15,7 @@ import {
} from '../api/client';
import type { AgentRun } from '../api/client';
import type { ChatState, Message, MindSpaceChatContext, PortalUser, Session, SessionEvent } from '../types';
import type { ImageGenerationMode } from '../utils/imageGeneration';
import { buildContextPrefix } from '../utils/mindspaceChatContext';
import { buildUserAddressPrefix } from '../utils/userAddress';
import {
@@ -307,7 +308,7 @@ export function usePageEditSubChat({
const submit = useCallback(
async (
text: string,
context: MindSpaceChatContext & { messageId?: string },
context: MindSpaceChatContext & { messageId?: string; imageGenerationMode?: ImageGenerationMode },
imageUrls?: string[],
previewImageUrls?: string[],
) => {
@@ -335,6 +336,15 @@ export function usePageEditSubChat({
imageUrls: normalizedImageUrls,
previewImageUrls: normalizedPreviewImageUrls,
});
userMessage.metadata = {
...userMessage.metadata,
memindRun: {
...(userMessage.metadata?.memindRun && typeof userMessage.metadata.memindRun === 'object'
? userMessage.metadata.memindRun
: {}),
imageGenerationMode: context.imageGenerationMode ?? 'auto',
},
};
const requestId = crypto.randomUUID();
activeRequestId.current = requestId;
messagesRef.current = [...messagesRef.current, userMessage];
+3
View File
@@ -35,6 +35,7 @@ import {
readStoredSessionId,
writeStoredSessionId,
} from '../utils/sessionStorage';
import type { ImageGenerationMode } from '../utils/imageGeneration';
import type {
CapabilityMap,
ChatFileAttachment,
@@ -1396,6 +1397,7 @@ export function useTKMindChat(
messageId?: string;
forceDeepReasoning?: boolean;
pgRequired?: boolean;
imageGenerationMode?: ImageGenerationMode;
selectedChatSkill?: string;
fileAttachments?: ChatFileAttachment[];
},
@@ -1446,6 +1448,7 @@ export function useTKMindChat(
: {}),
sessionMessageCount: priorMessageCount,
...(options?.pgRequired ? { pgRequired: true } : {}),
imageGenerationMode: options?.imageGenerationMode ?? 'auto',
...(options?.selectedChatSkill ? { selectedChatSkill: options.selectedChatSkill } : {}),
},
};