Route H5 pages requiring generated images through MindSpace
Memind CI / Test, build, and release guards (push) Failing after 2s

This commit is contained in:
john
2026-11-11 18:33:34 +08:00
parent aa0e395ecc
commit e136f7d3ac
3 changed files with 37 additions and 4 deletions
+8 -4
View File
@@ -208,6 +208,13 @@ function requestedImageGenerationMode(userMessage) {
);
}
export function resolveMessageImageGenerationDecision(userMessage, text = messageDisplayText(userMessage)) {
return resolveImageGenerationDecision({
text,
requestedMode: requestedImageGenerationMode(userMessage),
});
}
function buildImageGenerationInstruction(decision) {
if (decision?.mode === IMAGE_GENERATION_MODE.REQUIRED) {
return [
@@ -1874,10 +1881,7 @@ export function createChatIntentRouter(options = {}) {
);
return finalizeRouterClassification({
...coerced,
imageGeneration: resolveImageGenerationDecision({
text,
requestedMode: requestedImageGenerationMode(userMessage),
}),
imageGeneration: resolveMessageImageGenerationDecision(userMessage, text),
}, decisionContext);
};
const llmRouterEligible = isLlmRouterEligibleForUser(userId);
+8
View File
@@ -16,6 +16,7 @@ import {
resolvePreferredCodeExecutor,
} from './cursor-agent-launch.mjs';
import { isCursorTaskKindEnabled } from './cursor-channel-features.mjs';
import { IMAGE_GENERATION_MODE, resolveMessageImageGenerationDecision } from './chat-intent-router.mjs';
const PUBLISH_SKILL_NAME = 'static-page-publish';
@@ -81,6 +82,13 @@ export function isPageCursorDefaultCandidate(userMessage, {
const taskKind = resolveCursorTaskKind(taskText, skill);
if (taskKind === null) return false;
if (
taskKind === CURSOR_TASK_KIND.PAGE_GENERATION
&& resolveMessageImageGenerationDecision(userMessage, taskText).mode === IMAGE_GENERATION_MODE.REQUIRED
) {
// Required images need the MindSpace sandbox tool and its per-run artifact check.
return false;
}
if (policy?.enabled) {
return isCursorTaskKindEnabled(policy, taskKind);
}
+21
View File
@@ -22,6 +22,27 @@ test('page cursor default matches poem page requests', () => {
assert.equal(resolveCursorTaskKind('帮我写首诗,并做成页面'), 'page_generation');
});
test('page requests that require Qwen-generated images retain the MindSpace agent path', () => {
const options = { env: enabledEnv, channelEligible: true };
const makeMessage = (text, imageGenerationMode = 'auto') => ({
content: [{ type: 'text', text }],
metadata: { displayText: text, memindRun: { imageGenerationMode } },
});
for (const message of [
makeMessage('帮我制作一个咖啡品牌页面,用千问生图做封面'),
makeMessage('帮我制作一个咖啡品牌页面', 'required'),
]) {
const enforced = enforcePageGenerationCursorRuntime(message, options);
assert.equal(enforced.requiredExecutor, null);
assert.equal(enforced.rawToolMode, 'chat');
assert.equal(enforced.userMessage, message);
}
assert.equal(isPageCursorDefaultCandidate(
makeMessage('帮我制作一个咖啡品牌页面,不要生图'), options,
), true);
});
test('page cursor default matches survey page-data requests', () => {
const userMessage = {
role: 'user',