Files
memind/cursor-page-routing.test.mjs
T
john 416bf7a29a
Memind CI / Test, build, and release guards (push) Failing after 4m22s
Isolate Cursor executor to admin-configured whitelist channel for H5 and WeChat.
Non-allowlisted users stay on the existing Goose/DeepSeek path; only memindadm whitelist users enter the TKMind Cursor channel on selected intents and channels.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 15:27:10 +08:00

165 lines
7.2 KiB
JavaScript

import assert from 'node:assert/strict';
import test from 'node:test';
import {
enforcePageGenerationCursorRuntime,
isPageCursorDefaultCandidate,
resolveCursorTaskKind,
applyCursorFirstAgentExecution,
} from './cursor-page-routing.mjs';
const enabledEnv = {
MEMIND_CURSOR_EXECUTOR_ENABLED: '1',
MEMIND_CURSOR_PAGE_TASKS_DEFAULT: '1',
};
test('page cursor default matches poem page requests', () => {
const userMessage = {
role: 'user',
content: [{ type: 'text', text: '帮我写首诗,并做成页面' }],
metadata: { displayText: '帮我写首诗,并做成页面', userVisible: true },
};
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv, channelEligible: true }), true);
assert.equal(resolveCursorTaskKind('帮我写首诗,并做成页面'), 'page_generation');
});
test('page cursor default matches survey page-data requests', () => {
const userMessage = {
role: 'user',
content: [{ type: 'text', text: '帮我做一个调查问卷,结果存 PG' }],
metadata: { displayText: '帮我做一个调查问卷,结果存 PG' },
};
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv, channelEligible: true }), true);
assert.equal(resolveCursorTaskKind('帮我做一个调查问卷,结果存 PG'), 'page_data');
});
test('page cursor default matches excel analysis requests', () => {
const userMessage = {
role: 'user',
content: [{ type: 'text', text: '帮我分析这个 Excel 表格的数据趋势' }],
metadata: { displayText: '帮我分析这个 Excel 表格的数据趋势' },
};
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv, channelEligible: true }), true);
assert.equal(resolveCursorTaskKind('帮我分析这个 Excel 表格的数据趋势'), 'excel_analysis');
});
test('page cursor default skips generic empty page requests', () => {
const userMessage = {
role: 'user',
content: [{ type: 'text', text: '帮我做一个页面吧' }],
metadata: { displayText: '帮我做一个页面吧' },
};
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv, channelEligible: true }), false);
});
test('page cursor default skips page-data dev repair requests', () => {
const userMessage = {
role: 'user',
content: [{ type: 'text', text: '问卷页面提交失败,帮我排查 Page Data 绑定' }],
metadata: { displayText: '问卷页面提交失败,帮我排查 Page Data 绑定' },
};
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv, channelEligible: true }), false);
});
test('enforcePageGenerationCursorRuntime switches page generation to code cursor executor', () => {
const userMessage = {
role: 'user',
content: [{ type: 'text', text: '帮我写首诗,并做成页面' }],
metadata: { displayText: '帮我写首诗,并做成页面' },
};
const enforced = enforcePageGenerationCursorRuntime(userMessage, { env: enabledEnv, channelEligible: true });
assert.equal(enforced.rawToolMode, 'code');
assert.equal(enforced.taskType, 'h5_chat_code_task');
assert.equal(enforced.requiredExecutor, 'cursor');
assert.equal(enforced.userMessage.metadata.memindRun.executor, 'cursor');
assert.equal(enforced.userMessage.metadata.memindRun.pageCursorDefault, true);
assert.equal(enforced.userMessage.metadata.memindRun.cursorTaskKind, 'page_generation');
assert.equal(enforced.userMessage.metadata.memindRun.selectedChatSkill, 'static-page-publish');
assert.match(
enforced.userMessage.content[0].text,
/MindSpace 工作区生成或更新 public\/\*\.html/,
);
});
test('enforcePageGenerationCursorRuntime switches survey tasks to cursor page-data flow', () => {
const userMessage = {
role: 'user',
content: [{ type: 'text', text: '帮我做一个调查问卷,结果存 PG' }],
metadata: { displayText: '帮我做一个调查问卷,结果存 PG' },
};
const enforced = enforcePageGenerationCursorRuntime(userMessage, { env: enabledEnv, channelEligible: true });
assert.equal(enforced.rawToolMode, 'code');
assert.equal(enforced.requiredExecutor, 'cursor');
assert.equal(enforced.userMessage.metadata.memindRun.cursorTaskKind, 'page_data');
assert.equal(enforced.userMessage.metadata.memindRun.selectedChatSkill, 'page-data-collect');
assert.equal(enforced.userMessage.metadata.memindRun.suggestedDelivery, 'mindspace_page_data');
assert.match(enforced.userMessage.content[0].text, /Page Data survey task via TKMind 智趣 executor/);
assert.match(enforced.userMessage.content[0].text, /page-data-api-usage\.md/);
});
test('enforcePageGenerationCursorRuntime switches excel analysis to cursor flow', () => {
const userMessage = {
role: 'user',
content: [{ type: 'text', text: '帮我分析这个 Excel 表格的数据趋势' }],
metadata: { displayText: '帮我分析这个 Excel 表格的数据趋势' },
};
const enforced = enforcePageGenerationCursorRuntime(userMessage, { env: enabledEnv, channelEligible: true });
assert.equal(enforced.rawToolMode, 'code');
assert.equal(enforced.requiredExecutor, 'cursor');
assert.equal(enforced.userMessage.metadata.memindRun.cursorTaskKind, 'excel_analysis');
assert.equal(enforced.userMessage.metadata.memindRun.selectedChatSkill, 'excel-analyst');
assert.match(enforced.userMessage.content[0].text, /Excel analysis task via TKMind 智趣 executor/);
});
test('page cursor default is disabled without channelEligible even when executor env is on', () => {
const userMessage = {
role: 'user',
content: [{ type: 'text', text: '帮我写首诗,并做成页面' }],
metadata: { displayText: '帮我写首诗,并做成页面' },
};
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv, channelEligible: false }), false);
});
test('page cursor default is disabled without env flag', () => {
const userMessage = {
role: 'user',
content: [{ type: 'text', text: '帮我写首诗,并做成页面' }],
metadata: { displayText: '帮我写首诗,并做成页面' },
};
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: {} }), false);
});
test('applyCursorFirstAgentExecution no longer forces cursor for generic agent tasks', () => {
const enabledEnv = {
MEMIND_CURSOR_EXECUTOR_ENABLED: '1',
MEMIND_CURSOR_AGENT_TASKS_DEFAULT: '1',
};
const userMessage = {
role: 'user',
content: [{ type: 'text', text: '帮我查一下今天的热点新闻并总结' }],
metadata: { memindRun: {} },
};
const applied = applyCursorFirstAgentExecution(userMessage, { toolMode: 'chat' }, {
routingDecision: 'agent_orchestration',
env: enabledEnv,
});
assert.equal(applied.cursorFirst, false);
assert.equal(applied.runOptions.toolMode, 'chat');
});
test('applyCursorFirstAgentExecution skips direct chat routes', () => {
const enabledEnv = {
MEMIND_CURSOR_EXECUTOR_ENABLED: '1',
MEMIND_CURSOR_AGENT_TASKS_DEFAULT: '1',
};
const userMessage = {
role: 'user',
content: [{ type: 'text', text: '你好' }],
metadata: { memindRun: {} },
};
const applied = applyCursorFirstAgentExecution(userMessage, { toolMode: 'chat' }, {
routingDecision: 'direct_chat',
env: enabledEnv,
});
assert.equal(applied.cursorFirst, false);
});