From cda3d1d46c3f48fcfe86616aeaa86c43e6752880 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Thu, 23 Apr 2026 21:55:25 +0700 Subject: [PATCH] chore: apply oxlint fix-suggestions (unused imports + useless fragments) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Scoped to only `no-unused-vars` and `react/jsx-no-useless-fragment` — the safe subset of --fix-suggestions. Primary changes: - Remove unused named imports from statements - Remove unused default/type imports entirely - Collapse `<>` fragments to `` Verified clean: typecheck + format + lint all green. --- packages/app/e2e/launcher-tab.spec.ts | 1 - packages/app/src/app/_layout.tsx | 3 +- .../agent-form/agent-form-dropdowns.tsx | 2 +- .../app/src/components/agent-status-bar.tsx | 64 +++++++++---------- .../app/src/components/branch-switcher.tsx | 2 +- .../components/combined-model-selector.tsx | 1 - packages/app/src/components/diff-viewer.tsx | 2 +- .../app/src/components/file-explorer-pane.tsx | 1 - packages/app/src/components/message-input.tsx | 2 - packages/app/src/components/message.tsx | 3 +- .../src/components/sidebar-workspace-list.tsx | 10 +-- .../app/src/components/split-container.tsx | 1 - packages/app/src/contexts/session-context.tsx | 5 +- .../permissions/use-desktop-permissions.ts | 2 +- .../src/hooks/use-keyboard-action-handler.ts | 1 - .../app/src/hooks/use-keyboard-shortcuts.ts | 1 - packages/app/src/runtime/host-runtime.ts | 2 +- .../src/screens/agent/draft-agent-screen.tsx | 4 +- .../screens/workspace/workspace-screen.tsx | 1 - .../workspace-scripts-button.test.tsx | 2 +- packages/app/src/stores/session-store.ts | 6 -- .../app/src/utils/diff-highlighter.test.ts | 1 - .../app/src/utils/provider-definitions.ts | 2 +- packages/app/src/voice/voice-runtime.test.ts | 6 +- .../examples/flow-api/App.tsx | 5 +- packages/expo-two-way-audio/src/core.ts | 2 +- .../server/src/client/daemon-client.test.ts | 1 - .../investigate-command-output.ts | 2 +- packages/server/src/poc-commands/run-poc.ts | 7 +- .../agent/agent-response-loop.e2e.test.ts | 2 +- .../claude-agent-commands.e2e.test.ts | 1 - .../server/agent/providers/claude-agent.ts | 2 +- .../agent/providers/opencode-agent.test.ts | 1 - .../src/server/daemon-client.e2e.test.ts | 4 +- .../daemon-e2e/agent-basics.e2e.test.ts | 12 +--- .../daemon-e2e/agent-operations.e2e.test.ts | 11 +--- .../daemon-e2e/file-download.e2e.test.ts | 12 +--- .../server/daemon-e2e/filesystem.e2e.test.ts | 12 +--- .../daemon-e2e/git-operations.e2e.test.ts | 13 +--- .../src/server/daemon-e2e/images.e2e.test.ts | 12 +--- .../daemon-e2e/permissions-codex.e2e.test.ts | 13 +--- .../server/daemon-e2e/tool-calls.e2e.test.ts | 12 +--- .../src/server/persistence-hooks.test.ts | 6 +- .../src/server/speech/providers/openai/stt.ts | 2 +- .../src/server/worktree-session.test.ts | 1 - packages/server/src/tasks/cli.ts | 4 +- .../src/terminal/terminal-manager.test.ts | 4 +- packages/server/src/utils/checkout-git.ts | 2 +- .../website/src/components/landing-page.tsx | 9 +-- 49 files changed, 70 insertions(+), 207 deletions(-) diff --git a/packages/app/e2e/launcher-tab.spec.ts b/packages/app/e2e/launcher-tab.spec.ts index fd9fcec65..84b839350 100644 --- a/packages/app/e2e/launcher-tab.spec.ts +++ b/packages/app/e2e/launcher-tab.spec.ts @@ -17,7 +17,6 @@ import { } from "./helpers/launcher"; import { connectTerminalClient, - waitForTerminalContent, setupDeterministicPrompt, type TerminalPerfDaemonClient, } from "./helpers/terminal-perf"; diff --git a/packages/app/src/app/_layout.tsx b/packages/app/src/app/_layout.tsx index 4b95e5477..5b3200a46 100644 --- a/packages/app/src/app/_layout.tsx +++ b/packages/app/src/app/_layout.tsx @@ -20,7 +20,7 @@ import { useRef, useState, } from "react"; -import { Platform, Text, View } from "react-native"; +import { View } from "react-native"; import { Gesture, GestureDetector, GestureHandlerRootView } from "react-native-gesture-handler"; import { KeyboardProvider } from "react-native-keyboard-controller"; import { Extrapolation, interpolate, runOnJS, useSharedValue } from "react-native-reanimated"; @@ -82,7 +82,6 @@ import { resolveActiveHost } from "@/utils/active-host"; import { toggleDesktopSidebarsWithCheckoutIntent } from "@/utils/desktop-sidebar-toggle"; import { buildHostRootRoute, - decodeWorkspaceIdFromPathSegment, mapPathnameToServer, parseHostAgentRouteFromPathname, parseServerIdFromPathname, diff --git a/packages/app/src/components/agent-form/agent-form-dropdowns.tsx b/packages/app/src/components/agent-form/agent-form-dropdowns.tsx index 049fbc01e..6a124f77a 100644 --- a/packages/app/src/components/agent-form/agent-form-dropdowns.tsx +++ b/packages/app/src/components/agent-form/agent-form-dropdowns.tsx @@ -28,7 +28,7 @@ import type { } from "@server/server/agent/agent-sdk-types"; import type { AgentProviderDefinition } from "@server/server/agent/provider-manifest"; import { getModeVisuals, type AgentModeIcon } from "@server/server/agent/provider-manifest"; -import { Combobox, ComboboxItem, ComboboxEmpty } from "@/components/ui/combobox"; +import { Combobox, ComboboxItem } from "@/components/ui/combobox"; import { IsolatedBottomSheetModal, useIsolatedBottomSheetVisibility, diff --git a/packages/app/src/components/agent-status-bar.tsx b/packages/app/src/components/agent-status-bar.tsx index 0c7682680..d1096a792 100644 --- a/packages/app/src/components/agent-status-bar.tsx +++ b/packages/app/src/components/agent-status-bar.tsx @@ -40,11 +40,7 @@ import type { AgentProvider, } from "@server/server/agent/agent-sdk-types"; import type { AgentProviderDefinition } from "@server/server/agent/provider-manifest"; -import { - getModeVisuals, - type AgentModeColorTier, - type AgentModeIcon, -} from "@server/server/agent/provider-manifest"; +import { getModeVisuals, type AgentModeColorTier } from "@server/server/agent/provider-manifest"; import { getFeatureHighlightColor, getFeatureTooltip, @@ -1154,36 +1150,34 @@ export function DraftAgentStatusBar({ })); return ( - <> - onSelectModel(modelId)} - onSelectProviderAndModel={onSelectProviderAndModel} - isModelLoading={isAllModelsLoading} - favoriteKeys={favoriteKeys} - onToggleFavoriteModel={(provider, modelId) => { - void updatePreferences((current) => - toggleFavoriteModel({ preferences: current, provider, modelId }), - ).catch((error) => { - console.warn("[DraftAgentStatusBar] toggle favorite model failed", error); - }); - }} - thinkingOptions={mappedThinkingOptions.length > 0 ? mappedThinkingOptions : undefined} - selectedThinkingOptionId={effectiveSelectedThinkingOption} - onSelectThinkingOption={onSelectThinkingOption} - features={features} - onSetFeature={onSetFeature} - onModelSelectorOpen={onModelSelectorOpen} - disabled={disabled} - /> - + onSelectModel(modelId)} + onSelectProviderAndModel={onSelectProviderAndModel} + isModelLoading={isAllModelsLoading} + favoriteKeys={favoriteKeys} + onToggleFavoriteModel={(provider, modelId) => { + void updatePreferences((current) => + toggleFavoriteModel({ preferences: current, provider, modelId }), + ).catch((error) => { + console.warn("[DraftAgentStatusBar] toggle favorite model failed", error); + }); + }} + thinkingOptions={mappedThinkingOptions.length > 0 ? mappedThinkingOptions : undefined} + selectedThinkingOptionId={effectiveSelectedThinkingOption} + onSelectThinkingOption={onSelectThinkingOption} + features={features} + onSetFeature={onSetFeature} + onModelSelectorOpen={onModelSelectorOpen} + disabled={disabled} + /> ); } diff --git a/packages/app/src/components/branch-switcher.tsx b/packages/app/src/components/branch-switcher.tsx index 3c6cb7c68..7e28ba45f 100644 --- a/packages/app/src/components/branch-switcher.tsx +++ b/packages/app/src/components/branch-switcher.tsx @@ -3,7 +3,7 @@ import { Pressable, View } from "react-native"; import { useQueryClient } from "@tanstack/react-query"; import { ChevronDown, GitBranch } from "lucide-react-native"; import { StyleSheet, useUnistyles } from "react-native-unistyles"; -import { Combobox, ComboboxItem, type ComboboxOption } from "@/components/ui/combobox"; +import { Combobox, ComboboxItem } from "@/components/ui/combobox"; import { useIsCompactFormFactor } from "@/constants/layout"; import { useHostRuntimeClient, useHostRuntimeIsConnected } from "@/runtime/host-runtime"; import { useToast } from "@/contexts/toast-context"; diff --git a/packages/app/src/components/combined-model-selector.tsx b/packages/app/src/components/combined-model-selector.tsx index 06abc0cc1..35022d245 100644 --- a/packages/app/src/components/combined-model-selector.tsx +++ b/packages/app/src/components/combined-model-selector.tsx @@ -18,7 +18,6 @@ const IS_WEB = platformIsWeb; import { Combobox, ComboboxItem } from "@/components/ui/combobox"; import { getProviderIcon } from "@/components/provider-icons"; -import type { FavoriteModelRow } from "@/hooks/use-form-preferences"; import { buildModelRows, buildSelectedTriggerLabel, diff --git a/packages/app/src/components/diff-viewer.tsx b/packages/app/src/components/diff-viewer.tsx index ea4bb7147..0e7eb2a9c 100644 --- a/packages/app/src/components/diff-viewer.tsx +++ b/packages/app/src/components/diff-viewer.tsx @@ -3,7 +3,7 @@ import { View, Text, ScrollView as RNScrollView } from "react-native"; import { ScrollView as GHScrollView } from "react-native-gesture-handler"; import { StyleSheet } from "react-native-unistyles"; import { Fonts } from "@/constants/theme"; -import type { DiffLine, DiffSegment } from "@/utils/tool-call-parsers"; +import type { DiffLine } from "@/utils/tool-call-parsers"; import { useWebScrollbarStyle } from "@/hooks/use-web-scrollbar-style"; import { getCodeInsets } from "./code-insets"; import { isWeb } from "@/constants/platform"; diff --git a/packages/app/src/components/file-explorer-pane.tsx b/packages/app/src/components/file-explorer-pane.tsx index 327ebbba2..eb59d0e11 100644 --- a/packages/app/src/components/file-explorer-pane.tsx +++ b/packages/app/src/components/file-explorer-pane.tsx @@ -21,7 +21,6 @@ import { Download, MoreVertical, RotateCw, - X, } from "lucide-react-native"; import { getFileIconSvg } from "@/components/material-file-icons"; import { LoadingSpinner } from "@/components/ui/loading-spinner"; diff --git a/packages/app/src/components/message-input.tsx b/packages/app/src/components/message-input.tsx index 38392ed72..65a5bbfb5 100644 --- a/packages/app/src/components/message-input.tsx +++ b/packages/app/src/components/message-input.tsx @@ -2,13 +2,11 @@ import { View, Text, TextInput, - Pressable, ActivityIndicator, NativeSyntheticEvent, TextInputContentSizeChangeEventData, TextInputKeyPressEventData, TextInputSelectionChangeEventData, - BackHandler, } from "react-native"; import { useState, diff --git a/packages/app/src/components/message.tsx b/packages/app/src/components/message.tsx index 06da47460..0bd6154a9 100644 --- a/packages/app/src/components/message.tsx +++ b/packages/app/src/components/message.tsx @@ -36,7 +36,6 @@ import { ChevronDown, Check, CheckSquare, - X, Copy, TriangleAlertIcon, Scissors, @@ -54,7 +53,7 @@ import Animated, { } from "react-native-reanimated"; import Svg, { Defs, LinearGradient as SvgLinearGradient, Rect, Stop } from "react-native-svg"; import { createMarkdownStyles } from "@/styles/markdown-styles"; -import { Colors, Fonts } from "@/constants/theme"; +import { Fonts } from "@/constants/theme"; import * as Clipboard from "expo-clipboard"; import type { TodoEntry, UserMessageImageAttachment } from "@/types/stream"; import type { ToolCallDetail } from "@server/server/agent/agent-sdk-types"; diff --git a/packages/app/src/components/sidebar-workspace-list.tsx b/packages/app/src/components/sidebar-workspace-list.tsx index eec143cd5..16d86936d 100644 --- a/packages/app/src/components/sidebar-workspace-list.tsx +++ b/packages/app/src/components/sidebar-workspace-list.tsx @@ -10,7 +10,7 @@ import { type GestureResponderEvent, } from "react-native"; import * as Haptics from "expo-haptics"; -import { useMutation, useQueries } from "@tanstack/react-query"; +import { useQueries } from "@tanstack/react-query"; import { useCallback, useMemo, @@ -53,7 +53,6 @@ import { buildHostNewWorkspaceRoute, parseHostWorkspaceRouteFromPathname, } from "@/utils/host-routes"; -import { prepareWorkspaceTab } from "@/utils/workspace-navigation"; import { createSidebarWorkspaceEntry, type SidebarProjectEntry, @@ -95,11 +94,7 @@ import { useIsNavigationProjectActive, useIsNavigationWorkspaceSelected, } from "@/stores/navigation-active-workspace-store"; -import { - normalizeWorkspaceDescriptor, - useSessionStore, - type WorkspaceDescriptor, -} from "@/stores/session-store"; +import { useSessionStore, type WorkspaceDescriptor } from "@/stores/session-store"; import { useWorkspaceFields } from "@/stores/session-store-hooks"; import { redirectIfArchivingActiveWorkspace } from "@/utils/sidebar-workspace-archive-redirect"; import { openExternalUrl } from "@/utils/open-external-url"; @@ -109,7 +104,6 @@ import { } from "@/utils/workspace-execution"; import { WorkspaceHoverCard } from "@/components/workspace-hover-card"; import { GitHubIcon } from "@/components/icons/github-icon"; -import { createNameId } from "mnemonic-id"; import { isWeb as platformIsWeb, isNative as platformIsNative } from "@/constants/platform"; function toProjectIconDataUri(icon: { mimeType: string; data: string } | null): string | null { diff --git a/packages/app/src/components/split-container.tsx b/packages/app/src/components/split-container.tsx index f05cfa3d2..3e0c1e22c 100644 --- a/packages/app/src/components/split-container.tsx +++ b/packages/app/src/components/split-container.tsx @@ -31,7 +31,6 @@ import { View, Text } from "react-native"; import { StyleSheet, useUnistyles } from "react-native-unistyles"; import { ResizeHandle } from "@/components/resize-handle"; import { shouldFocusPaneFromEventTarget } from "@/components/split-container-pane-focus"; -import { usePanelStore } from "@/stores/panel-store"; import { useWindowControlsPadding } from "@/utils/desktop-window"; import { TitlebarDragRegion } from "@/components/desktop/titlebar-drag-region"; import { diff --git a/packages/app/src/contexts/session-context.tsx b/packages/app/src/contexts/session-context.tsx index 6ad2f9c2c..1563fe63b 100644 --- a/packages/app/src/contexts/session-context.tsx +++ b/packages/app/src/contexts/session-context.tsx @@ -1,4 +1,4 @@ -import { useRef, ReactNode, useCallback, useEffect, useMemo } from "react"; +import { useRef, ReactNode, useCallback, useEffect } from "react"; import { Buffer } from "buffer"; import { AppState } from "react-native"; import { useQueryClient } from "@tanstack/react-query"; @@ -12,7 +12,6 @@ import { processTimelineResponse, } from "@/contexts/session-stream-reducers"; import type { - ActivityLogPayload, AgentAttachment, AgentStreamEventPayload, SessionOutboundMessage, @@ -25,7 +24,6 @@ import { } from "@server/shared/agent-attention-notification"; import type { AgentLifecycleStatus } from "@server/shared/agent-lifecycle"; import type { DaemonClient } from "@server/client/daemon-client"; -import { File } from "expo-file-system"; import { getHostRuntimeStore, useHostRuntimeIsConnected } from "@/runtime/host-runtime"; import { useVoiceAudioEngineOptional, useVoiceRuntimeOptional } from "@/contexts/voice-context"; import type { AudioPlaybackSource } from "@/voice/audio-engine-types"; @@ -38,7 +36,6 @@ import { } from "@/stores/session-store"; import { useDraftStore } from "@/stores/draft-store"; import { useWorkspaceSetupStore } from "@/stores/workspace-setup-store"; -import type { AgentDirectoryEntry } from "@/types/agent-directory"; import { sendOsNotification } from "@/utils/os-notifications"; import { getIsAppActivelyVisible } from "@/utils/app-visibility"; import { diff --git a/packages/app/src/desktop/permissions/use-desktop-permissions.ts b/packages/app/src/desktop/permissions/use-desktop-permissions.ts index cfaa05a05..856059629 100644 --- a/packages/app/src/desktop/permissions/use-desktop-permissions.ts +++ b/packages/app/src/desktop/permissions/use-desktop-permissions.ts @@ -132,7 +132,7 @@ export function useDesktopPermissions(): UseDesktopPermissionsReturn { "Notification was not delivered. Check System Settings > Notifications.", ); } - } catch (error) { + } catch { setTestNotificationError("Failed to send notification."); } finally { if (isMountedRef.current) { diff --git a/packages/app/src/hooks/use-keyboard-action-handler.ts b/packages/app/src/hooks/use-keyboard-action-handler.ts index 3de3a1e7a..e014b578e 100644 --- a/packages/app/src/hooks/use-keyboard-action-handler.ts +++ b/packages/app/src/hooks/use-keyboard-action-handler.ts @@ -3,7 +3,6 @@ import { useEffect } from "react"; import { keyboardActionDispatcher, type KeyboardActionDefinition, - type KeyboardActionHandler, type KeyboardActionId, } from "@/keyboard/keyboard-action-dispatcher"; diff --git a/packages/app/src/hooks/use-keyboard-shortcuts.ts b/packages/app/src/hooks/use-keyboard-shortcuts.ts index 3b12e51bd..364397195 100644 --- a/packages/app/src/hooks/use-keyboard-shortcuts.ts +++ b/packages/app/src/hooks/use-keyboard-shortcuts.ts @@ -6,7 +6,6 @@ import { setCommandCenterFocusRestoreElement } from "@/utils/command-center-focu import { buildHostWorkspaceRoute, buildSettingsRoute, - parseHostAgentRouteFromPathname, parseHostWorkspaceRouteFromPathname, } from "@/utils/host-routes"; import { navigateToWorkspace } from "@/hooks/use-workspace-navigation"; diff --git a/packages/app/src/runtime/host-runtime.ts b/packages/app/src/runtime/host-runtime.ts index ae0b24650..7e03ea3d8 100644 --- a/packages/app/src/runtime/host-runtime.ts +++ b/packages/app/src/runtime/host-runtime.ts @@ -1,4 +1,4 @@ -import { useSyncExternalStore, useCallback, useMemo } from "react"; +import { useSyncExternalStore, useMemo } from "react"; import AsyncStorage from "@react-native-async-storage/async-storage"; import equal from "fast-deep-equal/es6"; import { diff --git a/packages/app/src/screens/agent/draft-agent-screen.tsx b/packages/app/src/screens/agent/draft-agent-screen.tsx index 526cbc62b..a91695ba8 100644 --- a/packages/app/src/screens/agent/draft-agent-screen.tsx +++ b/packages/app/src/screens/agent/draft-agent-screen.tsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react"; import { createNameId } from "mnemonic-id"; import type { ImageAttachment } from "@/components/message-input"; -import { View, Text, Pressable, ScrollView, Keyboard } from "react-native"; +import { View, Text, ScrollView, Keyboard } from "react-native"; import { useLocalSearchParams, useRouter } from "expo-router"; import { useIsFocused } from "@react-navigation/native"; import { StyleSheet, useUnistyles } from "react-native-unistyles"; @@ -47,7 +47,6 @@ import type { AgentCapabilityFlags, AgentSessionConfig, } from "@server/server/agent/agent-sdk-types"; -import { AGENT_PROVIDER_DEFINITIONS } from "@server/server/agent/provider-manifest"; import { resolveWorkspaceIdByExecutionDirectory } from "@/utils/workspace-execution"; import { prepareWorkspaceTab } from "@/utils/workspace-navigation"; import { TitlebarDragRegion } from "@/components/desktop/titlebar-drag-region"; @@ -57,7 +56,6 @@ import type { KeyboardActionDefinition } from "@/keyboard/keyboard-action-dispat import { normalizeAgentSnapshot } from "@/utils/agent-snapshots"; import { useAgentInputDraft } from "@/hooks/use-agent-input-draft"; import { useDraftAgentCreateFlow } from "@/hooks/use-draft-agent-create-flow"; -import { useDraftAgentFeatures } from "@/hooks/use-draft-agent-features"; import { isWeb } from "@/constants/platform"; const EMPTY_PENDING_PERMISSIONS = new Map(); diff --git a/packages/app/src/screens/workspace/workspace-screen.tsx b/packages/app/src/screens/workspace/workspace-screen.tsx index 10383e653..c8875f406 100644 --- a/packages/app/src/screens/workspace/workspace-screen.tsx +++ b/packages/app/src/screens/workspace/workspace-screen.tsx @@ -21,7 +21,6 @@ import { X, } from "lucide-react-native"; import { GestureDetector } from "react-native-gesture-handler"; -import Animated from "react-native-reanimated"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import { StyleSheet, useUnistyles } from "react-native-unistyles"; import invariant from "tiny-invariant"; diff --git a/packages/app/src/screens/workspace/workspace-scripts-button.test.tsx b/packages/app/src/screens/workspace/workspace-scripts-button.test.tsx index 7c6a1922a..cec904c8f 100644 --- a/packages/app/src/screens/workspace/workspace-scripts-button.test.tsx +++ b/packages/app/src/screens/workspace/workspace-scripts-button.test.tsx @@ -6,7 +6,7 @@ import { act } from "@testing-library/react"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import type { WorkspaceScriptPayload } from "@server/shared/messages"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { createRoot, type Root } from "react-dom/client"; +import { createRoot } from "react-dom/client"; import { WorkspaceScriptsButton } from "@/screens/workspace/workspace-scripts-button"; const { theme, startWorkspaceScriptMock } = vi.hoisted(() => { diff --git a/packages/app/src/stores/session-store.ts b/packages/app/src/stores/session-store.ts index 8a01d86b3..027aec045 100644 --- a/packages/app/src/stores/session-store.ts +++ b/packages/app/src/stores/session-store.ts @@ -8,24 +8,18 @@ import type { PendingPermission } from "@/types/shared"; import type { ComposerAttachment } from "@/attachments/types"; import type { AgentLifecycleStatus } from "@server/shared/agent-lifecycle"; import type { - AgentPermissionResponse, AgentPermissionRequest, - AgentSessionConfig, AgentFeature, AgentProvider, AgentMode, AgentCapabilityFlags, - AgentModelDefinition, AgentUsage, AgentPersistenceHandle, } from "@server/server/agent/agent-sdk-types"; import type { - FileDownloadTokenResponse, - GitSetupOptions, ServerInfoStatusPayload, ProjectPlacementPayload, ServerCapabilities, - AgentSnapshotPayload, WorkspaceDescriptorPayload, } from "@server/shared/messages"; import { normalizeWorkspaceOpaqueId } from "@/utils/workspace-identity"; diff --git a/packages/app/src/utils/diff-highlighter.test.ts b/packages/app/src/utils/diff-highlighter.test.ts index b7c729e00..a5495c23f 100644 --- a/packages/app/src/utils/diff-highlighter.test.ts +++ b/packages/app/src/utils/diff-highlighter.test.ts @@ -6,7 +6,6 @@ import { highlightDiffFile, parseAndHighlightDiff, type ParsedDiffFile, - type DiffHunk, } from "./diff-highlighter"; const SIMPLE_DIFF = `diff --git a/example.ts b/example.ts diff --git a/packages/app/src/utils/provider-definitions.ts b/packages/app/src/utils/provider-definitions.ts index c7cdb5e41..c1b0b9a73 100644 --- a/packages/app/src/utils/provider-definitions.ts +++ b/packages/app/src/utils/provider-definitions.ts @@ -1,4 +1,4 @@ -import type { ProviderSnapshotEntry, AgentProvider } from "@server/server/agent/agent-sdk-types"; +import type { ProviderSnapshotEntry } from "@server/server/agent/agent-sdk-types"; import { type AgentModeColorTier, type AgentModeIcon, diff --git a/packages/app/src/voice/voice-runtime.test.ts b/packages/app/src/voice/voice-runtime.test.ts index 76a383c68..8bebbb7d0 100644 --- a/packages/app/src/voice/voice-runtime.test.ts +++ b/packages/app/src/voice/voice-runtime.test.ts @@ -1,11 +1,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { DaemonServerInfo } from "@/stores/session-store"; import type { AudioEngine } from "@/voice/audio-engine-types"; -import { - createVoiceRuntime, - type VoiceRuntime, - type VoiceSessionAdapter, -} from "@/voice/voice-runtime"; +import { createVoiceRuntime, type VoiceSessionAdapter } from "@/voice/voice-runtime"; import { REALTIME_VOICE_VAD_CONFIG } from "@/voice/realtime-voice-config"; function createAudioEngineMock(): AudioEngine { diff --git a/packages/expo-two-way-audio/examples/flow-api/App.tsx b/packages/expo-two-way-audio/examples/flow-api/App.tsx index a35a66c05..866e880fc 100644 --- a/packages/expo-two-way-audio/examples/flow-api/App.tsx +++ b/packages/expo-two-way-audio/examples/flow-api/App.tsx @@ -1,13 +1,10 @@ // EventTarget polyfill is required for the Flow SDK to work in React Native import "event-target-polyfill"; -import { Buffer } from "buffer"; import { Button, StyleSheet, Text, View } from "react-native"; -import { Platform } from "react-native"; import { type MicrophoneDataCallback, type VolumeLevelCallback, - getMicrophoneModeIOS, initialize, playPCMData, toggleRecording, @@ -22,7 +19,7 @@ import { useFlow, useFlowEventListener, } from "@speechmatics/flow-client-react"; -import { useCallback, useEffect, useState, useSyncExternalStore } from "react"; +import { useCallback, useEffect, useState } from "react"; import { useSharedValue } from "react-native-reanimated"; import { getFlowAPIJwt } from "./auth"; import VolumeDisplay from "./volume-display"; diff --git a/packages/expo-two-way-audio/src/core.ts b/packages/expo-two-way-audio/src/core.ts index affe8d323..c5d92aa7c 100644 --- a/packages/expo-two-way-audio/src/core.ts +++ b/packages/expo-two-way-audio/src/core.ts @@ -1,4 +1,4 @@ -import { type PermissionResponse, createPermissionHook } from "expo-modules-core"; +import { type PermissionResponse } from "expo-modules-core"; import ExpoTwoWayAudioModule from "./ExpoTwoWayAudioModule"; export async function initialize() { diff --git a/packages/server/src/client/daemon-client.test.ts b/packages/server/src/client/daemon-client.test.ts index 123810cb2..8ffa04757 100644 --- a/packages/server/src/client/daemon-client.test.ts +++ b/packages/server/src/client/daemon-client.test.ts @@ -3,7 +3,6 @@ import { DaemonClient, type DaemonTransport } from "./daemon-client"; import { asUint8Array, decodeTerminalResizePayload, - decodeTerminalSnapshotPayload, decodeTerminalStreamFrame, encodeTerminalSnapshotPayload, encodeTerminalStreamFrame, diff --git a/packages/server/src/poc-commands/investigate-command-output.ts b/packages/server/src/poc-commands/investigate-command-output.ts index 701572f89..bb77c0f6b 100644 --- a/packages/server/src/poc-commands/investigate-command-output.ts +++ b/packages/server/src/poc-commands/investigate-command-output.ts @@ -7,7 +7,7 @@ * to understand how command output is delivered. */ -import { query, type SDKUserMessage, type SDKMessage } from "@anthropic-ai/claude-agent-sdk"; +import { query, type SDKUserMessage } from "@anthropic-ai/claude-agent-sdk"; class Pushable implements AsyncIterable { private queue: T[] = []; diff --git a/packages/server/src/poc-commands/run-poc.ts b/packages/server/src/poc-commands/run-poc.ts index fff6f00b7..39f2f7ba2 100644 --- a/packages/server/src/poc-commands/run-poc.ts +++ b/packages/server/src/poc-commands/run-poc.ts @@ -15,12 +15,7 @@ * Usage: npx tsx src/poc-commands/run-poc.ts */ -import { - query, - type Query, - type SlashCommand, - type SDKUserMessage, -} from "@anthropic-ai/claude-agent-sdk"; +import { query, type SlashCommand, type SDKUserMessage } from "@anthropic-ai/claude-agent-sdk"; // Pattern from claude-agent.ts listModels(): // Use an empty async generator when you just need control methods diff --git a/packages/server/src/server/agent/agent-response-loop.e2e.test.ts b/packages/server/src/server/agent/agent-response-loop.e2e.test.ts index 8b5c3aa71..bd08682b9 100644 --- a/packages/server/src/server/agent/agent-response-loop.e2e.test.ts +++ b/packages/server/src/server/agent/agent-response-loop.e2e.test.ts @@ -107,7 +107,7 @@ async function startAgentMcpServer(logger: pino.Logger): Promise { diff --git a/packages/server/src/server/agent/providers/claude-agent.ts b/packages/server/src/server/agent/providers/claude-agent.ts index cf27e788f..ae938aed1 100644 --- a/packages/server/src/server/agent/providers/claude-agent.ts +++ b/packages/server/src/server/agent/providers/claude-agent.ts @@ -3281,7 +3281,7 @@ class ClaudeAgentSession implements AgentSession { return; } this.ingestPersistedHistory(fs.readFileSync(historyPath, "utf8")); - } catch (error) { + } catch { // ignore history load failures } } diff --git a/packages/server/src/server/agent/providers/opencode-agent.test.ts b/packages/server/src/server/agent/providers/opencode-agent.test.ts index ed1ba8bdc..4fbea8854 100644 --- a/packages/server/src/server/agent/providers/opencode-agent.test.ts +++ b/packages/server/src/server/agent/providers/opencode-agent.test.ts @@ -17,7 +17,6 @@ import type { AgentStreamEvent, ToolCallTimelineItem, AssistantMessageTimelineItem, - UserMessageTimelineItem, AgentTimelineItem, } from "../agent-sdk-types.js"; diff --git a/packages/server/src/server/daemon-client.e2e.test.ts b/packages/server/src/server/daemon-client.e2e.test.ts index ece613697..c5738a2a6 100644 --- a/packages/server/src/server/daemon-client.e2e.test.ts +++ b/packages/server/src/server/daemon-client.e2e.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, beforeAll, afterAll, beforeEach } from "vitest"; +import { describe, test, expect, beforeAll, afterAll } from "vitest"; import { mkdtempSync, writeFileSync, rmSync, existsSync } from "node:fs"; import { readFile } from "node:fs/promises"; import { tmpdir, homedir } from "node:os"; @@ -13,7 +13,7 @@ import { DaemonClient, } from "./test-utils/index.js"; import { getFullAccessConfig, getAskModeConfig } from "./daemon-e2e/agent-configs.js"; -import { chunkPcm16, parsePcm16MonoWav, wordSimilarity } from "./test-utils/dictation-e2e.js"; +import { parsePcm16MonoWav, wordSimilarity } from "./test-utils/dictation-e2e.js"; import type { AgentClient, AgentPersistenceHandle, diff --git a/packages/server/src/server/daemon-e2e/agent-basics.e2e.test.ts b/packages/server/src/server/daemon-e2e/agent-basics.e2e.test.ts index a5ea9b8f7..ddea9d7f8 100644 --- a/packages/server/src/server/daemon-e2e/agent-basics.e2e.test.ts +++ b/packages/server/src/server/daemon-e2e/agent-basics.e2e.test.ts @@ -1,19 +1,9 @@ import { describe, test, expect, beforeEach, afterEach } from "vitest"; -import { - mkdtempSync, - writeFileSync, - existsSync, - rmSync, - mkdirSync, - readFileSync, - readdirSync, -} from "fs"; +import { mkdtempSync, readdirSync } from "fs"; import { tmpdir } from "os"; import path from "path"; import { createDaemonTestContext, type DaemonTestContext } from "../test-utils/index.js"; import { createMessageCollector, type MessageCollector } from "../test-utils/message-collector.js"; -import type { AgentTimelineItem } from "../agent/agent-sdk-types.js"; -import type { AgentSnapshotPayload, SessionOutboundMessage } from "../messages.js"; function tmpCwd(): string { return mkdtempSync(path.join(tmpdir(), "daemon-e2e-")); diff --git a/packages/server/src/server/daemon-e2e/agent-operations.e2e.test.ts b/packages/server/src/server/daemon-e2e/agent-operations.e2e.test.ts index 0e413a5e4..7881086a7 100644 --- a/packages/server/src/server/daemon-e2e/agent-operations.e2e.test.ts +++ b/packages/server/src/server/daemon-e2e/agent-operations.e2e.test.ts @@ -1,17 +1,8 @@ import { describe, test, expect, beforeEach, afterEach } from "vitest"; -import { - mkdtempSync, - writeFileSync, - existsSync, - rmSync, - mkdirSync, - readFileSync, - readdirSync, -} from "fs"; +import { mkdtempSync, rmSync, readdirSync } from "fs"; import { tmpdir } from "os"; import path from "path"; import { createDaemonTestContext, type DaemonTestContext } from "../test-utils/index.js"; -import type { AgentTimelineItem } from "../agent/agent-sdk-types.js"; import type { AgentSnapshotPayload, SessionOutboundMessage } from "../messages.js"; function tmpCwd(): string { diff --git a/packages/server/src/server/daemon-e2e/file-download.e2e.test.ts b/packages/server/src/server/daemon-e2e/file-download.e2e.test.ts index 6fa381b84..56c2ce690 100644 --- a/packages/server/src/server/daemon-e2e/file-download.e2e.test.ts +++ b/packages/server/src/server/daemon-e2e/file-download.e2e.test.ts @@ -1,18 +1,8 @@ import { describe, test, expect, beforeEach, afterEach } from "vitest"; -import { - mkdtempSync, - writeFileSync, - existsSync, - rmSync, - mkdirSync, - readFileSync, - readdirSync, -} from "fs"; +import { mkdtempSync, writeFileSync, rmSync, readdirSync } from "fs"; import { tmpdir } from "os"; import path from "path"; import { createDaemonTestContext, type DaemonTestContext } from "../test-utils/index.js"; -import type { AgentTimelineItem } from "../agent/agent-sdk-types.js"; -import type { AgentSnapshotPayload, SessionOutboundMessage } from "../messages.js"; function tmpCwd(): string { return mkdtempSync(path.join(tmpdir(), "daemon-e2e-")); diff --git a/packages/server/src/server/daemon-e2e/filesystem.e2e.test.ts b/packages/server/src/server/daemon-e2e/filesystem.e2e.test.ts index 73c829067..82e6b29d0 100644 --- a/packages/server/src/server/daemon-e2e/filesystem.e2e.test.ts +++ b/packages/server/src/server/daemon-e2e/filesystem.e2e.test.ts @@ -1,18 +1,8 @@ import { describe, test, expect, beforeEach, afterEach } from "vitest"; -import { - mkdtempSync, - writeFileSync, - existsSync, - rmSync, - mkdirSync, - readFileSync, - readdirSync, -} from "fs"; +import { mkdtempSync, writeFileSync, rmSync, mkdirSync, readdirSync } from "fs"; import { tmpdir } from "os"; import path from "path"; import { createDaemonTestContext, type DaemonTestContext } from "../test-utils/index.js"; -import type { AgentTimelineItem } from "../agent/agent-sdk-types.js"; -import type { AgentSnapshotPayload, SessionOutboundMessage } from "../messages.js"; function tmpCwd(): string { return mkdtempSync(path.join(tmpdir(), "daemon-e2e-")); diff --git a/packages/server/src/server/daemon-e2e/git-operations.e2e.test.ts b/packages/server/src/server/daemon-e2e/git-operations.e2e.test.ts index 574f266f4..162c048f0 100644 --- a/packages/server/src/server/daemon-e2e/git-operations.e2e.test.ts +++ b/packages/server/src/server/daemon-e2e/git-operations.e2e.test.ts @@ -1,14 +1,5 @@ import { describe, test, expect, beforeEach, afterEach } from "vitest"; -import { - mkdtempSync, - writeFileSync, - existsSync, - rmSync, - mkdirSync, - readFileSync, - readdirSync, - realpathSync, -} from "fs"; +import { mkdtempSync, writeFileSync, existsSync, rmSync, readFileSync, realpathSync } from "fs"; import { tmpdir } from "os"; import path from "path"; import { createDaemonTestContext, type DaemonTestContext } from "../test-utils/index.js"; @@ -16,7 +7,7 @@ import { createMessageCollector, type MessageCollector } from "../test-utils/mes import { withTimeout } from "../../utils/promise-timeout.js"; import { deriveWorktreeProjectHash } from "../../utils/worktree.js"; import type { AgentTimelineItem } from "../agent/agent-sdk-types.js"; -import type { AgentSnapshotPayload, SessionOutboundMessage } from "../messages.js"; +import type { SessionOutboundMessage } from "../messages.js"; function tmpCwd(): string { return mkdtempSync(path.join(tmpdir(), "daemon-e2e-")); diff --git a/packages/server/src/server/daemon-e2e/images.e2e.test.ts b/packages/server/src/server/daemon-e2e/images.e2e.test.ts index 461c8d4d3..44ac739ce 100644 --- a/packages/server/src/server/daemon-e2e/images.e2e.test.ts +++ b/packages/server/src/server/daemon-e2e/images.e2e.test.ts @@ -1,19 +1,9 @@ import { describe, test, expect, beforeEach, afterEach } from "vitest"; -import { - mkdtempSync, - writeFileSync, - existsSync, - rmSync, - mkdirSync, - readFileSync, - readdirSync, -} from "fs"; +import { mkdtempSync, rmSync, readdirSync } from "fs"; import { tmpdir } from "os"; import path from "path"; import { createDaemonTestContext, type DaemonTestContext } from "../test-utils/index.js"; import { createMessageCollector, type MessageCollector } from "../test-utils/message-collector.js"; -import type { AgentTimelineItem } from "../agent/agent-sdk-types.js"; -import type { AgentSnapshotPayload, SessionOutboundMessage } from "../messages.js"; function tmpCwd(): string { return mkdtempSync(path.join(tmpdir(), "daemon-e2e-")); diff --git a/packages/server/src/server/daemon-e2e/permissions-codex.e2e.test.ts b/packages/server/src/server/daemon-e2e/permissions-codex.e2e.test.ts index 159191cf4..b59dd5c94 100644 --- a/packages/server/src/server/daemon-e2e/permissions-codex.e2e.test.ts +++ b/packages/server/src/server/daemon-e2e/permissions-codex.e2e.test.ts @@ -1,18 +1,9 @@ import { describe, test, expect, beforeEach, afterEach } from "vitest"; -import { - mkdtempSync, - writeFileSync, - existsSync, - rmSync, - mkdirSync, - readFileSync, - readdirSync, -} from "fs"; +import { mkdtempSync, existsSync, rmSync, readFileSync } from "fs"; import { tmpdir } from "os"; import path from "path"; import { createDaemonTestContext, type DaemonTestContext } from "../test-utils/index.js"; -import type { AgentTimelineItem } from "../agent/agent-sdk-types.js"; -import type { AgentSnapshotPayload, SessionOutboundMessage } from "../messages.js"; +import type { SessionOutboundMessage } from "../messages.js"; function tmpCwd(): string { return mkdtempSync(path.join(tmpdir(), "daemon-e2e-")); diff --git a/packages/server/src/server/daemon-e2e/tool-calls.e2e.test.ts b/packages/server/src/server/daemon-e2e/tool-calls.e2e.test.ts index 1026812e9..064477df9 100644 --- a/packages/server/src/server/daemon-e2e/tool-calls.e2e.test.ts +++ b/packages/server/src/server/daemon-e2e/tool-calls.e2e.test.ts @@ -1,19 +1,11 @@ import { describe, test, expect, beforeEach, afterEach } from "vitest"; -import { - mkdtempSync, - writeFileSync, - existsSync, - rmSync, - mkdirSync, - readFileSync, - readdirSync, -} from "fs"; +import { mkdtempSync, writeFileSync, rmSync, readdirSync } from "fs"; import { tmpdir } from "os"; import path from "path"; import { createDaemonTestContext, type DaemonTestContext } from "../test-utils/index.js"; import { createMessageCollector } from "../test-utils/message-collector.js"; import type { AgentTimelineItem } from "../agent/agent-sdk-types.js"; -import type { AgentSnapshotPayload, SessionOutboundMessage } from "../messages.js"; +import type { SessionOutboundMessage } from "../messages.js"; function tmpCwd(): string { return mkdtempSync(path.join(tmpdir(), "daemon-e2e-")); diff --git a/packages/server/src/server/persistence-hooks.test.ts b/packages/server/src/server/persistence-hooks.test.ts index d1ce731fc..ffab6992a 100644 --- a/packages/server/src/server/persistence-hooks.test.ts +++ b/packages/server/src/server/persistence-hooks.test.ts @@ -1,11 +1,7 @@ import { describe, expect, test, vi } from "vitest"; import type { ManagedAgent } from "./agent/agent-manager.js"; import type { StoredAgentRecord } from "./agent/agent-storage.js"; -import { - attachAgentStoragePersistence, - buildConfigOverrides, - buildSessionConfig, -} from "./persistence-hooks.js"; +import { buildConfigOverrides, buildSessionConfig } from "./persistence-hooks.js"; import type { AgentPermissionRequest, AgentSession, diff --git a/packages/server/src/server/speech/providers/openai/stt.ts b/packages/server/src/server/speech/providers/openai/stt.ts index 8ad596972..a61fb97ee 100644 --- a/packages/server/src/server/speech/providers/openai/stt.ts +++ b/packages/server/src/server/speech/providers/openai/stt.ts @@ -250,7 +250,7 @@ export class OpenAISTT implements SpeechToTextProvider { if (tempFilePath) { try { await unlink(tempFilePath); - } catch (cleanupError) { + } catch { logger.warn({ tempFilePath }, "Failed to clean up temp file"); } } diff --git a/packages/server/src/server/worktree-session.test.ts b/packages/server/src/server/worktree-session.test.ts index 9caa59e23..bf5cf3945 100644 --- a/packages/server/src/server/worktree-session.test.ts +++ b/packages/server/src/server/worktree-session.test.ts @@ -13,7 +13,6 @@ import { afterEach, describe, expect, test, vi } from "vitest"; import pino, { type Logger } from "pino"; import type { SessionOutboundMessage, WorkspaceDescriptorPayload } from "./messages.js"; -import { ScriptRouteStore } from "./script-proxy.js"; import { archivePaseoWorktree } from "./paseo-worktree-archive-service.js"; import { buildAgentSessionConfig, diff --git a/packages/server/src/tasks/cli.ts b/packages/server/src/tasks/cli.ts index 4cf9dd610..083a5646b 100644 --- a/packages/server/src/tasks/cli.ts +++ b/packages/server/src/tasks/cli.ts @@ -1,12 +1,12 @@ #!/usr/bin/env node import { Command } from "commander"; -import { appendFileSync, existsSync, openSync, readFileSync } from "node:fs"; +import { appendFileSync, existsSync, readFileSync } from "node:fs"; import { resolve } from "node:path"; import { FileTaskStore } from "./task-store.js"; import { computeExecutionOrder, buildSortedChildrenMap } from "./execution-order.js"; import { resolvePackageVersion } from "../server/package-version.js"; import { spawnProcess } from "../utils/spawn.js"; -import type { AgentType, ModelName, Task } from "./types.js"; +import type { AgentType, Task } from "./types.js"; const TASKS_DIR = resolve(process.cwd(), ".tasks"); const store = new FileTaskStore(TASKS_DIR); diff --git a/packages/server/src/terminal/terminal-manager.test.ts b/packages/server/src/terminal/terminal-manager.test.ts index 974b52c99..51b86fcb8 100644 --- a/packages/server/src/terminal/terminal-manager.test.ts +++ b/packages/server/src/terminal/terminal-manager.test.ts @@ -1,6 +1,6 @@ -import { describe, it, expect, afterEach, vi } from "vitest"; +import { describe, it, expect, afterEach } from "vitest"; import { createTerminalManager, type TerminalManager } from "./terminal-manager.js"; -import { existsSync, mkdtempSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs"; +import { existsSync, mkdtempSync, mkdirSync, readFileSync, rmSync } from "node:fs"; import { join } from "node:path"; import { tmpdir } from "node:os"; diff --git a/packages/server/src/utils/checkout-git.ts b/packages/server/src/utils/checkout-git.ts index a09399d58..519993539 100644 --- a/packages/server/src/utils/checkout-git.ts +++ b/packages/server/src/utils/checkout-git.ts @@ -710,7 +710,7 @@ function isGitError(error: unknown): boolean { async function requireGitRepo(cwd: string): Promise { try { await runGitCommand(["rev-parse", "--git-dir"], { cwd, env: READ_ONLY_GIT_ENV }); - } catch (error) { + } catch { throw new NotGitRepoError(cwd); } } diff --git a/packages/website/src/components/landing-page.tsx b/packages/website/src/components/landing-page.tsx index e28ec048a..196bdeb4e 100644 --- a/packages/website/src/components/landing-page.tsx +++ b/packages/website/src/components/landing-page.tsx @@ -1,12 +1,5 @@ import * as React from "react"; -import { - motion, - AnimatePresence, - useInView, - useScroll, - useTransform, - useMotionValueEvent, -} from "framer-motion"; +import { motion, AnimatePresence, useInView, useScroll, useTransform } from "framer-motion"; import { CursorFieldProvider } from "~/components/butterfly"; import { CommandDialog } from "~/components/command-dialog"; import {