返回 DeepSeek-Reasonix
decisionSurfaceMock.ts
根目录 / desktop / frontend / src / lib / decisionSurfaceMock.ts
1 export type DecisionSurfaceKind =
2 | "tool_approval"
3 | "plan_approval"
4 | "ask"
5 | "workspace_conflict"
6 | "mode_jobs"
7 | "close_active"
8 | "clear_context";
9
10 export const DECISION_SURFACE_MOCK_TRIGGERS: Readonly<Record<DecisionSurfaceKind, string>> = {
11 tool_approval: "/mock-tool-approval",
12 plan_approval: "/mock-plan-approval",
13 ask: "/mock-ask",
14 workspace_conflict: "/mock-workspace-conflict",
15 mode_jobs: "/mock-mode-jobs",
16 close_active: "/mock-close-active",
17 clear_context: "/mock-clear-context",
18 };
19
20 // QA-only stress scene. Keep this separate from the seven product decision
21 // surfaces so the canonical inventory stays stable while copy/layout extremes
22 // can be exercised through the same Ask card used in production.
23 export const LONG_DECISION_OPTIONS_MOCK_TRIGGER = "/mock-long-options";
24
25 const aliases: Readonly<Record<string, DecisionSurfaceKind>> = {
26 ...Object.fromEntries(
27 Object.entries(DECISION_SURFACE_MOCK_TRIGGERS).map(([kind, trigger]) => [trigger, kind]),
28 ) as Record<string, DecisionSurfaceKind>,
29 "/approve-preview": "tool_approval",
30 "approve preview": "tool_approval",
31 "approve预览": "tool_approval",
32 "/plan-approve-preview": "plan_approval",
33 "plan approve preview": "plan_approval",
34 "plan approve预览": "plan_approval",
35 "/ask-preview": "ask",
36 "ask preview": "ask",
37 "ask预览": "ask",
38 "mock 工具审批": "tool_approval",
39 "mock 计划审批": "plan_approval",
40 "mock 提问": "ask",
41 "mock 工作区冲突": "workspace_conflict",
42 "mock 模式切换": "mode_jobs",
43 "mock 关闭任务": "close_active",
44 "mock 清空上下文": "clear_context",
45 };
46
47 export function decisionSurfaceMockFromInput(input: string): DecisionSurfaceKind | null {
48 return aliases[input.trim().toLowerCase()] ?? null;
49 }
50
51 export function isLongDecisionOptionsMockInput(input: string): boolean {
52 const normalized = input.trim().toLowerCase();
53 return normalized === LONG_DECISION_OPTIONS_MOCK_TRIGGER || normalized === "mock 长文案选项";
54 }
55
55 lines TYPESCRIPT