// @ts-nocheck import { mapState, mapWritableState } from 'pinia'; import { useConnectionStore } from '../stores/connection'; import { useFileStore } from '../stores/file'; import { useUiStore } from '../stores/ui'; import { useConversationStore } from '../stores/conversation'; import { useModelStore } from '../stores/model'; import { useChatStore } from '../stores/chat'; import { useInputStore } from '../stores/input'; import { useToolStore } from '../stores/tool'; import { useResourceStore } from '../stores/resource'; import { useFocusStore } from '../stores/focus'; import { useUploadStore } from '../stores/upload'; import { useMonitorStore } from '../stores/monitor'; import { usePolicyStore } from '../stores/policy'; export const computed = { ...mapWritableState(useConnectionStore, [ 'isConnected', 'socket', 'stopRequested', 'projectPath', 'agentVersion', 'thinkingMode', 'runMode' ]), ...mapState(useFileStore, ['contextMenu', 'fileTree', 'expandedFolders', 'todoList']), ...mapWritableState(useUiStore, [ 'sidebarCollapsed', 'workspaceCollapsed', 'chatDisplayMode', 'panelMode', 'panelMenuOpen', 'leftWidth', 'rightWidth', 'rightCollapsed', 'isResizing', 'resizingPanel', 'minPanelWidth', 'maxPanelWidth', 'quotaToast', 'toastQueue', 'confirmDialog', 'easterEgg', 'isMobileViewport', 'mobileOverlayMenuOpen', 'activeMobileOverlay' ]), ...mapWritableState(useConversationStore, [ 'conversations', 'conversationsLoading', 'hasMoreConversations', 'loadingMoreConversations', 'currentConversationId', 'currentConversationTitle', 'searchQuery', 'searchTimer', 'searchResults', 'searchActive', 'searchInProgress', 'searchMoreAvailable', 'searchOffset', 'searchTotal', 'conversationsOffset', 'conversationsLimit' ]), ...mapWritableState(useModelStore, ['currentModelKey']), ...mapState(useModelStore, ['models']), ...mapWritableState(useChatStore, [ 'messages', 'currentMessageIndex', 'streamingMessage', 'expandedBlocks', 'autoScrollEnabled', 'userScrolling', 'thinkingScrollLocks' ]), ...mapWritableState(useInputStore, [ 'inputMessage', 'inputLineCount', 'inputIsMultiline', 'inputIsFocused', 'quickMenuOpen', 'toolMenuOpen', 'settingsOpen', 'imagePickerOpen', 'videoPickerOpen', 'selectedImages', 'selectedVideos' ]), resolvedRunMode() { const allowed = ['fast', 'thinking', 'deep']; if (allowed.includes(this.runMode)) { return this.runMode; } return this.thinkingMode ? 'thinking' : 'fast'; }, headerRunModeOptions() { return [ { value: 'fast', label: '快速模式', desc: '低思考,响应更快' }, { value: 'thinking', label: '思考模式', desc: '更长思考,综合回答' }, { value: 'deep', label: '深度思考', desc: '持续推理,适合复杂任务' } ]; }, headerRunModeLabel() { const current = this.headerRunModeOptions.find((o) => o.value === this.resolvedRunMode); return current ? current.label : '快速模式'; }, currentModelLabel() { const modelStore = useModelStore(); return modelStore.currentModel?.label || 'Kimi-k2.5'; }, policyUiBlocks() { const store = usePolicyStore(); return store.uiBlocks || {}; }, adminDisabledModels() { const store = usePolicyStore(); return store.disabledModelSet; }, modelOptions() { const disabledSet = this.adminDisabledModels || new Set(); const options = this.models || []; return options.map((opt) => ({ ...opt, disabled: disabledSet.has(opt.key) })).filter((opt) => true); }, titleRibbonVisible() { return !this.isMobileViewport && this.chatDisplayMode === 'chat'; }, ...mapWritableState(useToolStore, [ 'preparingTools', 'activeTools', 'toolActionIndex', 'toolStacks', 'toolSettings', 'toolSettingsLoading' ]), ...mapWritableState(useResourceStore, [ 'tokenPanelCollapsed', 'currentContextTokens', 'currentConversationTokens', 'projectStorage', 'containerStatus', 'containerNetRate', 'usageQuota' ]), ...mapWritableState(useFocusStore, ['focusedFiles']), ...mapWritableState(useUploadStore, ['uploading', 'mediaUploading']), ...mapState(useMonitorStore, { monitorIsLocked: (store) => store.isLocked }), displayModeSwitchDisabled() { return !!this.policyUiBlocks.block_virtual_monitor; }, displayLockEngaged() { return !!this.compressionInProgress || !!this.compressing; }, streamingUi() { return this.streamingMessage || this.hasPendingToolActions(); }, composerBusy() { const monitorLock = this.monitorIsLocked && this.chatDisplayMode === 'monitor'; return this.streamingUi || this.taskInProgress || monitorLock || this.stopRequested || this.compressionInProgress || this.compressing; }, composerHeroActive() { return (this.blankHeroActive || this.blankHeroExiting) && !this.composerInteractionActive; }, composerInteractionActive() { const hasText = !!(this.inputMessage && this.inputMessage.trim().length > 0); const hasImages = Array.isArray(this.selectedImages) && this.selectedImages.length > 0; return this.quickMenuOpen || hasText || hasImages; } };