Skip to content

Commit 515fcec

Browse files
fix(mobile): reuse desktop adapter defaults
Generated-By: PostHog Code Task-Id: c1bbe3cf-742b-4b24-bf96-d11a18b4cf22
1 parent d3a393d commit 515fcec

6 files changed

Lines changed: 35 additions & 13 deletions

File tree

apps/mobile/src/app/task/[id].tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import { Text } from "@components/text";
2-
import { DEFAULT_CLAUDE_EXECUTION_MODE } from "@posthog/core/sessions/executionModes";
2+
import {
3+
DEFAULT_CLAUDE_EXECUTION_MODE,
4+
getDefaultExecutionModeForAdapter,
5+
} from "@posthog/core/sessions/executionModes";
36
import {
47
countUserMessages,
58
getSessionActivityPhase,
@@ -172,6 +175,7 @@ export default function TaskDetailScreen() {
172175
>();
173176
const composerAdapter: Adapter =
174177
task?.latest_run?.runtime_adapter &&
178+
!session?.terminalStatus &&
175179
composerConfig?.adapter !== task.latest_run.runtime_adapter
176180
? task.latest_run.runtime_adapter
177181
: (composerConfig?.adapter ??
@@ -534,7 +538,7 @@ export default function TaskDetailScreen() {
534538
if (!taskId) return;
535539
setComposerConfig(taskId, {
536540
adapter: value,
537-
mode: DEFAULT_CLAUDE_EXECUTION_MODE,
541+
mode: getDefaultExecutionModeForAdapter(value),
538542
model: value === "codex" ? DEFAULT_CODEX_MODEL : DEFAULT_GATEWAY_MODEL,
539543
reasoning: DEFAULT_REASONING_EFFORT,
540544
});

apps/mobile/src/app/task/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Text } from "@components/text";
22
import {
33
DEFAULT_CLAUDE_EXECUTION_MODE,
44
getAvailableModesForAdapter,
5+
getDefaultExecutionModeForAdapter,
56
} from "@posthog/core/sessions/executionModes";
67
import {
78
type Adapter,
@@ -799,7 +800,7 @@ export default function NewTaskScreen() {
799800
const nextAdapter: Adapter =
800801
adapter === "claude" ? "codex" : "claude";
801802
setAdapter(nextAdapter);
802-
setMode(DEFAULT_CLAUDE_EXECUTION_MODE);
803+
setMode(getDefaultExecutionModeForAdapter(nextAdapter));
803804
setModel(
804805
nextAdapter === "codex"
805806
? DEFAULT_CODEX_MODEL

apps/mobile/src/features/tasks/composer/TaskChatComposer.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Text } from "@components/text";
22
import {
33
DEFAULT_CLAUDE_EXECUTION_MODE,
44
getAvailableModesForAdapter,
5+
getDefaultExecutionModeForAdapter,
56
} from "@posthog/core/sessions/executionModes";
67
import {
78
type Adapter,
@@ -451,7 +452,9 @@ export function TaskChatComposer({
451452
value={model}
452453
onChange={(v) => {
453454
if (v === SWITCH_ADAPTER_VALUE) {
454-
onAdapterChange(adapter === "claude" ? "codex" : "claude");
455+
const nextAdapter = adapter === "claude" ? "codex" : "claude";
456+
onAdapterChange(nextAdapter);
457+
onModeChange(getDefaultExecutionModeForAdapter(nextAdapter));
455458
return;
456459
}
457460
const next = resolveComposerModelChange({

packages/core/src/sessions/cloudSessionConfig.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import type { SessionConfigOption } from "@agentclientprotocol/sdk";
22
import type { Adapter, StoredLogEntry } from "@posthog/shared";
33
import {
4-
DEFAULT_CLAUDE_EXECUTION_MODE,
5-
getAvailableCodexModes,
6-
getAvailableModes,
4+
getAvailableModesForAdapter,
5+
getDefaultExecutionModeForAdapter,
76
} from "./executionModes";
87

98
/**
@@ -56,10 +55,8 @@ export function buildCloudDefaultConfigOptions(
5655
adapter: Adapter = "claude",
5756
extra: SessionConfigOption[] = [],
5857
): SessionConfigOption[] {
59-
const modes =
60-
adapter === "codex" ? getAvailableCodexModes() : getAvailableModes();
61-
const fallbackMode =
62-
adapter === "codex" ? "auto" : DEFAULT_CLAUDE_EXECUTION_MODE;
58+
const modes = getAvailableModesForAdapter(adapter);
59+
const fallbackMode = getDefaultExecutionModeForAdapter(adapter);
6360
const currentMode =
6461
typeof initialMode === "string" &&
6562
modes.some((mode) => mode.id === initialMode)

packages/core/src/sessions/executionModes.test.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import { describe, expect, it } from "vitest";
2-
import { getAvailableModesForAdapter } from "./executionModes";
2+
import {
3+
getAvailableModesForAdapter,
4+
getDefaultExecutionModeForAdapter,
5+
} from "./executionModes";
36

47
describe("getAvailableModesForAdapter", () => {
58
it.each([
@@ -11,3 +14,12 @@ describe("getAvailableModesForAdapter", () => {
1114
);
1215
});
1316
});
17+
18+
describe("getDefaultExecutionModeForAdapter", () => {
19+
it.each([
20+
["claude", "plan"],
21+
["codex", "auto"],
22+
] as const)("returns the desktop default for %s", (adapter, expected) => {
23+
expect(getDefaultExecutionModeForAdapter(adapter)).toBe(expected);
24+
});
25+
});

packages/core/src/sessions/executionModes.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ export interface ModeInfo {
77
}
88

99
export const DEFAULT_CLAUDE_EXECUTION_MODE: ExecutionMode = "plan";
10-
export const DEFAULT_CODEX_EXECUTION_MODE: ExecutionMode = "plan";
1110

1211
const availableModes: ModeInfo[] = [
1312
{
@@ -53,3 +52,9 @@ export function getAvailableModesForAdapter(
5352
): ModeInfo[] {
5453
return adapter === "codex" ? getAvailableCodexModes() : getAvailableModes();
5554
}
55+
56+
export function getDefaultExecutionModeForAdapter(
57+
adapter: "claude" | "codex",
58+
): ExecutionMode {
59+
return adapter === "codex" ? "auto" : DEFAULT_CLAUDE_EXECUTION_MODE;
60+
}

0 commit comments

Comments
 (0)