Skip to content

Commit 50d2e71

Browse files
authored
chore(agent): restore provider-specific mode definitions (#1688)
this restores the canonical mode sets and shared types for Claude and Codex in the agent package. shared agent-packaged drifter so the vailable modes sets didn't reflect original provider behaviour.
1 parent 7dd1cd3 commit 50d2e71

2 files changed

Lines changed: 32 additions & 4 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { describe, expect, it } from "vitest";
2+
import { getAvailableCodexModes, getAvailableModes } from "./execution-mode";
3+
4+
describe("execution modes", () => {
5+
it("includes auto-accept permissions for claude sessions", () => {
6+
expect(getAvailableModes().map((mode) => mode.id)).toEqual([
7+
"default",
8+
"acceptEdits",
9+
"plan",
10+
"bypassPermissions",
11+
]);
12+
});
13+
14+
it("includes full access for codex sessions", () => {
15+
expect(getAvailableCodexModes().map((mode) => mode.id)).toEqual([
16+
"read-only",
17+
"auto",
18+
"full-access",
19+
]);
20+
});
21+
});

packages/agent/src/execution-mode.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ const availableModes: ModeInfo[] = [
3535
if (ALLOW_BYPASS) {
3636
availableModes.push({
3737
id: "bypassPermissions",
38-
name: "Bypass Permissions",
39-
description: "Bypass all permission prompts",
38+
name: "Auto-accept Permissions",
39+
description: "Auto-accept all permission requests",
4040
});
4141
}
4242

@@ -51,8 +51,11 @@ export const CODE_EXECUTION_MODES = [
5151

5252
export type CodeExecutionMode = (typeof CODE_EXECUTION_MODES)[number];
5353

54+
export function isCodeExecutionMode(mode: string): mode is CodeExecutionMode {
55+
return (CODE_EXECUTION_MODES as readonly string[]).includes(mode);
56+
}
57+
5458
export function getAvailableModes(): ModeInfo[] {
55-
// When IS_ROOT, do not allow bypassPermissions
5659
return IS_ROOT
5760
? availableModes.filter((m) => m.id !== "bypassPermissions")
5861
: availableModes;
@@ -67,6 +70,10 @@ export type CodexNativeMode = (typeof CODEX_NATIVE_MODES)[number];
6770
/** Union of all permission mode IDs across adapters */
6871
export type PermissionMode = CodeExecutionMode | CodexNativeMode;
6972

73+
export function isCodexNativeMode(mode: string): mode is CodexNativeMode {
74+
return (CODEX_NATIVE_MODES as readonly string[]).includes(mode);
75+
}
76+
7077
const codexModes: ModeInfo[] = [
7178
{
7279
id: "read-only",
@@ -84,7 +91,7 @@ if (ALLOW_BYPASS) {
8491
codexModes.push({
8592
id: "full-access",
8693
name: "Full Access",
87-
description: "Bypass all permission prompts",
94+
description: "Auto-accept all permission requests",
8895
});
8996
}
9097

0 commit comments

Comments
 (0)