Isolate Cursor executor to admin-configured whitelist channel for H5 and WeChat.
Memind CI / Test, build, and release guards (push) Failing after 4m22s
Memind CI / Test, build, and release guards (push) Failing after 4m22s
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>
This commit is contained in:
@@ -18,7 +18,7 @@ test('page cursor default matches poem page requests', () => {
|
||||
content: [{ type: 'text', text: '帮我写首诗,并做成页面' }],
|
||||
metadata: { displayText: '帮我写首诗,并做成页面', userVisible: true },
|
||||
};
|
||||
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv }), true);
|
||||
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv, channelEligible: true }), true);
|
||||
assert.equal(resolveCursorTaskKind('帮我写首诗,并做成页面'), 'page_generation');
|
||||
});
|
||||
|
||||
@@ -28,7 +28,7 @@ test('page cursor default matches survey page-data requests', () => {
|
||||
content: [{ type: 'text', text: '帮我做一个调查问卷,结果存 PG' }],
|
||||
metadata: { displayText: '帮我做一个调查问卷,结果存 PG' },
|
||||
};
|
||||
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv }), true);
|
||||
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv, channelEligible: true }), true);
|
||||
assert.equal(resolveCursorTaskKind('帮我做一个调查问卷,结果存 PG'), 'page_data');
|
||||
});
|
||||
|
||||
@@ -38,7 +38,7 @@ test('page cursor default matches excel analysis requests', () => {
|
||||
content: [{ type: 'text', text: '帮我分析这个 Excel 表格的数据趋势' }],
|
||||
metadata: { displayText: '帮我分析这个 Excel 表格的数据趋势' },
|
||||
};
|
||||
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv }), true);
|
||||
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv, channelEligible: true }), true);
|
||||
assert.equal(resolveCursorTaskKind('帮我分析这个 Excel 表格的数据趋势'), 'excel_analysis');
|
||||
});
|
||||
|
||||
@@ -48,7 +48,7 @@ test('page cursor default skips generic empty page requests', () => {
|
||||
content: [{ type: 'text', text: '帮我做一个页面吧' }],
|
||||
metadata: { displayText: '帮我做一个页面吧' },
|
||||
};
|
||||
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv }), false);
|
||||
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv, channelEligible: true }), false);
|
||||
});
|
||||
|
||||
test('page cursor default skips page-data dev repair requests', () => {
|
||||
@@ -57,7 +57,7 @@ test('page cursor default skips page-data dev repair requests', () => {
|
||||
content: [{ type: 'text', text: '问卷页面提交失败,帮我排查 Page Data 绑定' }],
|
||||
metadata: { displayText: '问卷页面提交失败,帮我排查 Page Data 绑定' },
|
||||
};
|
||||
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv }), false);
|
||||
assert.equal(isPageCursorDefaultCandidate(userMessage, { env: enabledEnv, channelEligible: true }), false);
|
||||
});
|
||||
|
||||
test('enforcePageGenerationCursorRuntime switches page generation to code cursor executor', () => {
|
||||
@@ -66,7 +66,7 @@ test('enforcePageGenerationCursorRuntime switches page generation to code cursor
|
||||
content: [{ type: 'text', text: '帮我写首诗,并做成页面' }],
|
||||
metadata: { displayText: '帮我写首诗,并做成页面' },
|
||||
};
|
||||
const enforced = enforcePageGenerationCursorRuntime(userMessage, { env: enabledEnv });
|
||||
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');
|
||||
@@ -86,7 +86,7 @@ test('enforcePageGenerationCursorRuntime switches survey tasks to cursor page-da
|
||||
content: [{ type: 'text', text: '帮我做一个调查问卷,结果存 PG' }],
|
||||
metadata: { displayText: '帮我做一个调查问卷,结果存 PG' },
|
||||
};
|
||||
const enforced = enforcePageGenerationCursorRuntime(userMessage, { env: enabledEnv });
|
||||
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');
|
||||
@@ -102,7 +102,7 @@ test('enforcePageGenerationCursorRuntime switches excel analysis to cursor flow'
|
||||
content: [{ type: 'text', text: '帮我分析这个 Excel 表格的数据趋势' }],
|
||||
metadata: { displayText: '帮我分析这个 Excel 表格的数据趋势' },
|
||||
};
|
||||
const enforced = enforcePageGenerationCursorRuntime(userMessage, { env: enabledEnv });
|
||||
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');
|
||||
@@ -110,6 +110,15 @@ test('enforcePageGenerationCursorRuntime switches excel analysis to cursor flow'
|
||||
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',
|
||||
|
||||
Reference in New Issue
Block a user