mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-20 01:21:41 -06:00
4b0d573437
* feat(gateway): add session permission modes * feat(agents): enforce session permission policies * test: cover session permission modes * docs: explain session permission modes * fix(agents): preserve apply patch default root * feat(codex): map session permission modes * feat(ui): add session permission controls * test: cover session permission surfaces * fix(agents): enforce session permissions from entry * fix(codex): pass params object to requirements reader * fix(codex): honor session permission modes * fix(codex): preserve exec approval floors * chore: revert changelog edit (release-owned) * test: align full-mode promotion with upstream semantics * chore(protocol): regenerate session permission models * docs: register session permission modes * fix(ui): use shared permission dropdown * fix(sessions): restore permission mode contracts * fix(ci): record session permission startup JS growth in the budget baseline * refactor(agents): prepare session exec mode at dispatch Host dispatch owns permissionMode→exec override preparation; the codex plugin consumes prepared facts and the SDK barrel export is removed, keeping the plugin-sdk surface at its recorded budget. * test: type exec mode fixtures as ExecMode * fix(codex): require admin scope for yolo permissions * test: isolate codex permission command state * ci: refresh PR checks against current main * ci: refresh checks after gateway test repair * test: fix main-fallout CI suites * chore: refresh CI merge ref * fix(worker): fence permission-mode cloud placements * fix(sessions): clear worktree policy on detach * chore(protocol): generate session permission mode enum * test(gateway): type dispatch fixtures from session entries * fix(ui): allow clearing session permission mode * chore: refresh CI merge ref * fix(ci): record permission picker startup growth in the budget baseline * fix(gateway): gate session root projections
20 lines
802 B
TypeScript
20 lines
802 B
TypeScript
import type { PluginCommandContext } from "openclaw/plugin-sdk/plugin-entry";
|
|
|
|
type CodexHostMutationAuthContext = Pick<
|
|
PluginCommandContext,
|
|
"gatewayClientScopes" | "senderIsOwner"
|
|
>;
|
|
|
|
export const CODEX_NATIVE_EXECUTION_AUTH_ERROR =
|
|
"Only an owner or operator.admin can control Codex native execution.";
|
|
export const CODEX_FULL_PERMISSIONS_AUTH_ERROR =
|
|
"Full Codex permissions require operator.admin. Choose Admin in the Control UI permission picker, or use an admin-authenticated CLI.";
|
|
|
|
export function hasCodexAdminScope(ctx: CodexHostMutationAuthContext): boolean {
|
|
return ctx.gatewayClientScopes?.includes("operator.admin") === true;
|
|
}
|
|
|
|
export function canMutateCodexHost(ctx: CodexHostMutationAuthContext): boolean {
|
|
return ctx.senderIsOwner === true || hasCodexAdminScope(ctx);
|
|
}
|