/** * 同事工单的写操作门禁:看板范围切到「团队全部」后,别人的卡也在板上, * 前端会把按钮藏掉,但 webview 消息仍可能因为竞态(卡刚被重新指派、 * 快照过期)送到扩展侧,所以这里做最终拦截——归属不是我就直接丢掉。 * * 只拦「会改工单状态或在本机替别人跑会话」的消息。看 PR 改动、勾已查看、 * 生成文件摘要属于审查动作,落地在本机,照常放行。 */ /** 必须是工单归属人才能执行的消息类型。 */ export const OWNER_ONLY_MESSAGE_TYPES: ReadonlySet = new Set([ // 会话:在本机替别人开/恢复/关闭会话没有意义,worktree 也不在本机 'session/resume', 'session/focus', 'session/resume-review', 'session/resume-test', 'session/resume-prototype', 'session/start-review', 'session/start-test', 'session/start-prototype', 'session/close-tab', 'brainstorm/continue', 'issue/implement', // 工单状态:写回 Gitea 'column/change', 'issue/delete', 'issue/close', 'issue/generate-pr-diff-summary', 'issue/update-auto-review', 'issue/update-profile-path', 'issue/update-brainstorm-profile-path', 'issue/clear-brainstorm-session', 'issue/update-test-profile-path', 'issue/update-prototype-profile-path', 'dependency/set', 'dependency/clear', 'handoff/users', 'handoff/start', // 分支与 worktree 'git/merge-preview', 'worktree/delete', ]) export function isOwnerOnlyMessage(type: string): boolean { return OWNER_ONLY_MESSAGE_TYPES.has(type) }