diff --git a/src/components/chat/hooks/useChatComposerState.ts b/src/components/chat/hooks/useChatComposerState.ts index 4cf8804..fa0184a 100644 --- a/src/components/chat/hooks/useChatComposerState.ts +++ b/src/components/chat/hooks/useChatComposerState.ts @@ -19,7 +19,7 @@ import type { PendingPermissionRequest, PermissionMode, Provider, -} from '../types'; +} from '../types/types'; import { useFileMentions } from './useFileMentions'; import { type SlashCommand, useSlashCommands } from './useSlashCommands'; import type { Project, ProjectSession } from '../../../types/app'; diff --git a/src/components/chat/hooks/useChatProviderState.ts b/src/components/chat/hooks/useChatProviderState.ts index e9c3f89..126d1ba 100644 --- a/src/components/chat/hooks/useChatProviderState.ts +++ b/src/components/chat/hooks/useChatProviderState.ts @@ -1,7 +1,7 @@ import { useCallback, useEffect, useRef, useState } from 'react'; import { authenticatedFetch } from '../../../utils/api'; import { CLAUDE_MODELS, CODEX_MODELS, CURSOR_MODELS } from '../../../../shared/modelConstants'; -import type { PendingPermissionRequest, PermissionMode, Provider } from '../types'; +import type { PendingPermissionRequest, PermissionMode, Provider } from '../types/types'; import type { ProjectSession } from '../../../types/app'; interface UseChatProviderStateArgs { diff --git a/src/components/chat/hooks/useChatRealtimeHandlers.ts b/src/components/chat/hooks/useChatRealtimeHandlers.ts index 35659a3..02be45f 100644 --- a/src/components/chat/hooks/useChatRealtimeHandlers.ts +++ b/src/components/chat/hooks/useChatRealtimeHandlers.ts @@ -2,7 +2,7 @@ import { useEffect } from 'react'; import type { Dispatch, MutableRefObject, SetStateAction } from 'react'; import { decodeHtmlEntities, formatUsageLimitText } from '../utils/chatFormatting'; import { safeLocalStorage } from '../utils/chatStorage'; -import type { ChatMessage, PendingPermissionRequest, Provider } from '../types'; +import type { ChatMessage, PendingPermissionRequest, Provider } from '../types/types'; import type { Project, ProjectSession } from '../../../types/app'; type PendingViewSession = { diff --git a/src/components/chat/hooks/useChatSessionState.ts b/src/components/chat/hooks/useChatSessionState.ts index efa8925..daed1fd 100644 --- a/src/components/chat/hooks/useChatSessionState.ts +++ b/src/components/chat/hooks/useChatSessionState.ts @@ -1,7 +1,7 @@ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'; import type { MutableRefObject } from 'react'; import { api, authenticatedFetch } from '../../../utils/api'; -import type { ChatMessage, Provider } from '../types'; +import type { ChatMessage, Provider } from '../types/types'; import type { Project, ProjectSession } from '../../../types/app'; import { safeLocalStorage } from '../utils/chatStorage'; import { diff --git a/src/components/chat/tools/components/ContentRenderers/MarkdownContent.tsx b/src/components/chat/tools/components/ContentRenderers/MarkdownContent.tsx index de94af7..28baf22 100644 --- a/src/components/chat/tools/components/ContentRenderers/MarkdownContent.tsx +++ b/src/components/chat/tools/components/ContentRenderers/MarkdownContent.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Markdown } from '../../../markdown/Markdown'; +import { Markdown } from '../../../view/subcomponents/Markdown'; interface MarkdownContentProps { content: string; diff --git a/src/components/chat/types.ts b/src/components/chat/types/types.ts similarity index 99% rename from src/components/chat/types.ts rename to src/components/chat/types/types.ts index 117697a..de166e0 100644 --- a/src/components/chat/types.ts +++ b/src/components/chat/types/types.ts @@ -1,4 +1,4 @@ -import type { Project, ProjectSession, SessionProvider } from '../../types/app'; +import type { Project, ProjectSession, SessionProvider } from '../../../types/app'; export type Provider = SessionProvider; diff --git a/src/components/chat/utils/chatPermissions.ts b/src/components/chat/utils/chatPermissions.ts index 7129af9..f44d117 100644 --- a/src/components/chat/utils/chatPermissions.ts +++ b/src/components/chat/utils/chatPermissions.ts @@ -1,5 +1,5 @@ import { safeJsonParse } from '../../../lib/utils.js'; -import type { ChatMessage, ClaudePermissionSuggestion, PermissionGrantResult } from '../types'; +import type { ChatMessage, ClaudePermissionSuggestion, PermissionGrantResult } from '../types/types.js'; import { CLAUDE_SETTINGS_KEY, getClaudeSettings, safeLocalStorage } from './chatStorage'; export function buildClaudeToolPermissionEntry(toolName?: string, toolInput?: unknown) { diff --git a/src/components/chat/utils/chatStorage.ts b/src/components/chat/utils/chatStorage.ts index 958d01a..d1ae327 100644 --- a/src/components/chat/utils/chatStorage.ts +++ b/src/components/chat/utils/chatStorage.ts @@ -1,4 +1,4 @@ -import type { ClaudeSettings } from '../types'; +import type { ClaudeSettings } from '../types/types'; export const CLAUDE_SETTINGS_KEY = 'claude-settings'; diff --git a/src/components/chat/utils/messageTransforms.ts b/src/components/chat/utils/messageTransforms.ts index 64fce13..2aee588 100644 --- a/src/components/chat/utils/messageTransforms.ts +++ b/src/components/chat/utils/messageTransforms.ts @@ -1,4 +1,4 @@ -import type { ChatMessage } from '../types'; +import type { ChatMessage } from '../types/types'; import { decodeHtmlEntities, unescapeWithMathProtection } from './chatFormatting'; export interface DiffLine { diff --git a/src/components/chat/view/ChatInterface.tsx b/src/components/chat/view/ChatInterface.tsx index a820ef2..f9910cd 100644 --- a/src/components/chat/view/ChatInterface.tsx +++ b/src/components/chat/view/ChatInterface.tsx @@ -2,14 +2,14 @@ import React, { useCallback, useEffect, useRef } from 'react'; import QuickSettingsPanel from '../../QuickSettingsPanel'; import { useTasksSettings } from '../../../contexts/TasksSettingsContext'; import { useTranslation } from 'react-i18next'; -import ChatMessagesPane from './ChatMessagesPane'; -import ChatComposer from './ChatComposer'; -import type { ChatInterfaceProps } from '../types'; +import ChatMessagesPane from './subcomponents/ChatMessagesPane'; +import ChatComposer from './subcomponents/ChatComposer'; +import type { ChatInterfaceProps } from '../types/types'; import { useChatProviderState } from '../hooks/useChatProviderState'; import { useChatSessionState } from '../hooks/useChatSessionState'; import { useChatRealtimeHandlers } from '../hooks/useChatRealtimeHandlers'; import { useChatComposerState } from '../hooks/useChatComposerState'; -import type { Provider } from '../types'; +import type { Provider } from '../types/types'; type PendingViewSession = { sessionId: string | null; diff --git a/src/components/chat/view/ChatComposer.tsx b/src/components/chat/view/subcomponents/ChatComposer.tsx similarity index 98% rename from src/components/chat/view/ChatComposer.tsx rename to src/components/chat/view/subcomponents/ChatComposer.tsx index fec3310..13639bd 100644 --- a/src/components/chat/view/ChatComposer.tsx +++ b/src/components/chat/view/subcomponents/ChatComposer.tsx @@ -1,7 +1,7 @@ -import CommandMenu from '../../CommandMenu'; -import ClaudeStatus from '../../ClaudeStatus'; -import { MicButton } from '../../MicButton.jsx'; -import ImageAttachment from '../input/ImageAttachment'; +import CommandMenu from '../../../CommandMenu'; +import ClaudeStatus from '../../../ClaudeStatus'; +import { MicButton } from '../../../MicButton.jsx'; +import ImageAttachment from './ImageAttachment'; import PermissionRequestsBanner from './PermissionRequestsBanner'; import ChatInputControls from './ChatInputControls'; import { useTranslation } from 'react-i18next'; @@ -17,7 +17,7 @@ import type { SetStateAction, TouchEvent, } from 'react'; -import type { PendingPermissionRequest, PermissionMode, Provider } from '../types'; +import type { PendingPermissionRequest, PermissionMode, Provider } from '../../types/types'; interface MentionableFile { name: string; diff --git a/src/components/chat/view/ChatInputControls.tsx b/src/components/chat/view/subcomponents/ChatInputControls.tsx similarity index 100% rename from src/components/chat/view/ChatInputControls.tsx rename to src/components/chat/view/subcomponents/ChatInputControls.tsx diff --git a/src/components/chat/view/ChatMessagesPane.tsx b/src/components/chat/view/subcomponents/ChatMessagesPane.tsx similarity index 96% rename from src/components/chat/view/ChatMessagesPane.tsx rename to src/components/chat/view/subcomponents/ChatMessagesPane.tsx index 1c838fa..3d2e5d1 100644 --- a/src/components/chat/view/ChatMessagesPane.tsx +++ b/src/components/chat/view/subcomponents/ChatMessagesPane.tsx @@ -1,10 +1,10 @@ import { useTranslation } from 'react-i18next'; import type { Dispatch, RefObject, SetStateAction } from 'react'; -import SessionProviderLogo from '../../SessionProviderLogo'; -import MessageComponent from '../messages/MessageComponent'; +import SessionProviderLogo from '../../../SessionProviderLogo'; +import MessageComponent from './MessageComponent'; import ProviderSelectionEmptyState from './ProviderSelectionEmptyState'; -import type { ChatMessage, Provider } from '../types'; -import type { Project, ProjectSession } from '../../../types/app'; +import type { ChatMessage, Provider } from '../../types/types'; +import type { Project, ProjectSession } from '../../../../types/app'; interface ChatMessagesPaneProps { scrollContainerRef: RefObject; diff --git a/src/components/chat/input/ImageAttachment.tsx b/src/components/chat/view/subcomponents/ImageAttachment.tsx similarity index 100% rename from src/components/chat/input/ImageAttachment.tsx rename to src/components/chat/view/subcomponents/ImageAttachment.tsx diff --git a/src/components/chat/markdown/Markdown.tsx b/src/components/chat/view/subcomponents/Markdown.tsx similarity index 98% rename from src/components/chat/markdown/Markdown.tsx rename to src/components/chat/view/subcomponents/Markdown.tsx index 87dd13f..7a0e43c 100644 --- a/src/components/chat/markdown/Markdown.tsx +++ b/src/components/chat/view/subcomponents/Markdown.tsx @@ -6,7 +6,7 @@ import rehypeKatex from 'rehype-katex'; import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'; import { oneDark } from 'react-syntax-highlighter/dist/esm/styles/prism'; import { useTranslation } from 'react-i18next'; -import { normalizeInlineCodeFences } from '../utils/chatFormatting'; +import { normalizeInlineCodeFences } from '../../utils/chatFormatting'; type MarkdownProps = { children: React.ReactNode; diff --git a/src/components/chat/messages/MessageComponent.tsx b/src/components/chat/view/subcomponents/MessageComponent.tsx similarity index 98% rename from src/components/chat/messages/MessageComponent.tsx rename to src/components/chat/view/subcomponents/MessageComponent.tsx index 3acaae0..6d2e1b4 100644 --- a/src/components/chat/messages/MessageComponent.tsx +++ b/src/components/chat/view/subcomponents/MessageComponent.tsx @@ -1,13 +1,13 @@ // @ts-nocheck import React, { memo, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import SessionProviderLogo from '../../SessionProviderLogo'; -import type { ChatMessage, Provider } from '../types'; -import { Markdown } from '../markdown/Markdown'; -import { formatUsageLimitText } from '../utils/chatFormatting'; -import { getClaudePermissionSuggestion } from '../utils/chatPermissions'; -import type { Project } from '../../../types/app'; -import { ToolRenderer, shouldHideToolResult } from '../tools'; +import SessionProviderLogo from '../../../SessionProviderLogo'; +import type { ChatMessage, Provider } from '../../types/types'; +import { Markdown } from './Markdown'; +import { formatUsageLimitText } from '../../utils/chatFormatting'; +import { getClaudePermissionSuggestion } from '../../utils/chatPermissions'; +import type { Project } from '../../../../types/app'; +import { ToolRenderer, shouldHideToolResult } from '../../tools'; type DiffLine = { type: string; diff --git a/src/components/chat/view/PermissionRequestsBanner.tsx b/src/components/chat/view/subcomponents/PermissionRequestsBanner.tsx similarity index 96% rename from src/components/chat/view/PermissionRequestsBanner.tsx rename to src/components/chat/view/subcomponents/PermissionRequestsBanner.tsx index 1adcede..cfe86d3 100644 --- a/src/components/chat/view/PermissionRequestsBanner.tsx +++ b/src/components/chat/view/subcomponents/PermissionRequestsBanner.tsx @@ -1,7 +1,7 @@ import React from 'react'; -import type { PendingPermissionRequest } from '../types'; -import { buildClaudeToolPermissionEntry, formatToolInputForDisplay } from '../utils/chatPermissions'; -import { getClaudeSettings } from '../utils/chatStorage'; +import type { PendingPermissionRequest } from '../../types/types'; +import { buildClaudeToolPermissionEntry, formatToolInputForDisplay } from '../../utils/chatPermissions'; +import { getClaudeSettings } from '../../utils/chatStorage'; interface PermissionRequestsBannerProps { pendingPermissionRequests: PendingPermissionRequest[]; diff --git a/src/components/chat/view/ProviderSelectionEmptyState.tsx b/src/components/chat/view/subcomponents/ProviderSelectionEmptyState.tsx similarity index 97% rename from src/components/chat/view/ProviderSelectionEmptyState.tsx rename to src/components/chat/view/subcomponents/ProviderSelectionEmptyState.tsx index 233d4e6..7c8edd8 100644 --- a/src/components/chat/view/ProviderSelectionEmptyState.tsx +++ b/src/components/chat/view/subcomponents/ProviderSelectionEmptyState.tsx @@ -1,10 +1,10 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import SessionProviderLogo from '../../SessionProviderLogo'; -import NextTaskBanner from '../../NextTaskBanner.jsx'; -import { CLAUDE_MODELS, CURSOR_MODELS, CODEX_MODELS } from '../../../../shared/modelConstants'; -import type { Provider } from '../types'; -import type { ProjectSession } from '../../../types/app'; +import SessionProviderLogo from '../../../SessionProviderLogo'; +import NextTaskBanner from '../../../NextTaskBanner.jsx'; +import { CLAUDE_MODELS, CURSOR_MODELS, CODEX_MODELS } from '../../../../../shared/modelConstants'; +import type { Provider } from '../../types/types'; +import type { ProjectSession } from '../../../../types/app'; interface ProviderSelectionEmptyStateProps { selectedSession: ProjectSession | null;