/** * coco-picker-keys.ts * * CoCo (Trae CLI) 的 AskUserQuestion 用一个原生 TUI 选择器作答,它的 PreToolUse * hook **不能**像 Claude 那样用 directive 把答案塞回去(实测:返回 * updatedInput.answers 后 CoCo 照样弹原生 picker)。因此 botmux 改为:hook 把 * 结构化问题注册成飞书选择卡,用户答完后由 worker 用按键序列驱动这个原生 * picker 自动作答。本模块把「每题选中的 key」翻译成确定的按键序列。 * * 实测的 picker 键位模型(CoCo 0.120.38): * 每题(光标从第 0 行起,Down/Up 移动): * - 单选:Down×idx 到目标项 → Enter(选中并**自动跳下一题**) * - 多选:每个选中项 Down 到位 + Space 勾选;再 Down 到末尾的 "Next" 行 + Enter 进下一题 * 行布局:options 占 0..L-1,"Type something" 在 L,"Next" 在 L+1 * 全部答完进 "Review your answers":光标默认在 "Submit answers"(第 0 行),Enter 提交 * * navKeys 只负责「答完所有题、停在 Review 屏」;最后那记提交 Enter 由 worker 在 * 确认 Review 屏出现后单独补发(见 worker driveCocoPicker),避免屏幕切换还没渲染 * 完就把提交键打飞。 */ import type { AskQuestion } from './ask-types.js'; export interface CocoPickerPlan { /** 导航 + 选择所有问题、最终停在 Review 屏的按键序列(不含提交 Enter)。 */ navKeys: string[]; } /** * 把 broker 的 answers(answers[i] = 第 i 题选中的 key 数组)翻译成驱动 CoCo * 原生 picker 的按键序列。questions[i].options 的 key 与 answers[i] 里的 key 对应。 */ export declare function computeCocoPickerKeys(questions: ReadonlyArray, answers: ReadonlyArray>): CocoPickerPlan; //# sourceMappingURL=coco-picker-keys.d.ts.map