'use client'; import React from 'react'; import SessionAlerts from '../shell/SessionAlerts'; import TopStatusBar from '../shell/TopStatusBar'; import WorkspaceShell from '../shell/WorkspaceShell'; import Workspace from '../Workspace'; import VideoPlayer from '../VideoPlayer'; import RewriteInspector from '../rewrite/RewriteInspector'; import DevtoolsComposer from './DevtoolsComposer'; import DevtoolsDrawer from './DevtoolsDrawer'; import { DEFAULT_GENERATION_MODE, GENERATION_MODES, type GenerationMode } from '@/lib/generationMode'; interface DevtoolsShellProps { connected?: boolean; gpuAssigned?: boolean; sessionStarted?: boolean; queuePosition?: number; connecting?: boolean; storyPresets?: Record[]; selectedPresetId?: string; enhancementEnabled?: boolean; autoExtensionEnabled?: boolean; loopGenerationEnabled?: boolean; canJoinSession?: boolean; canSubmitContinuation?: boolean; editableMode?: boolean; demoMode?: boolean; editableCanJoin?: boolean; curatedPromptLimit?: number; maxCuratedPromptCount?: number; generationMode?: GenerationMode; supportedGenerationModes?: readonly GenerationMode[]; conditioningPanel?: React.ReactNode; onGenerationModeChange?: (mode: GenerationMode) => void; onPresetChange?: (e: React.ChangeEvent) => void; onEnhancementToggle?: (e: React.ChangeEvent) => void; onCuratedPromptLimitChange?: (e: React.ChangeEvent) => void; onAutoExtensionToggle?: (e: React.ChangeEvent) => void; onLoopToggle?: (e: React.ChangeEvent) => void; onJoin?: () => void; onLeave?: () => void; sessionNotice?: string; generationCapReached?: boolean; generationSegmentCap?: number; onRestartGeneration?: () => void; selectedPreset?: Record | null; editableSegments?: string[]; customPresetId?: string; customPresetLabel?: string; currentPromptWindowPrompts?: string[]; appendingPromptWindow?: boolean; appendPromptWindowStatus?: string; appendPromptWindowError?: string; onCustomPresetIdInput?: (e: React.ChangeEvent) => void; onCustomPresetLabelInput?: (e: React.ChangeEvent) => void; onAddSegment?: () => void; onResetToPreset?: () => void; onExport?: () => void; onAppendPromptWindowToJson?: () => void; onRemoveSegment?: (index: number) => void; onUpdateSegment?: (index: number, value: string) => void; seedPrompts?: string[]; playingSeedPromptIndex?: number | null; generatingSeedPromptIndex?: number | null; livePromptDraft?: string; livePromptRewriteMode?: boolean; rewritingSeedPrompts?: boolean; promptEvents?: Record[]; onLivePromptInput?: (e: React.ChangeEvent) => void; onLivePromptModeToggle?: (e: React.ChangeEvent) => void; onLivePromptKeydown?: (e: React.KeyboardEvent) => void; onSubmitLivePrompt?: () => void; onSpeechTranscript?: (text: string) => void; onSpeechInterimChange?: (text: string) => void; promptConfigEditorOpen?: boolean; promptConfigLoading?: boolean; promptConfigSaving?: boolean; promptConfigStatus?: string; promptConfigError?: string; nextSegmentPromptEditorOpen?: boolean; autoExtensionPromptEditorOpen?: boolean; rewriteWindowPromptEditorOpen?: boolean; nextSegmentSystemPromptDraft?: string; autoExtensionSystemPromptDraft?: string; rewriteWindowSystemPromptDraft?: string; onPromptConfigEditorToggle?: (e: React.SyntheticEvent) => void; onReloadPromptConfig?: () => void; onNextSegmentSystemPromptInput?: (e: React.ChangeEvent) => void; onAutoExtensionSystemPromptInput?: (e: React.ChangeEvent) => void; onRewriteWindowSystemPromptInput?: (e: React.ChangeEvent) => void; onSavePromptConfig?: () => void; autoExtensionTimeoutHint?: string; activeClip?: Record | null; liveClipLabel?: string; liveClipPrompt?: string; galleryClips?: Record[]; activeClipId?: string; showLivePlayback?: boolean; onSelectClip?: (id: string) => void; avPlaybackStarted?: boolean; mediaAppendError?: string | null; timeLeft?: number | null; ttffStartAtMs?: number | null; ttffValueMs?: number | null; timeBetweenVideosMs?: number | null; loadingAnimation?: boolean; formatTime?: (seconds: number) => string; formatDurationMs?: (durationMs: number) => string; onPlaying?: () => void; videoRef?: React.RefCallback; archivedPlaybackRef?: React.RefCallback; } export default function DevtoolsShell({ connected = false, gpuAssigned = false, sessionStarted = false, queuePosition = 0, connecting = false, storyPresets = [], selectedPresetId = '', enhancementEnabled = true, autoExtensionEnabled = false, loopGenerationEnabled = false, canJoinSession = false, canSubmitContinuation = false, editableMode = false, demoMode = false, editableCanJoin = false, curatedPromptLimit = 0, maxCuratedPromptCount = 0, generationMode = DEFAULT_GENERATION_MODE, supportedGenerationModes = GENERATION_MODES.map((mode) => mode.id), conditioningPanel, onGenerationModeChange = () => {}, onPresetChange = () => {}, onEnhancementToggle = () => {}, onCuratedPromptLimitChange = () => {}, onAutoExtensionToggle = () => {}, onLoopToggle = () => {}, onJoin = () => {}, onLeave = () => {}, sessionNotice = '', selectedPreset = null, editableSegments = [], customPresetId = 'custom_editable', customPresetLabel = 'Custom Editable Preset', currentPromptWindowPrompts = [], appendingPromptWindow = false, appendPromptWindowStatus = '', appendPromptWindowError = '', onCustomPresetIdInput = () => {}, onCustomPresetLabelInput = () => {}, onAddSegment = () => {}, onResetToPreset = () => {}, onExport = () => {}, onAppendPromptWindowToJson = () => {}, onRemoveSegment = () => {}, onUpdateSegment = () => {}, seedPrompts = [], playingSeedPromptIndex = null, generatingSeedPromptIndex = null, livePromptDraft = '', livePromptRewriteMode = false, rewritingSeedPrompts = false, promptEvents = [], onLivePromptInput = () => {}, onLivePromptModeToggle = () => {}, onLivePromptKeydown = () => {}, onSubmitLivePrompt = () => {}, onSpeechTranscript, onSpeechInterimChange, promptConfigEditorOpen = false, promptConfigLoading = false, promptConfigSaving = false, promptConfigStatus = '', promptConfigError = '', nextSegmentPromptEditorOpen = false, autoExtensionPromptEditorOpen = false, rewriteWindowPromptEditorOpen = true, nextSegmentSystemPromptDraft = '', autoExtensionSystemPromptDraft = '', rewriteWindowSystemPromptDraft = '', onPromptConfigEditorToggle = () => {}, onReloadPromptConfig = () => {}, onNextSegmentSystemPromptInput = () => {}, onAutoExtensionSystemPromptInput = () => {}, onRewriteWindowSystemPromptInput = () => {}, onSavePromptConfig = () => {}, autoExtensionTimeoutHint = '', activeClip = null, showLivePlayback = true, avPlaybackStarted = false, mediaAppendError = null, timeLeft = null, ttffStartAtMs = null, ttffValueMs = null, timeBetweenVideosMs = null, loadingAnimation = false, formatTime = (seconds) => `${seconds}`, formatDurationMs = (durationMs) => `${durationMs}`, onPlaying = () => {}, videoRef, archivedPlaybackRef, }: DevtoolsShellProps) { return ( } workspace={
} sidebar={ } composer={ } alerts={} drawer={ } /> ); }