diff --git a/plugins/opencode-mail-bridge/index.js b/plugins/opencode-mail-bridge/index.js index c4fc70a..0d03614 100644 --- a/plugins/opencode-mail-bridge/index.js +++ b/plugins/opencode-mail-bridge/index.js @@ -41,6 +41,7 @@ import { appendRenameProposal, renameProposalNote } from "./lib/rename-proposal. // opencode 原生支持三态权限,免批由它自己记(response:"always"), // 所以这里只借用决策文本的判定,不需要 createGrantStore。 import { isAlwaysDecision, isApproval } from "./lib/permission-grants.js"; +import { opencodePermissions, normalizeMode, modeBriefing } from "./lib/permission-mode.js"; const GATEWAY_URL = process.env.AGENTMAIL_GATEWAY_URL || "http://127.0.0.1:8180"; const AGENT_NAME = process.env.AGENTMAIL_AGENT_NAME || "opencode"; @@ -681,8 +682,10 @@ async function resolveSessionForMail(client, directory, data, kind) { // 故意不传 title:opencode 只在标题缺省时才让模型按首轮对话生成摘要标题, // 传了占位标题就等于掐掉平台自己的命名机制。标题稍后由 session.updated 事件回写。 + const permMode = normalizeMode(data.permission_mode); const created = await client.session.create({ query: wantDir ? { directory: wantDir } : undefined, + permission: opencodePermissions(permMode), }); const session = created?.data ?? created; const sessionID = session?.id; @@ -1151,6 +1154,7 @@ export default async function mailBridge(input) { reportModels(), ]); const body = {}; + body.mode_enforcement = 'native'; if (platform_sessions) body.platform_sessions = platform_sessions; if (models) body.models = models; try {