P5 前端:权限档位选择器 + 卡片徽标 + 对话页改档
前端完整实现: - types: Session/HumanSession/Mail/Contact 加 permission_mode + permission_enforcement 字段 - api/client: sendMail 支持 permission_mode 参数;新增 updateSessionPermission API - PermissionChip 组件:plan=蓝/只读, workspace=绿/目录内, full=橙/全权 native 实心点=平台强制, advisory 空心点=仅提示;hover 显示 tooltip - ComposePage: 新建会话时显示三档按钮(plan/workspace/full),传入 sendMail - MailView: 会话头部加 PermissionEditor(点击徽标展开三档选择,点保存调 API 改档) - WorkCard: 卡片底部与 BudgetChip 并排显示 PermissionChip(compact 模式) - sessionStore: 新增 setPermissionMode action - 177 前端测试全过,gateway 8 包全绿,已部署
This commit is contained in:
@ -25,7 +25,10 @@ interface SessionState {
|
||||
/** 本任务的往返预算;null = 尚未取到 */
|
||||
budget: SessionBudget | null;
|
||||
/** 改本会话预算(对话页里随时调)。reset 把已用次数归零。 */
|
||||
/** 改本会话预算(对话页里随时调)。reset 把已用次数归零。 */
|
||||
setBudget: (patch: { max_rounds?: number; reset?: boolean }) => Promise<void>;
|
||||
/** 改本会话权限档位(对话页里随时调)。人是权限的源头,可以任改三档。 */
|
||||
setPermissionMode: (mode: string) => Promise<void>;
|
||||
/** 重新拉取预算(Agent 发信后剩余会变) */
|
||||
refreshBudget: () => Promise<void>;
|
||||
/** 归档后若正查看该会话则退出 */
|
||||
@ -136,6 +139,21 @@ export const useSessionStore = create<SessionState>((set, get) => ({
|
||||
}
|
||||
},
|
||||
|
||||
setPermissionMode: async mode => {
|
||||
const id = get().currentSession?.session_id;
|
||||
if (!id) return;
|
||||
try {
|
||||
const res = await api.updateSessionPermission(id, mode);
|
||||
const cur = get().currentSession;
|
||||
if (cur && cur.session_id === id) {
|
||||
set({ currentSession: { ...cur, permission_mode: res.permission_mode, permission_enforcement: res.permission_enforcement } });
|
||||
}
|
||||
await get().fetchSessions();
|
||||
} catch (err) {
|
||||
set({ error: err instanceof Error ? err.message : String(err) });
|
||||
}
|
||||
},
|
||||
|
||||
clearSession: () =>
|
||||
set({ currentSession: null, currentSessionMails: [], renameProposal: null, budget: null }),
|
||||
|
||||
|
||||
Reference in New Issue
Block a user