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:
@ -206,15 +206,11 @@ export async function listAgents(status?: string) {
|
||||
export interface SendMailOpts {
|
||||
cc?: string;
|
||||
reply_to?: string;
|
||||
/** 仅在用 .new 新建会话时生效:给新会话命名,之后可用 name@path.<别名> 续谈 */
|
||||
session_alias?: string;
|
||||
/** 先用 uploadAttachment 上传取得的 id 列表 */
|
||||
attachment_ids?: string[];
|
||||
/**
|
||||
* 本任务的往返预算(0/省略 = 不限)。仅在新建会话时生效;
|
||||
* 续谈已有会话请用 updateSessionBudget(对话页里可随时改)。
|
||||
*/
|
||||
max_rounds?: number;
|
||||
/** 权限档位(仅新建会话时生效):plan / workspace / full */
|
||||
permission_mode?: string;
|
||||
}
|
||||
|
||||
export async function sendMail(
|
||||
@ -239,7 +235,8 @@ export async function sendMail(
|
||||
session_alias: opts.session_alias ?? '',
|
||||
attachment_ids: opts.attachment_ids ?? [],
|
||||
// null 而非 0:0 是「不限」的合法取值,省略才表示「不设置」
|
||||
max_rounds: opts.max_rounds ?? null
|
||||
max_rounds: opts.max_rounds ?? null,
|
||||
permission_mode: opts.permission_mode ?? '',
|
||||
});
|
||||
}
|
||||
|
||||
@ -524,6 +521,15 @@ export async function updateSessionBudget(
|
||||
return request<SessionBudget>('PUT', `/sessions/${id}/budget`, patch);
|
||||
}
|
||||
|
||||
export async function updateSessionPermission(
|
||||
id: string,
|
||||
permission_mode: string
|
||||
) {
|
||||
return request<{ permission_mode: string; permission_enforcement: string }>(
|
||||
'PUT', `/sessions/${id}/permission`, { permission_mode }
|
||||
);
|
||||
}
|
||||
|
||||
/** 驳回当前提议。记下来,提示条不再反复弹同一个建议。 */
|
||||
export async function dismissRenameProposal(id: string) {
|
||||
return request<{ status: string; dismissed?: string }>(
|
||||
|
||||
Reference in New Issue
Block a user