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