11import { Text } from "@components/text";
2+ import { DEFAULT_CLAUDE_EXECUTION_MODE } from "@posthog/core/sessions/executionModes";
23import {
34 countUserMessages,
45 getSessionActivityPhase,
56} from "@posthog/core/sessions/sessionActivity";
67import { isTaskRunning } from "@posthog/core/tasks/taskArchive";
7- import type { Task } from "@posthog/shared";
8+ import {
9+ DEFAULT_GATEWAY_MODEL,
10+ DEFAULT_REASONING_EFFORT,
11+ type ExecutionMode,
12+ getReasoningEffortOptions,
13+ type SupportedReasoningEffort,
14+ serializeCloudPrompt,
15+ type Task,
16+ } from "@posthog/shared";
817import { useQueryClient } from "@tanstack/react-query";
918import * as Haptics from "expo-haptics";
1019import { useLocalSearchParams, useRouter } from "expo-router";
@@ -20,24 +29,14 @@ import { useReanimatedKeyboardAnimation } from "react-native-keyboard-controller
2029import Animated, { useAnimatedStyle } from "react-native-reanimated";
2130import { FloatingBackButton } from "@/components/FloatingBackButton";
2231import { usePreferencesStore } from "@/features/preferences/stores/preferencesStore";
23- import { runTaskInCloud } from "@/features/tasks/api";
2432import { CustomImageBadge } from "@/features/tasks/components/CustomImageBadge";
2533import { FloatingTaskHeader } from "@/features/tasks/components/FloatingTaskHeader";
2634import { PrDiffStatsBadge } from "@/features/tasks/components/PrDiffStatsBadge";
2735import { PrStatusBadge } from "@/features/tasks/components/PrStatusBadge";
2836import { StopRunButton } from "@/features/tasks/components/StopRunButton";
2937import { TaskSessionView } from "@/features/tasks/components/TaskSessionView";
3038import { buildCloudPromptBlocks } from "@/features/tasks/composer/attachments/buildCloudPrompt";
31- import { serializeCloudPrompt } from "@/features/tasks/composer/attachments/cloudPrompt";
3239import type { PendingAttachment } from "@/features/tasks/composer/attachments/types";
33- import {
34- DEFAULT_EXECUTION_MODE,
35- DEFAULT_MODEL,
36- DEFAULT_REASONING,
37- type ExecutionMode,
38- modelSupportsReasoning,
39- type ReasoningEffort,
40- } from "@/features/tasks/composer/options";
4140import { QueuedMessagesDock } from "@/features/tasks/composer/QueuedMessagesDock";
4241import { TaskChatComposer } from "@/features/tasks/composer/TaskChatComposer";
4342import {
@@ -169,10 +168,10 @@ export default function TaskDetailScreen() {
169168 string | undefined
170169 >();
171170 const composerMode: ExecutionMode =
172- composerConfig?.mode ?? DEFAULT_EXECUTION_MODE ;
173- const composerModel = composerConfig?.model ?? DEFAULT_MODEL ;
174- const composerReasoning: ReasoningEffort =
175- composerConfig?.reasoning ?? DEFAULT_REASONING ;
171+ composerConfig?.mode ?? DEFAULT_CLAUDE_EXECUTION_MODE ;
172+ const composerModel = composerConfig?.model ?? DEFAULT_GATEWAY_MODEL ;
173+ const composerReasoning: SupportedReasoningEffort =
174+ composerConfig?.reasoning ?? DEFAULT_REASONING_EFFORT ;
176175
177176 const messagingMode = useMessagingMode(taskId);
178177 const queuedCount = useQueuedCount(taskId);
@@ -312,16 +311,21 @@ export default function TaskDetailScreen() {
312311 )
313312 : text;
314313
315- const supportsReasoning = modelSupportsReasoning(composerModel);
316- const updatedTask = await runTaskInCloud(taskId, {
317- resumeFromRunId: task.latest_run?.id,
318- pendingUserMessage,
319- runtimeAdapter: "claude",
320- model: composerModel,
321- reasoningEffort: supportsReasoning ? composerReasoning : undefined,
322- initialPermissionMode: composerMode,
323- rtkEnabled: usePreferencesStore.getState().rtkEnabledCloud,
324- });
314+ const supportsReasoning =
315+ getReasoningEffortOptions("claude", composerModel) !== null;
316+ const updatedTask = await getPostHogApiClient().runTaskInCloud(
317+ taskId,
318+ undefined,
319+ {
320+ resumeFromRunId: task.latest_run?.id,
321+ pendingUserMessage,
322+ adapter: "claude",
323+ model: composerModel,
324+ reasoningLevel: supportsReasoning ? composerReasoning : undefined,
325+ initialPermissionMode: composerMode,
326+ rtkEnabled: usePreferencesStore.getState().rtkEnabledCloud,
327+ },
328+ );
325329 setTask(updatedTask);
326330 await connectToTask(updatedTask);
327331 updateTaskInCache(updatedTask);
@@ -506,7 +510,7 @@ export default function TaskDetailScreen() {
506510 );
507511
508512 const handleReasoningChange = useCallback(
509- (value: ReasoningEffort ) => {
513+ (value: SupportedReasoningEffort ) => {
510514 if (!taskId) return;
511515 setComposerConfig(taskId, { reasoning: value });
512516 setConfigOption(taskId, "effort", value).catch(() => {});
@@ -559,10 +563,14 @@ export default function TaskDetailScreen() {
559563 setRetrying(true);
560564 disconnectFromTask(taskId);
561565
562- const updatedTask = await runTaskInCloud(taskId, {
563- resumeFromRunId: task.latest_run?.id,
564- rtkEnabled: usePreferencesStore.getState().rtkEnabledCloud,
565- });
566+ const updatedTask = await getPostHogApiClient().runTaskInCloud(
567+ taskId,
568+ undefined,
569+ {
570+ resumeFromRunId: task.latest_run?.id,
571+ rtkEnabled: usePreferencesStore.getState().rtkEnabledCloud,
572+ },
573+ );
566574 setTask(updatedTask);
567575 await connectToTask(updatedTask);
568576 updateTaskInCache(updatedTask);
0 commit comments