From 532dc7f24043f0fb5f7c7b868095ee156e8c99b7 Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Tue, 27 Oct 2026 04:42:12 -0700 Subject: [PATCH] refactor(mobile): group native chat tool transcript modules (#34399) --- .../src/session/MobileNativeChatDiffCard.tsx | 5 ++- .../session/MobileNativeChatFullContent.tsx | 2 +- .../MobileNativeChatMessage.copy.test.tsx | 2 +- ...bileNativeChatMessage.paced-reveal.test.ts | 2 +- .../src/session/MobileNativeChatMessage.tsx | 4 +-- .../mobile-native-chat-reading-place.test.tsx | 4 +-- .../input/MobileNativeChatTaskList.tsx | 2 +- .../MobileNativeChatSubagentGroup.tsx | 12 +++---- .../transcript}/MobileNativeChatToolIcon.tsx | 2 +- .../transcript}/MobileNativeChatToolLine.tsx | 32 ++++++++--------- .../MobileNativeChatToolRun.identity.test.tsx | 6 ++-- .../MobileNativeChatToolRun.test.tsx | 22 ++++++------ .../transcript}/MobileNativeChatToolRun.tsx | 35 +++++++++---------- .../mobile-native-chat-tool-run-props.ts | 2 +- .../mobile-native-chat-tool-styles.ts | 4 +-- .../mobile-native-chat-tool-summary.test.ts | 2 +- ...e-chat-session-tool-result-paging.test.tsx | 12 +++---- 17 files changed, 78 insertions(+), 72 deletions(-) rename mobile/src/session/{ => native-chat/transcript}/MobileNativeChatSubagentGroup.tsx (92%) rename mobile/src/session/{ => native-chat/transcript}/MobileNativeChatToolIcon.tsx (87%) rename mobile/src/session/{ => native-chat/transcript}/MobileNativeChatToolLine.tsx (86%) rename mobile/src/session/{ => native-chat/transcript}/MobileNativeChatToolRun.identity.test.tsx (96%) rename mobile/src/session/{ => native-chat/transcript}/MobileNativeChatToolRun.test.tsx (95%) rename mobile/src/session/{ => native-chat/transcript}/MobileNativeChatToolRun.tsx (89%) rename mobile/src/session/{ => native-chat/transcript}/mobile-native-chat-tool-run-props.ts (94%) rename mobile/src/session/{ => native-chat/transcript}/mobile-native-chat-tool-styles.ts (96%) rename mobile/src/session/{ => native-chat/transcript}/mobile-native-chat-tool-summary.test.ts (84%) rename mobile/src/session/{ => native-chat/transcript}/use-mobile-native-chat-session-tool-result-paging.test.tsx (92%) diff --git a/mobile/src/session/MobileNativeChatDiffCard.tsx b/mobile/src/session/MobileNativeChatDiffCard.tsx index 2009a63e983..08b3e0ba316 100644 --- a/mobile/src/session/MobileNativeChatDiffCard.tsx +++ b/mobile/src/session/MobileNativeChatDiffCard.tsx @@ -16,7 +16,10 @@ import { MobileSourceCopyButton } from '../components/MobileSourceCopyButton' import { colors } from '../theme/mobile-theme' import { useMobileNativeChatOpenedDetail } from './mobile-native-chat-opened-detail' import { useMobileNativeChatDisclosure } from './mobile-native-chat-disclosure-store' -import { toolStyles as styles, toolType } from './mobile-native-chat-tool-styles' +import { + toolStyles as styles, + toolType +} from './native-chat/transcript/mobile-native-chat-tool-styles' function baseName(path: string): string { return path.split(/[\\/]/).at(-1) || path diff --git a/mobile/src/session/MobileNativeChatFullContent.tsx b/mobile/src/session/MobileNativeChatFullContent.tsx index 3defffb5224..8cbf69c74f0 100644 --- a/mobile/src/session/MobileNativeChatFullContent.tsx +++ b/mobile/src/session/MobileNativeChatFullContent.tsx @@ -14,7 +14,7 @@ import type { } from '../../../src/shared/agent-session-journal-types' import { INLINE_TEXT_SELECTION } from '../components/inline-text-selection' import { styles } from './mobile-native-chat-message-styles' -import { toolStyles } from './mobile-native-chat-tool-styles' +import { toolStyles } from './native-chat/transcript/mobile-native-chat-tool-styles' import { MobileNativeChatOwnedScrollView } from './MobileNativeChatOwnedScrollView' import { MobileNativeChatItemSourceContext, diff --git a/mobile/src/session/MobileNativeChatMessage.copy.test.tsx b/mobile/src/session/MobileNativeChatMessage.copy.test.tsx index ee56d8cc4cb..4b3209aed0d 100644 --- a/mobile/src/session/MobileNativeChatMessage.copy.test.tsx +++ b/mobile/src/session/MobileNativeChatMessage.copy.test.tsx @@ -25,7 +25,7 @@ vi.mock('./MobileNativeChatMessageActionsSheet', () => ({ })) vi.mock('./MobileNativeChatReasoningRow', () => ({ MobileNativeChatReasoningRow: 'Reasoning' })) vi.mock('./MobileNativeChatTurnStatus', () => ({ MobileNativeChatTurnStatus: 'TurnStatus' })) -vi.mock('./MobileNativeChatToolRun', () => ({ ToolRun: 'ToolRun' })) +vi.mock('./native-chat/transcript/MobileNativeChatToolRun', () => ({ ToolRun: 'ToolRun' })) import { MobileNativeChatMessage } from './MobileNativeChatMessage' import { MobileNativeChatLongPressContent } from './MobileNativeChatLongPressContent' diff --git a/mobile/src/session/MobileNativeChatMessage.paced-reveal.test.ts b/mobile/src/session/MobileNativeChatMessage.paced-reveal.test.ts index 34f46458932..d074326ed1e 100644 --- a/mobile/src/session/MobileNativeChatMessage.paced-reveal.test.ts +++ b/mobile/src/session/MobileNativeChatMessage.paced-reveal.test.ts @@ -32,7 +32,7 @@ vi.mock('./MobileNativeChatMessageActionsSheet', () => ({ })) vi.mock('./MobileNativeChatReasoningRow', () => ({ MobileNativeChatReasoningRow: 'Reasoning' })) vi.mock('./MobileNativeChatTurnStatus', () => ({ MobileNativeChatTurnStatus: 'TurnStatus' })) -vi.mock('./MobileNativeChatToolRun', () => ({ ToolRun: 'ToolRun' })) +vi.mock('./native-chat/transcript/MobileNativeChatToolRun', () => ({ ToolRun: 'ToolRun' })) import { MobileNativeChatMessage } from './MobileNativeChatMessage' diff --git a/mobile/src/session/MobileNativeChatMessage.tsx b/mobile/src/session/MobileNativeChatMessage.tsx index ff971abee0b..ff07ce21816 100644 --- a/mobile/src/session/MobileNativeChatMessage.tsx +++ b/mobile/src/session/MobileNativeChatMessage.tsx @@ -40,8 +40,8 @@ import { nativeChatAskRunSubject } from '../../../src/shared/native-chat/input/native-chat-ask-row' import type { NativeChatResolvedPrompt } from '../../../src/shared/native-chat-resolution-receipt' -import { MobileNativeChatSubagentGroup } from './MobileNativeChatSubagentGroup' -import { ToolRun } from './MobileNativeChatToolRun' +import { MobileNativeChatSubagentGroup } from './native-chat/transcript/MobileNativeChatSubagentGroup' +import { ToolRun } from './native-chat/transcript/MobileNativeChatToolRun' import type { NativeChatTurnStatus } from './use-mobile-native-chat-turn-status' import { styles } from './mobile-native-chat-message-styles' import { agentMessageAttribution } from './mobile-agent-message-attribution' diff --git a/mobile/src/session/mobile-native-chat-reading-place.test.tsx b/mobile/src/session/mobile-native-chat-reading-place.test.tsx index dce2b5df7fe..3d1454c5642 100644 --- a/mobile/src/session/mobile-native-chat-reading-place.test.tsx +++ b/mobile/src/session/mobile-native-chat-reading-place.test.tsx @@ -18,7 +18,7 @@ import { mobileNativeChatRowId } from './mobile-native-chat-reading-place' import { MobileNativeChatPageList } from './MobileNativeChatPageList' -import { ToolRun } from './MobileNativeChatToolRun' +import { ToolRun } from './native-chat/transcript/MobileNativeChatToolRun' import { useMobileNativeChatTurnDisclosure } from './use-mobile-native-chat-turn-disclosure' const platform = vi.hoisted(() => ({ OS: 'web' })) @@ -65,7 +65,7 @@ vi.mock('lucide-react-native', () => { const rest = ['MessageSquareMore', 'Pencil', 'Plug', 'Search', 'SquareTerminal', 'Wrench'] return Object.fromEntries([...names, ...more, ...rest].map((name) => [name, icon])) }) -vi.mock('./mobile-native-chat-tool-styles', () => ({ +vi.mock('./native-chat/transcript/mobile-native-chat-tool-styles', () => ({ toolStyles: {}, toolType: () => ({ row: {}, meta: {}, code: {} }) })) diff --git a/mobile/src/session/native-chat/input/MobileNativeChatTaskList.tsx b/mobile/src/session/native-chat/input/MobileNativeChatTaskList.tsx index 6397fb7a5bd..2c6f67d92a8 100644 --- a/mobile/src/session/native-chat/input/MobileNativeChatTaskList.tsx +++ b/mobile/src/session/native-chat/input/MobileNativeChatTaskList.tsx @@ -10,7 +10,7 @@ import { } from '../../../../../src/shared/native-chat/input/native-chat-task-list' import { colors } from '../../../theme/mobile-theme' import { useMobileNativeChatOpenedDetail } from '../../mobile-native-chat-opened-detail' -import { toolStyles as styles, toolType } from '../../mobile-native-chat-tool-styles' +import { toolStyles as styles, toolType } from '../transcript/mobile-native-chat-tool-styles' import { useMobileNativeChatDisclosure } from '../../mobile-native-chat-disclosure-store' const STATUS_WORD: Record = { diff --git a/mobile/src/session/MobileNativeChatSubagentGroup.tsx b/mobile/src/session/native-chat/transcript/MobileNativeChatSubagentGroup.tsx similarity index 92% rename from mobile/src/session/MobileNativeChatSubagentGroup.tsx rename to mobile/src/session/native-chat/transcript/MobileNativeChatSubagentGroup.tsx index ee307f31553..e2dc566801d 100644 --- a/mobile/src/session/MobileNativeChatSubagentGroup.tsx +++ b/mobile/src/session/native-chat/transcript/MobileNativeChatSubagentGroup.tsx @@ -5,15 +5,15 @@ import { nativeChatSubagentGroupHeader, sayNativeChatSubagentGroupEnglish as say, subagentStateLabel -} from '../../../src/shared/native-chat-subagent-group-header' -import { normalizeSubagentState } from '../../../src/shared/native-chat-subagent-summary' -import { formatNativeChatDuration } from '../../../src/shared/native-chat-turn-status' +} from '../../../../../src/shared/native-chat-subagent-group-header' +import { normalizeSubagentState } from '../../../../../src/shared/native-chat-subagent-summary' +import { formatNativeChatDuration } from '../../../../../src/shared/native-chat-turn-status' import type { NativeChatSubagentGroupBlock, NativeChatSubagentState -} from '../../../src/shared/native-chat-types' -import { useNow } from '../hooks/use-now' -import { colors, spacing, typography } from '../theme/mobile-theme' +} from '../../../../../src/shared/native-chat-types' +import { useNow } from '../../../hooks/use-now' +import { colors, spacing, typography } from '../../../theme/mobile-theme' function stateDotStyle(state: NativeChatSubagentState): ViewStyle { switch (state) { diff --git a/mobile/src/session/MobileNativeChatToolIcon.tsx b/mobile/src/session/native-chat/transcript/MobileNativeChatToolIcon.tsx similarity index 87% rename from mobile/src/session/MobileNativeChatToolIcon.tsx rename to mobile/src/session/native-chat/transcript/MobileNativeChatToolIcon.tsx index b3777bba739..a7f56a85031 100644 --- a/mobile/src/session/MobileNativeChatToolIcon.tsx +++ b/mobile/src/session/native-chat/transcript/MobileNativeChatToolIcon.tsx @@ -13,7 +13,7 @@ import { Wrench, type LucideIcon } from 'lucide-react-native' -import type { NativeChatToolIconName } from '../../../src/shared/native-chat/tools/native-chat-tool-icon' +import type { NativeChatToolIconName } from '../../../../../src/shared/native-chat/tools/native-chat-tool-icon' const GLYPHS: Record = { eye: Eye, diff --git a/mobile/src/session/MobileNativeChatToolLine.tsx b/mobile/src/session/native-chat/transcript/MobileNativeChatToolLine.tsx similarity index 86% rename from mobile/src/session/MobileNativeChatToolLine.tsx rename to mobile/src/session/native-chat/transcript/MobileNativeChatToolLine.tsx index 089a58d58d0..1f2815e6f66 100644 --- a/mobile/src/session/MobileNativeChatToolLine.tsx +++ b/mobile/src/session/native-chat/transcript/MobileNativeChatToolLine.tsx @@ -1,38 +1,38 @@ import { useMemo } from 'react' import { Pressable, Text, View } from 'react-native' -import { MobileNativeChatOwnedScrollView } from './MobileNativeChatOwnedScrollView' +import { MobileNativeChatOwnedScrollView } from '../../MobileNativeChatOwnedScrollView' import { ChevronRight } from 'lucide-react-native' -import { agentJournalToolCallLifecycle } from '../../../src/shared/agent-journal-tool-call-lifecycle' +import { agentJournalToolCallLifecycle } from '../../../../../src/shared/agent-journal-tool-call-lifecycle' import { diffFromText, diffFromToolCall -} from '../../../src/shared/native-chat/tools/native-chat-diff' -import type { NativeChatDiffLine } from '../../../src/shared/native-chat/tools/native-chat-diff' +} from '../../../../../src/shared/native-chat/tools/native-chat-diff' +import type { NativeChatDiffLine } from '../../../../../src/shared/native-chat/tools/native-chat-diff' import { formatToolDuration, mcpToolIdentity, toolWebSearchResults, type NativeChatWebSearchResult -} from '../../../src/shared/native-chat/tools/native-chat-tool-identity' -import { nativeChatToolIconName } from '../../../src/shared/native-chat/tools/native-chat-tool-icon' +} from '../../../../../src/shared/native-chat/tools/native-chat-tool-identity' +import { nativeChatToolIconName } from '../../../../../src/shared/native-chat/tools/native-chat-tool-icon' import { NATIVE_CHAT_TOOL_ROW_VERB_COPY, nativeChatToolLineLabel -} from '../../../src/shared/native-chat/tools/native-chat-tool-line-label' +} from '../../../../../src/shared/native-chat/tools/native-chat-tool-line-label' import { isToolCallBlock, type NativeChatToolCallBlock, type NativeChatToolResultBlock -} from '../../../src/shared/native-chat-types' -import { MobileSyntaxSegments } from '../components/MobileSyntaxSegments' -import { INLINE_TEXT_SELECTION } from '../components/inline-text-selection' -import { openExternalLink } from '../platform/external-link' -import { colors } from '../theme/mobile-theme' -import { highlightMobileCode } from './mobile-file-syntax' +} from '../../../../../src/shared/native-chat-types' +import { MobileSyntaxSegments } from '../../../components/MobileSyntaxSegments' +import { INLINE_TEXT_SELECTION } from '../../../components/inline-text-selection' +import { openExternalLink } from '../../../platform/external-link' +import { colors } from '../../../theme/mobile-theme' +import { highlightMobileCode } from '../../mobile-file-syntax' import { MobileNativeChatToolGlyph } from './MobileNativeChatToolIcon' -import { MobileNativeChatToolOutput } from './MobileNativeChatFullContent' -import { useMobileNativeChatOpenedDetail } from './mobile-native-chat-opened-detail' -import { useMobileNativeChatDisclosure } from './mobile-native-chat-disclosure-store' +import { MobileNativeChatToolOutput } from '../../MobileNativeChatFullContent' +import { useMobileNativeChatOpenedDetail } from '../../mobile-native-chat-opened-detail' +import { useMobileNativeChatDisclosure } from '../../mobile-native-chat-disclosure-store' import { toolStyles as styles, toolType } from './mobile-native-chat-tool-styles' const RESULT_LABEL = 'Result' diff --git a/mobile/src/session/MobileNativeChatToolRun.identity.test.tsx b/mobile/src/session/native-chat/transcript/MobileNativeChatToolRun.identity.test.tsx similarity index 96% rename from mobile/src/session/MobileNativeChatToolRun.identity.test.tsx rename to mobile/src/session/native-chat/transcript/MobileNativeChatToolRun.identity.test.tsx index a32c3a09e4c..825b832ebc9 100644 --- a/mobile/src/session/MobileNativeChatToolRun.identity.test.tsx +++ b/mobile/src/session/native-chat/transcript/MobileNativeChatToolRun.identity.test.tsx @@ -1,7 +1,7 @@ import { createElement } from 'react' import { act, create, type ReactTestRenderer } from 'react-test-renderer' import { afterEach, expect, it, vi } from 'vitest' -import type { NativeChatBlock } from '../../../src/shared/native-chat-types' +import type { NativeChatBlock } from '../../../../../src/shared/native-chat-types' vi.mock('react-native', () => ({ Animated: { @@ -40,7 +40,9 @@ vi.mock('lucide-react-native', () => ({ Wrench: () => null })) -vi.mock('../components/MobileSourceCopyButton', () => ({ MobileSourceCopyButton: 'CopyButton' })) +vi.mock('../../../components/MobileSourceCopyButton', () => ({ + MobileSourceCopyButton: 'CopyButton' +})) import { ToolRun } from './MobileNativeChatToolRun' diff --git a/mobile/src/session/MobileNativeChatToolRun.test.tsx b/mobile/src/session/native-chat/transcript/MobileNativeChatToolRun.test.tsx similarity index 95% rename from mobile/src/session/MobileNativeChatToolRun.test.tsx rename to mobile/src/session/native-chat/transcript/MobileNativeChatToolRun.test.tsx index 565242d550b..d738141d9e5 100644 --- a/mobile/src/session/MobileNativeChatToolRun.test.tsx +++ b/mobile/src/session/native-chat/transcript/MobileNativeChatToolRun.test.tsx @@ -1,15 +1,15 @@ import { createElement, type ReactNode } from 'react' import { act, create, type ReactTestInstance, type ReactTestRenderer } from 'react-test-renderer' import { afterEach, describe, expect, it, vi } from 'vitest' -import type { AgentJournalToolCallItem } from '../../../src/shared/agent-session-journal-types' -import { MAX_TOOL_DETAIL_LENGTH } from '../../../src/shared/native-chat/tools/native-chat-tool-summary' -import { projectStructuredItemToNativeChat } from '../../../src/shared/structured-agent-session-projection' +import type { AgentJournalToolCallItem } from '../../../../../src/shared/agent-session-journal-types' +import { MAX_TOOL_DETAIL_LENGTH } from '../../../../../src/shared/native-chat/tools/native-chat-tool-summary' +import { projectStructuredItemToNativeChat } from '../../../../../src/shared/structured-agent-session-projection' import type { NativeChatBlock, NativeChatMessage, NativeChatToolCallBlock -} from '../../../src/shared/native-chat-types' -import { colors } from '../theme/mobile-theme' +} from '../../../../../src/shared/native-chat-types' +import { colors } from '../../../theme/mobile-theme' const scrolls = vi.hoisted(() => ({ toEnd: vi.fn(), to: vi.fn() })) @@ -67,16 +67,18 @@ vi.mock('lucide-react-native', () => ({ Wrench: 'Wrench' })) -vi.mock('../components/MobileSourceCopyButton', () => ({ MobileSourceCopyButton: 'CopyButton' })) -vi.mock('../platform/external-link', () => ({ openExternalLink: vi.fn() })) -vi.mock('../components/inline-text-selection', () => ({ INLINE_TEXT_SELECTION: false })) +vi.mock('../../../components/MobileSourceCopyButton', () => ({ + MobileSourceCopyButton: 'CopyButton' +})) +vi.mock('../../../platform/external-link', () => ({ openExternalLink: vi.fn() })) +vi.mock('../../../components/inline-text-selection', () => ({ INLINE_TEXT_SELECTION: false })) -import { openExternalLink } from '../platform/external-link' +import { openExternalLink } from '../../../platform/external-link' import { ToolRun } from './MobileNativeChatToolRun' import { MobileNativeChatDisclosureContext, useMobileNativeChatDisclosures -} from './mobile-native-chat-disclosure-store' +} from '../../mobile-native-chat-disclosure-store' describe('ToolRun', () => { let renderer: ReactTestRenderer | null = null diff --git a/mobile/src/session/MobileNativeChatToolRun.tsx b/mobile/src/session/native-chat/transcript/MobileNativeChatToolRun.tsx similarity index 89% rename from mobile/src/session/MobileNativeChatToolRun.tsx rename to mobile/src/session/native-chat/transcript/MobileNativeChatToolRun.tsx index 6d9ca0768c7..556ea614ba4 100644 --- a/mobile/src/session/MobileNativeChatToolRun.tsx +++ b/mobile/src/session/native-chat/transcript/MobileNativeChatToolRun.tsx @@ -23,42 +23,41 @@ import { describeLatestToolCall, NATIVE_CHAT_TOOL_ACTIVITY_COPY, selectActiveToolCall -} from '../../../src/shared/native-chat/tools/native-chat-tool-activity' -import { nativeChatToolRunIconName } from '../../../src/shared/native-chat/tools/native-chat-tool-icon' -import { nativeChatToolLineIdentity } from '../../../src/shared/native-chat/tools/native-chat-tool-line-identity' -import { pairNativeChatToolResults } from '../../../src/shared/native-chat/tools/native-chat-tool-pairing' -import { nativeChatToolRunOutcome } from '../../../src/shared/native-chat/tools/native-chat-tool-run-outcome' +} from '../../../../../src/shared/native-chat/tools/native-chat-tool-activity' +import { nativeChatToolRunIconName } from '../../../../../src/shared/native-chat/tools/native-chat-tool-icon' +import { nativeChatToolLineIdentity } from '../../../../../src/shared/native-chat/tools/native-chat-tool-line-identity' +import { pairNativeChatToolResults } from '../../../../../src/shared/native-chat/tools/native-chat-tool-pairing' +import { nativeChatToolRunOutcome } from '../../../../../src/shared/native-chat/tools/native-chat-tool-run-outcome' import { NATIVE_CHAT_TOOL_RUN_SENTENCE_ENGLISH, nativeChatToolRunSentence -} from '../../../src/shared/native-chat/tools/native-chat-tool-run-sentence' -import { countToolCalls } from '../../../src/shared/native-chat/tools/native-chat-tool-summary' -import { buildEditCards } from '../../../src/shared/native-chat/tools/native-chat-edit-cards' +} from '../../../../../src/shared/native-chat/tools/native-chat-tool-run-sentence' +import { countToolCalls } from '../../../../../src/shared/native-chat/tools/native-chat-tool-summary' +import { buildEditCards } from '../../../../../src/shared/native-chat/tools/native-chat-edit-cards' import { isToolCallBlock, type NativeChatBlock, type NativeChatToolCallBlock -} from '../../../src/shared/native-chat-types' -import { buildNativeChatTaskListRows } from '../../../src/shared/native-chat/input/native-chat-task-list-history' -import { colors } from '../theme/mobile-theme' +} from '../../../../../src/shared/native-chat-types' +import { buildNativeChatTaskListRows } from '../../../../../src/shared/native-chat/input/native-chat-task-list-history' +import { colors } from '../../../theme/mobile-theme' import { MobileNativeChatToolGlyph } from './MobileNativeChatToolIcon' import { MobileNativeChatToolLine } from './MobileNativeChatToolLine' -import { MobileNativeChatDiffCard } from './MobileNativeChatDiffCard' -import { MobileNativeChatTaskList } from './native-chat/input/MobileNativeChatTaskList' -import { MobileNativeChatOpenedDetailContext } from './mobile-native-chat-opened-detail' +import { MobileNativeChatDiffCard } from '../../MobileNativeChatDiffCard' +import { MobileNativeChatTaskList } from '../input/MobileNativeChatTaskList' +import { MobileNativeChatOpenedDetailContext } from '../../mobile-native-chat-opened-detail' import { MAX_DISCLOSURES, MobileNativeChatDisclosureContext, useMobileNativeChatDisclosure -} from './mobile-native-chat-disclosure-store' +} from '../../mobile-native-chat-disclosure-store' import { toolStyles as styles, toolType } from './mobile-native-chat-tool-styles' -import { mobileNativeChatMemberId } from './mobile-native-chat-reading-place' -import { MobileNativeChatOwnedScrollView } from './MobileNativeChatOwnedScrollView' +import { mobileNativeChatMemberId } from '../../mobile-native-chat-reading-place' +import { MobileNativeChatOwnedScrollView } from '../../MobileNativeChatOwnedScrollView' import type { MobileNativeChatToolRunAsides, MobileNativeChatToolRunProps } from './mobile-native-chat-tool-run-props' -export type { MobileNativeChatToolRunAsides } from './mobile-native-chat-tool-run-props' /** Desktop's 18rem: an opened run lists this much before it scrolls in place. */ const MEMBERS_MIN_HEIGHT = 288 diff --git a/mobile/src/session/mobile-native-chat-tool-run-props.ts b/mobile/src/session/native-chat/transcript/mobile-native-chat-tool-run-props.ts similarity index 94% rename from mobile/src/session/mobile-native-chat-tool-run-props.ts rename to mobile/src/session/native-chat/transcript/mobile-native-chat-tool-run-props.ts index dd1fd837326..1f0f077b12b 100644 --- a/mobile/src/session/mobile-native-chat-tool-run-props.ts +++ b/mobile/src/session/native-chat/transcript/mobile-native-chat-tool-run-props.ts @@ -1,7 +1,7 @@ import type { NativeChatBlock, NativeChatToolCallBlock -} from '../../../src/shared/native-chat-types' +} from '../../../../../src/shared/native-chat-types' export type MobileNativeChatToolRunAsides = { before: ReadonlyMap diff --git a/mobile/src/session/mobile-native-chat-tool-styles.ts b/mobile/src/session/native-chat/transcript/mobile-native-chat-tool-styles.ts similarity index 96% rename from mobile/src/session/mobile-native-chat-tool-styles.ts rename to mobile/src/session/native-chat/transcript/mobile-native-chat-tool-styles.ts index e355a3f16f4..b18a10edf8d 100644 --- a/mobile/src/session/mobile-native-chat-tool-styles.ts +++ b/mobile/src/session/native-chat/transcript/mobile-native-chat-tool-styles.ts @@ -1,6 +1,6 @@ import { Platform, StyleSheet } from 'react-native' -import { colors, radii, spacing, typography } from '../theme/mobile-theme' -import { MONO_SIZE, scaledType } from './mobile-native-chat-message-styles' +import { colors, radii, spacing, typography } from '../../../theme/mobile-theme' +import { MONO_SIZE, scaledType } from '../../mobile-native-chat-message-styles' export function toolType(fontScale: number) { return { diff --git a/mobile/src/session/mobile-native-chat-tool-summary.test.ts b/mobile/src/session/native-chat/transcript/mobile-native-chat-tool-summary.test.ts similarity index 84% rename from mobile/src/session/mobile-native-chat-tool-summary.test.ts rename to mobile/src/session/native-chat/transcript/mobile-native-chat-tool-summary.test.ts index 52d4b47a9ca..6def23b82ce 100644 --- a/mobile/src/session/mobile-native-chat-tool-summary.test.ts +++ b/mobile/src/session/native-chat/transcript/mobile-native-chat-tool-summary.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it, vi } from 'vitest' -import { summarizeToolInput } from '../../../src/shared/native-chat/tools/native-chat-tool-summary' +import { summarizeToolInput } from '../../../../../src/shared/native-chat/tools/native-chat-tool-summary' describe('summarizeToolInput', () => { it('does not traverse an unbounded tool-input object for a short preview', () => { diff --git a/mobile/src/session/use-mobile-native-chat-session-tool-result-paging.test.tsx b/mobile/src/session/native-chat/transcript/use-mobile-native-chat-session-tool-result-paging.test.tsx similarity index 92% rename from mobile/src/session/use-mobile-native-chat-session-tool-result-paging.test.tsx rename to mobile/src/session/native-chat/transcript/use-mobile-native-chat-session-tool-result-paging.test.tsx index 01ef8c56fb6..a30a06ad834 100644 --- a/mobile/src/session/use-mobile-native-chat-session-tool-result-paging.test.tsx +++ b/mobile/src/session/native-chat/transcript/use-mobile-native-chat-session-tool-result-paging.test.tsx @@ -1,15 +1,15 @@ import { createElement } from 'react' import { act, create, type ReactTestRenderer } from 'react-test-renderer' import { afterEach, describe, expect, it, vi } from 'vitest' -import { pairToolBlocks } from '../../../src/shared/native-chat/tools/native-chat-tool-pairs' -import { nativeChatTurnMembership } from '../../../src/shared/native-chat-turn-membership' -import type { NativeChatMessage } from '../../../src/shared/native-chat-types' -import type { RpcClient } from '../transport/rpc-client' -import { foldMobileNativeChatMessages } from './mobile-native-chat-render-data' +import { pairToolBlocks } from '../../../../../src/shared/native-chat/tools/native-chat-tool-pairs' +import { nativeChatTurnMembership } from '../../../../../src/shared/native-chat-turn-membership' +import type { NativeChatMessage } from '../../../../../src/shared/native-chat-types' +import type { RpcClient } from '../../../transport/rpc-client' +import { foldMobileNativeChatMessages } from '../../mobile-native-chat-render-data' import { useMobileNativeChatSession, type MobileNativeChatSession -} from './use-mobile-native-chat-session' +} from '../../use-mobile-native-chat-session' function message( id: string,