diff --git a/.github/workflows/frontend-quality.yml b/.github/workflows/frontend-quality.yml new file mode 100644 index 0000000000..d72324dd15 --- /dev/null +++ b/.github/workflows/frontend-quality.yml @@ -0,0 +1,55 @@ +name: Frontend Quality + +# Quality gate for the two frontend apps. +# Policy: legacy violations are frozen in each app's eslint-suppressions.json and +# via @ts-strict-ignore file annotations; suppressed counts may only shrink. +# Any NEW lint violation or strict-mode type error fails this workflow. + +on: + pull_request: + paths: + - "src/frontend/**" + - ".github/workflows/frontend-quality.yml" + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + quality: + name: Lint & Typecheck + runs-on: ubuntu-latest + defaults: + run: + working-directory: src/frontend + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 9.15.9 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + cache-dependency-path: src/frontend/pnpm-lock.yaml + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Lint platform + run: pnpm --filter bisheng lint + + - name: Lint client + run: pnpm --filter bishengchat lint + + - name: Typecheck platform (strict, non-exempted files) + run: pnpm --filter bisheng typecheck + + - name: Typecheck client (strict, non-exempted files) + run: pnpm --filter bishengchat typecheck diff --git a/AGENTS.md b/AGENTS.md index 244326d820..4befb8e54a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -50,6 +50,7 @@ Two React apps that **must not be mixed**. Per-app rules auto-load from each sub - **Never** introduce new UI or state-management libraries. - All code comments in English. - 403 handled automatically by response interceptors — never add 403 branches in business code. +- **Quality gate (CI-enforced, `frontend-quality.yml`)**: `pnpm lint` + `pnpm typecheck` (run from `src/frontend/`) must pass. Legacy violations are frozen — ESLint in each app's `eslint-suppressions.json`, TS strict via `// @ts-strict-ignore` file headers — and may only shrink: never hand-edit the suppressions file, never add `@ts-strict-ignore` to a new file. After fixing violations in a file, run `pnpm lint:prune` (per app) and delete its `@ts-strict-ignore` header if it now passes strict. --- diff --git a/src/frontend/client/eslint-suppressions.json b/src/frontend/client/eslint-suppressions.json new file mode 100644 index 0000000000..4c24703d61 --- /dev/null +++ b/src/frontend/client/eslint-suppressions.json @@ -0,0 +1,2398 @@ +{ + "postcss.config.cjs": { + "@typescript-eslint/no-require-imports": { + "count": 2 + } + }, + "src/@types/chat.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "src/api/approval.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 17 + } + }, + "src/api/apps.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 15 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "no-console": { + "count": 2 + }, + "prefer-const": { + "count": 6 + } + }, + "src/api/channels.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 42 + } + }, + "src/api/chat/actions.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/api/chat/data-service.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-console": { + "count": 1 + }, + "no-restricted-imports": { + "count": 1 + } + }, + "src/api/chat/headers-helpers.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-restricted-imports": { + "count": 1 + } + }, + "src/api/chatApi.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 19 + } + }, + "src/api/index.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "src/api/knowledge.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 66 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/api/linsight.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 14 + }, + "no-console": { + "count": 1 + }, + "no-useless-escape": { + "count": 3 + } + }, + "src/api/message.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "src/api/messageExport.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/api/notifications.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "src/api/permission.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 10 + } + }, + "src/api/quota.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/api/request.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/api/user.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 10 + } + }, + "src/components/AccountInfoDialog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "no-useless-escape": { + "count": 2 + } + }, + "src/components/Artifacts/Code.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + } + }, + "src/components/Artifacts/useDebounceCodeBlock.ts": { + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Audio/TTS.tsx": { + "jsx-a11y/media-has-caption": { + "count": 1 + } + }, + "src/components/Auth/AuthLayout.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Auth/Registration.tsx": { + "no-constant-binary-expression": { + "count": 1 + } + }, + "src/components/Auth/VerifyEmail.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Avator/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Banners/Banner.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Bookmarks/BookmarkEditDialog.tsx": { + "no-console": { + "count": 1 + } + }, + "src/components/ChannelMemberDialog.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Chat/AiChatInput.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 11 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/Chat/AiChatMessages.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Chat/AiMessageBubble.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "no-misleading-character-class": { + "count": 1 + } + }, + "src/components/Chat/AiModelSelect.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Chat/ChatView.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 28 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/Chat/Footer.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/components/Chat/HeaderTitle.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/Chat/Input/AgentToolSelector.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/Chat/Input/AttachmentBar.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 13 + } + }, + "src/components/Chat/Input/AudioRecorder.tsx": { + "no-console": { + "count": 1 + } + }, + "src/components/Chat/Input/ChatFormTools.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Chat/Input/ChatKnowledge.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 15 + }, + "@typescript-eslint/no-unused-vars": { + "count": 6 + } + }, + "src/components/Chat/Input/Files/FileFormWrapper.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/Chat/Input/Files/FilePreview.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 5 + } + }, + "src/components/Chat/Input/Files/FileRow.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "no-console": { + "count": 2 + } + }, + "src/components/Chat/Input/Files/MyKnowledgeView.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "no-restricted-imports": { + "count": 1 + }, + "react-hooks/rules-of-hooks": { + "count": 1 + } + }, + "src/components/Chat/Input/Files/Table/AttachFileButton.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Chat/Input/Files/Table/Columns.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/rules-of-hooks": { + "count": 8 + } + }, + "src/components/Chat/Input/Files/Table/DataTableKnowledge.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 6 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Chat/Input/Files/Table/KnowledgeColumns.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 19 + }, + "react-hooks/rules-of-hooks": { + "count": 1 + } + }, + "src/components/Chat/Input/Files/Table/SortFilterHeader.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/Chat/Input/HeaderOptions.tsx": { + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/Chat/Input/PromptsCommand.tsx": { + "jsx-a11y/no-autofocus": { + "count": 1 + } + }, + "src/components/Chat/Input/StreamAudio.tsx": { + "jsx-a11y/media-has-caption": { + "count": 1 + } + }, + "src/components/Chat/InviteCode.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/components/Chat/Landing.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "no-console": { + "count": 1 + } + }, + "src/components/Chat/Menus/BookmarkMenu.tsx": { + "no-console": { + "count": 2 + } + }, + "src/components/Chat/Menus/Presets/EditPresetDialog.tsx": { + "no-console": { + "count": 2 + } + }, + "src/components/Chat/MessageSelection/ExportFormatSheet.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/Chat/MessageSelection/MessageSelectionToolbar.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/Chat/Messages/Content/ActionIcon.tsx": { + "react/no-unknown-property": { + "count": 2 + } + }, + "src/components/Chat/Messages/Content/CitationDocumentPreviewDrawer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/Chat/Messages/Content/CitationReferencesDrawer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Chat/Messages/Content/Echarts.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/components/Chat/Messages/Content/Files.tsx": { + "no-useless-escape": { + "count": 1 + } + }, + "src/components/Chat/Messages/Content/ImageGen.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/Chat/Messages/Content/Markdown.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 2 + }, + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "no-useless-escape": { + "count": 1 + } + }, + "src/components/Chat/Messages/Content/MarkdownLite.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 2 + } + }, + "src/components/Chat/Messages/Content/Mermaid.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "no-constant-binary-expression": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Chat/Messages/Content/MessageContent.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "no-console": { + "count": 1 + } + }, + "src/components/Chat/Messages/Content/SearchWebUrls.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/components/Chat/Messages/Content/ToolCall.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Chat/Messages/Content/WrenchIcon.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Chat/Messages/Content/citationUtils.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "src/components/Chat/Messages/Content/useCitationReferencePanel.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Chat/Messages/HoverButtons.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 7 + }, + "react-hooks/rules-of-hooks": { + "count": 1 + } + }, + "src/components/Chat/Messages/Message.tsx": { + "import/no-cycle": { + "count": 1 + } + }, + "src/components/Chat/Messages/MessageParts.tsx": { + "import/no-cycle": { + "count": 1 + } + }, + "src/components/Chat/Messages/MessagesView.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 7 + } + }, + "src/components/Chat/Messages/MultiMessage.tsx": { + "import/no-cycle": { + "count": 3 + } + }, + "src/components/Chat/Messages/SiblingSwitch.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 2 + } + }, + "src/components/Chat/Messages/ToolCallDisplay.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "src/components/Chat/Presentation.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 2 + } + }, + "src/components/Conversations/Convo.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/Conversations/ConvoOptions/ConvoOptions.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/components/Endpoints/MinimalIcon.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Endpoints/Settings/OpenAI.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Files/ActionButton.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Files/DeleteIconButton.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Files/FileList/DataTableFile.tsx": { + "no-console": { + "count": 2 + } + }, + "src/components/Files/FileList/FileList.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Files/FileList/FileListItem.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Files/FileList/FilePreview.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-console": { + "count": 4 + } + }, + "src/components/Files/FileList/FileSidePanel.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 3 + } + }, + "src/components/Files/FileList/FileTableColumns.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 6 + } + }, + "src/components/Files/FileList/UploadFileModal.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-console": { + "count": 1 + } + }, + "src/components/Files/FilesSectionSelector.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Files/VectorStore/VectorStorePreview.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-console": { + "count": 2 + } + }, + "src/components/Files/VectorStore/VectorStoreSidePanel.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "no-console": { + "count": 3 + } + }, + "src/components/Input/ModelSelect/TemporaryChat.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Input/SetKeyDialog/InputWithLabel.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "src/components/Linsight/Artifacts/ResultSection.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/Linsight/Artifacts/WorkspacePanel.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/Linsight/Artifacts/artifactUtils.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 10 + } + }, + "src/components/Linsight/Artifacts/artifactUtils.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/Linsight/Execution/ConversationRound.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/Linsight/Execution/ExecutionFlow.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Linsight/Execution/KnowledgeRow.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/Linsight/Execution/PinnedTaskPanel.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/components/Linsight/Execution/StepRow.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/Linsight/Execution/TaskStepRow.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/Linsight/Execution/TaskTurnPanel.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Linsight/Execution/stepUtils.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Linsight/Input/ContextChips.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/components/Linsight/Input/KnowledgeSpaceSelect.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "src/components/Linsight/Input/ModelSelector.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + } + }, + "src/components/Linsight/Input/TaskModeChatInput.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 11 + } + }, + "src/components/Linsight/Input/TaskModeInput.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 19 + } + }, + "src/components/Messages/ContentRender.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Messages/MessageContent.tsx": { + "import/no-cycle": { + "count": 1 + } + }, + "src/components/Nav/AccountSettings.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 5 + } + }, + "src/components/Nav/HubModuleNavTabs.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Nav/MobileAppHistoryDropdown.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/Nav/MobileNav.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Nav/Nav.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Nav/NewChat.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/Nav/SearchBar.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + } + }, + "src/components/Nav/Settings.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "src/components/Nav/SettingsTabs/Account/Avatar.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Nav/SettingsTabs/Account/DisableTwoFactorToggle.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/components/Nav/SettingsTabs/Account/TwoFactorAuthentication.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Nav/SettingsTabs/Account/TwoFactorPhases/SetupPhase.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Nav/SettingsTabs/Chat/ShowCodeSwitch.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Nav/SettingsTabs/Data/ImportConversations.tsx": { + "no-console": { + "count": 1 + } + }, + "src/components/Nav/SettingsTabs/Data/SharedLinks.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Nav/SettingsTabs/General/General.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/NotificationsDialog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 23 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-console": { + "count": 8 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/components/PreviewFile/DocxFileViewer.tsx": { + "no-useless-escape": { + "count": 1 + } + }, + "src/components/PreviewFile/FileView.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "no-console": { + "count": 2 + }, + "no-useless-escape": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 4 + } + }, + "src/components/PreviewFile/TxtFileViewer.tsx": { + "no-useless-escape": { + "count": 1 + } + }, + "src/components/PreviewFile/index.tsx": { + "no-console": { + "count": 1 + }, + "no-useless-escape": { + "count": 1 + } + }, + "src/components/Prompts/Groups/DashGroupItem.tsx": { + "no-console": { + "count": 1 + } + }, + "src/components/Prompts/Groups/VariableForm.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 4 + } + }, + "src/components/Prompts/PromptDetails.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 4 + } + }, + "src/components/Prompts/PromptEditor.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 3 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + } + }, + "src/components/Prompts/PromptForm.tsx": { + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/Share/Message.tsx": { + "import/no-cycle": { + "count": 1 + } + }, + "src/components/Share/MessageIcon.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Share/MultiMessage.tsx": { + "import/no-cycle": { + "count": 1 + } + }, + "src/components/Share/ShareChat.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/SidePanel/Agents/ActionsPanel.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/SidePanel/Builder/ActionsInput.tsx": { + "no-console": { + "count": 2 + } + }, + "src/components/SidePanel/Builder/ActionsPanel.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/SidePanel/Builder/AssistantAvatar.tsx": { + "no-console": { + "count": 2 + } + }, + "src/components/SidePanel/Builder/ContextButton.tsx": { + "no-console": { + "count": 1 + } + }, + "src/components/SidePanel/Builder/ImageVision.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/SidePanel/Builder/Retrieval.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/SidePanel/Nav.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + } + }, + "src/components/SidePanel/Parameters/DynamicTags.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/SidePanel/Parameters/DynamicTextarea.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/SidePanel/SidePanel.tsx": { + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/SidePanel/SidePanelGroup.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 6 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/SidebarListMoreMenu.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Sop/Header.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "src/components/Sop/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + }, + "react-hooks/rules-of-hooks": { + "count": 6 + } + }, + "src/components/Voice/SpeechToText.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 5 + } + }, + "src/components/Voice/TextToSpeechButton.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/approval/ApprovalCenterDialog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 16 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/components/icons/DocxIcon.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/icons/PptxIcon.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/icons/TxtIcon.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/icons/XlsxIcon.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/illustrations/KnowledgeSpaceIcon.tsx": { + "react/no-danger": { + "count": 1 + } + }, + "src/components/permission/PermissionBadge.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/permission/PermissionListTab.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/svg/DownIcon.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/ui/MultiSelect.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/components/ui/MultiSelectDropDown.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + } + }, + "src/components/ui/OriginalDialog.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/ui/TermsAndConditionsModal.tsx": { + "jsx-a11y/no-noninteractive-tabindex": { + "count": 1 + } + }, + "src/components/ui/icon/File/FileIcon.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/ui/icon/Loading/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/ui/icon/Voice/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/design-token.cjs": { + "@typescript-eslint/no-require-imports": { + "count": 1 + } + }, + "src/hooks/Audio/useAudioRef.ts": { + "no-console": { + "count": 3 + } + }, + "src/hooks/Audio/useCustomAudioRef.ts": { + "no-console": { + "count": 4 + } + }, + "src/hooks/Audio/usePauseGlobalAudio.ts": { + "no-console": { + "count": 1 + } + }, + "src/hooks/AuthContext.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 4 + } + }, + "src/hooks/Chat/useChatFunctions.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/hooks/Chat/useChatHelpers.ts": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/hooks/Conversations/useDebouncedInput.ts": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/hooks/Conversations/useGenerateConvo.ts": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/hooks/Conversations/usePresetIndexOptions.ts": { + "no-constant-binary-expression": { + "count": 1 + } + }, + "src/hooks/Conversations/useSetIndexOptions.ts": { + "no-constant-binary-expression": { + "count": 1 + } + }, + "src/hooks/Files/useDelayedUploadToast.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/hooks/Files/useDeleteFilesFromTable.tsx": { + "no-console": { + "count": 2 + } + }, + "src/hooks/Files/useDragHelpers.ts": { + "no-console": { + "count": 1 + } + }, + "src/hooks/Files/useFileDeletion.ts": { + "no-console": { + "count": 1 + } + }, + "src/hooks/Files/useFileHandling.ts": { + "no-console": { + "count": 3 + } + }, + "src/hooks/Input/useAutoSave.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/hooks/Input/useQueryParams.ts": { + "no-console": { + "count": 1 + } + }, + "src/hooks/Input/useSpeechToTextBrowser.ts": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/hooks/Input/useSpeechToTextExternal.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/hooks/Input/useTextToSpeechExternal.ts": { + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "no-console": { + "count": 2 + } + }, + "src/hooks/Input/useTextarea.ts": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/hooks/Messages/useMessageScrolling.ts": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + } + }, + "src/hooks/Messages/useSubmitMessage.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/hooks/Prompts/usePromptGroupsNav.ts": { + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/hooks/SSE/useEventHandlers.ts": { + "no-console": { + "count": 4 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/hooks/SSE/useSSE.ts": { + "@typescript-eslint/ban-ts-comment": { + "count": 3 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 6 + } + }, + "src/hooks/Websocket/index.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 9 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-console": { + "count": 3 + }, + "no-empty": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 5 + } + }, + "src/hooks/queries/auth/mutations.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/hooks/queries/files/queries.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/hooks/useAiChat.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 12 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-console": { + "count": 4 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/hooks/useAiChatSSE.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "no-console": { + "count": 3 + } + }, + "src/hooks/useAutoScroll.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/hooks/useChannelChat.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/hooks/useFileChat.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/hooks/useFolderChat.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "src/hooks/useKnowledgeAiSession.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/hooks/useLinsightManager.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/hooks/useLinsightQueuePolling.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/hooks/useLocalize.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/hooks/useMessageSelection.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/hooks/useNewConvo.ts": { + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/hooks/useStreamChatSSE.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/hooks/useTimeout.tsx": { + "no-console": { + "count": 1 + } + }, + "src/hooks/useToast.ts": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/layouts/MainLayout.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/ChannelSquare.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/DevLogin/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/MenuUnavailablePage.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Page404.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/Subscription/AiChat/AiAssistantPanel.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/pages/Subscription/AiChat/ArticleAiDock.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/Subscription/AiChat/FileAiDock.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/Subscription/Article/AddToKnowledgeModal.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Subscription/Article/ArticleDetail.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "src/pages/Subscription/ArticleList/ArticleCard.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-useless-escape": { + "count": 2 + } + }, + "src/pages/Subscription/ArticleList/ArticleList.tsx": { + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/Subscription/ArticleList/ChannelSwitcher.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/Subscription/ChannelDiscoveryHome.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + } + }, + "src/pages/Subscription/ChannelLayout.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Subscription/ChannelPreviewDrawer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 9 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Subscription/ChannelSquareTabs.tsx": { + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/Subscription/CreateChannel/AddSourceDropdown.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Subscription/CreateChannel/CrawlPreviewDialog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + } + }, + "src/pages/Subscription/CreateChannel/CreateChannelDrawer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 9 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Subscription/CreateChannel/FilterConditionEditor.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/Subscription/CreateChannel/SyncSpaceItem.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/Subscription/Sidebar/ChannelSidebar.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/Subscription/Sidebar/SectionHeader.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/Subscription/hooks/useArticleShare.ts": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Subscription/hooks/useChannelActions.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/pages/Subscription/hooks/useCrawlQueue.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "src/pages/Subscription/hooks/useCreateChannelForm.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 10 + } + }, + "src/pages/Subscription/hooks/useResizablePanel.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/Subscription/hooks/useSourceManager.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "no-empty": { + "count": 2 + }, + "no-unsafe-finally": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Subscription/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-console": { + "count": 2 + } + }, + "src/pages/appChat/ChatInput.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/appChat/ChatMessages.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "no-console": { + "count": 1 + } + }, + "src/pages/appChat/ChatView.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/appChat/SideNav.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/appChat/appUtils/skillMethod.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "src/pages/appChat/components/AppInfoCard.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/appChat/components/AppSidebarConvoItem.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/pages/appChat/components/AppSwitcherDropdown.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/appChat/components/ChatFile.tsx": { + "no-useless-escape": { + "count": 1 + } + }, + "src/pages/appChat/components/ConversationList.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/appChat/components/InputFileComponent.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 6 + }, + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/appChat/components/InputFiles.tsx": { + "no-console": { + "count": 2 + } + }, + "src/pages/appChat/components/InputForm.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/appChat/components/InputFormSkill.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/appChat/components/MessageBs.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/appChat/components/MessageButtons.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/appChat/components/MessageNodeRun.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/appChat/components/MessageRunlog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/appChat/components/MessageUser.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/appChat/components/ResouceModal.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-useless-escape": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 5 + } + }, + "src/pages/appChat/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "no-case-declarations": { + "count": 2 + }, + "no-empty": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + }, + "react-hooks/rules-of-hooks": { + "count": 17 + } + }, + "src/pages/appChat/store/atoms.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + }, + "@typescript-eslint/no-unused-vars": { + "count": 11 + } + }, + "src/pages/appChat/useAreaText.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-case-declarations": { + "count": 2 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/appChat/useChatHelpers.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 11 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-console": { + "count": 1 + } + }, + "src/pages/appChat/useMessages.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/appChat/useWebsocket.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "no-case-declarations": { + "count": 8 + }, + "no-console": { + "count": 4 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/apps/components/AgentCard.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/apps/components/AgentGrid.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/apps/components/SearchOverlay.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "no-console": { + "count": 3 + } + }, + "src/pages/apps/explore.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/apps/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/knowledge/CreateKnowledgeSpaceDrawer.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/FilePreview/DocumentViewer.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/knowledge/FilePreview/RichKnowledgePreview.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/FilePreview/index.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/FilePreview/viewers/DocxViewer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/FilePreview/viewers/ExcelPreview.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "no-console": { + "count": 3 + }, + "no-useless-escape": { + "count": 4 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/FilePreview/viewers/HtmlViewer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/FilePreview/viewers/MarkdownViewer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/FilePreview/viewers/TextViewer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/KnowledgeSpacePreviewDrawer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/knowledge/KnowledgeSquare.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/pages/knowledge/SpaceDetail/AiChat/ConversationHistory.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/pages/knowledge/SpaceDetail/AiChat/KnowledgeAiBottomDock.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/knowledge/SpaceDetail/AiChat/KnowledgeAiInput.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/SpaceDetail/CompoundSearchInput.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/SpaceDetail/EditTagsModal.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/SpaceDetail/FileCard.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/knowledge/SpaceDetail/FileIcon.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/knowledge/SpaceDetail/FileTable.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "src/pages/knowledge/SpaceDetail/KnowledgeSpaceHeader.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 5 + } + }, + "src/pages/knowledge/SpaceDetail/MoveToDialog.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 2 + } + }, + "src/pages/knowledge/SpaceDetail/SelectionPathBreadcrumb.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/knowledge/SpaceDetail/SimilarDocumentDialog.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/knowledge/SpaceDetail/VersionManagementDialog.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/knowledge/SpaceDetail/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 7 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/hooks/useFileManager.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/pages/knowledge/hooks/useFileUpload.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 5 + } + }, + "src/pages/knowledge/hooks/useInlineRename.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/hooks/useKnowledgeSpacePermissions.ts": { + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/knowledge/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "no-console": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/knowledge/sidebar/KnowledgeSpaceCardItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/knowledge/sidebar/KnowledgeSpaceItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/knowledge/sidebar/KnowledgeSpaceSidebar.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/knowledge/webLinkI18n.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/share.tsx": { + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/standaloneChat/StandaloneChatPage.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/pages/standaloneChat/StandaloneSideNav.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/pages/standaloneChat/components/GuestConvoItem.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/standaloneChat/hooks/useStandaloneSidebar.ts": { + "no-console": { + "count": 3 + } + }, + "src/routes/ChatRoute.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/routes/Layouts/DashBreadcrumb.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/routes/Root.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/routes/index.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + } + }, + "src/routes/useAuthRedirect.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/store/language.ts": { + "no-empty": { + "count": 3 + } + }, + "src/store/linsight.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 19 + } + }, + "src/store/modeltype.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/types/chat/agents.ts": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/types/chat/file-config.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/types/chat/schemas.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/utils/cleanupPreset.ts": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + } + }, + "src/utils/files.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-console": { + "count": 1 + } + }, + "src/utils/index.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "no-console": { + "count": 2 + }, + "no-restricted-imports": { + "count": 1 + } + }, + "src/utils/json.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/utils/logger.ts": { + "no-console": { + "count": 4 + } + }, + "src/utils/resetConvo.ts": { + "no-console": { + "count": 1 + } + }, + "src/vite-env.d.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "tailwind.config.cjs": { + "@typescript-eslint/no-require-imports": { + "count": 3 + } + }, + "tailwind.docs.config.cjs": { + "@typescript-eslint/no-require-imports": { + "count": 2 + } + }, + "test/extract_ts.mjs": { + "no-console": { + "count": 1 + } + }, + "test/replace_ts.mjs": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-console": { + "count": 2 + } + }, + "test/setupTests.js": { + "@typescript-eslint/no-require-imports": { + "count": 1 + }, + "no-undef": { + "count": 6 + } + } +} \ No newline at end of file diff --git a/src/frontend/client/eslint.config.mjs b/src/frontend/client/eslint.config.mjs new file mode 100644 index 0000000000..42ca50ed89 --- /dev/null +++ b/src/frontend/client/eslint.config.mjs @@ -0,0 +1,51 @@ +// ESLint 9 flat config — quality gate for the client app. +// Policy: legacy violations are frozen in eslint-suppressions.json (may only shrink); +// new code must be clean. Run `npm run lint` locally, CI enforces on every PR. +import js from '@eslint/js' +import tseslint from 'typescript-eslint' +import reactHooks from 'eslint-plugin-react-hooks' +import globals from 'globals' + +export default tseslint.config( + { + ignores: [ + 'dist/**', + 'build/**', + 'node_modules/**', + 'public/**', + 'coverage/**', + 'doc_build/**', + 'scripts/**', + '*.config.{js,ts,mjs,mts}', + 'tailwind.config.js', + 'postcss.config.js', + ], + }, + js.configs.recommended, + ...tseslint.configs.recommended, + { + languageOptions: { + globals: { ...globals.browser, ...globals.es2021, ...globals.node }, + parserOptions: { ecmaFeatures: { jsx: true } }, + }, + plugins: { 'react-hooks': reactHooks }, + rules: { + ...reactHooks.configs.recommended.rules, + // All gate rules are "error" so they are frozen via suppressions and block new code. + 'react-hooks/exhaustive-deps': 'error', + '@typescript-eslint/no-explicit-any': 'error', + '@typescript-eslint/ban-ts-comment': ['error', { 'ts-expect-error': 'allow-with-description' }], + 'no-console': ['error', { allow: ['warn', 'error'] }], + // C7: HTTP must go through the wrapped request module. + 'no-restricted-imports': [ + 'error', + { paths: [{ name: 'axios', message: 'Use ~/api/request (wrapped module) instead of raw axios. See constitution C7.' }] }, + ], + }, + }, + { + // The wrapper itself legitimately imports axios. + files: ['src/api/request.ts'], + rules: { 'no-restricted-imports': 'off' }, + }, +) diff --git a/src/frontend/client/package.json b/src/frontend/client/package.json index d4a900f885..31a6493a23 100644 --- a/src/frontend/client/package.json +++ b/src/frontend/client/package.json @@ -5,6 +5,10 @@ "type": "module", "scripts": { "check-imports": "node scripts/check-case-sensitive-imports.mjs", + "lint": "eslint . --suppressions-location eslint-suppressions.json", + "lint:fix": "eslint . --suppressions-location eslint-suppressions.json --fix", + "lint:prune": "eslint . --suppressions-location eslint-suppressions.json --prune-suppressions", + "typecheck": "tsc-strict", "dev": "cross-env NODE_ENV=development vite", "dev:docs": "rspress dev", "build:docs": "rspress build", diff --git a/src/frontend/client/src/@types/chat.ts b/src/frontend/client/src/@types/chat.ts index 6df2b62470..cbe4548893 100644 --- a/src/frontend/client/src/@types/chat.ts +++ b/src/frontend/client/src/@types/chat.ts @@ -20,7 +20,7 @@ export interface FlowData { // export type ChatMessageType = { - message: string | Object; + message: string | object; template?: string; isSend: boolean; thought?: string; diff --git a/src/frontend/client/src/a11y/LiveMessage.tsx b/src/frontend/client/src/a11y/LiveMessage.tsx index b773deae53..51f9dbdcdc 100644 --- a/src/frontend/client/src/a11y/LiveMessage.tsx +++ b/src/frontend/client/src/a11y/LiveMessage.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React, { useEffect, useContext } from 'react'; import AnnouncerContext from '~/Providers/AnnouncerContext'; diff --git a/src/frontend/client/src/api/approval.ts b/src/frontend/client/src/api/approval.ts index 51f0296915..0d7568e4f4 100644 --- a/src/frontend/client/src/api/approval.ts +++ b/src/frontend/client/src/api/approval.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import request from "./request"; import { FileStatus, FileType, type KnowledgeFile } from "./knowledge"; diff --git a/src/frontend/client/src/api/apps.ts b/src/frontend/client/src/api/apps.ts index deba087393..4b54d4d954 100644 --- a/src/frontend/client/src/api/apps.ts +++ b/src/frontend/client/src/api/apps.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { generateUUID } from "~/utils"; import request from "./request"; diff --git a/src/frontend/client/src/api/chat/actions.ts b/src/frontend/client/src/api/chat/actions.ts index ab29eb8d1d..48ff56a028 100644 --- a/src/frontend/client/src/api/chat/actions.ts +++ b/src/frontend/client/src/api/chat/actions.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { z } from 'zod'; import _axios from 'axios'; import { URL } from 'url'; diff --git a/src/frontend/client/src/api/chat/createPayload.ts b/src/frontend/client/src/api/chat/createPayload.ts index c858861470..05fa28b118 100644 --- a/src/frontend/client/src/api/chat/createPayload.ts +++ b/src/frontend/client/src/api/chat/createPayload.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import type * as t from '~/types/chat/types'; import { EndpointURLs } from '~/types/chat/config'; import * as s from '~/types/chat/schemas'; diff --git a/src/frontend/client/src/api/chat/data-service.ts b/src/frontend/client/src/api/chat/data-service.ts index 8ebab1fdfe..66d07af89c 100644 --- a/src/frontend/client/src/api/chat/data-service.ts +++ b/src/frontend/client/src/api/chat/data-service.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import type { AxiosResponse } from 'axios'; import * as endpoints from './api-endpoints'; import * as config from '~/types/chat/config'; diff --git a/src/frontend/client/src/api/chat/utils.ts b/src/frontend/client/src/api/chat/utils.ts index de41a93dc6..c714f5fade 100644 --- a/src/frontend/client/src/api/chat/utils.ts +++ b/src/frontend/client/src/api/chat/utils.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore export const envVarRegex = /^\${(.+)}$/; /** Extracts the value of an environment variable from a string. */ diff --git a/src/frontend/client/src/api/chatApi.ts b/src/frontend/client/src/api/chatApi.ts index 2c88e39d23..4533c59a23 100644 --- a/src/frontend/client/src/api/chatApi.ts +++ b/src/frontend/client/src/api/chatApi.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore /** * Direct API calls for the AI chat system. */ diff --git a/src/frontend/client/src/api/knowledge.ts b/src/frontend/client/src/api/knowledge.ts index 7203bac4b9..f1a120da14 100644 --- a/src/frontend/client/src/api/knowledge.ts +++ b/src/frontend/client/src/api/knowledge.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import request from "./request"; import { resolveKnowledgeParseFailureMessage } from "./knowledgeParseFailureMessage"; @@ -1171,7 +1172,7 @@ export async function deleteSpaceApi(space_id: string): Promise { export async function getFolderParentPathApi( spaceId: string, folderId: string - // eslint-disable-next-line @typescript-eslint/no-explicit-any + ): Promise> { const res = await request.get>( `/api/v1/knowledge/space/${spaceId}/folders/${folderId}/parent` diff --git a/src/frontend/client/src/api/knowledgeParseFailureMessage.ts b/src/frontend/client/src/api/knowledgeParseFailureMessage.ts index 887ec2688e..8811a7376a 100644 --- a/src/frontend/client/src/api/knowledgeParseFailureMessage.ts +++ b/src/frontend/client/src/api/knowledgeParseFailureMessage.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import i18next from "i18next"; const ASR_ERROR_CODES = new Set([10014, 10015, 10016, 10017, 10018, 10019]); diff --git a/src/frontend/client/src/api/linsight.ts b/src/frontend/client/src/api/linsight.ts index d9e703de0c..46dec2a95b 100644 --- a/src/frontend/client/src/api/linsight.ts +++ b/src/frontend/client/src/api/linsight.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import {LinsightInfo} from "~/store/linsight"; import request from "./request"; diff --git a/src/frontend/client/src/api/request.ts b/src/frontend/client/src/api/request.ts index 7f03e59ace..e04d638cec 100644 --- a/src/frontend/client/src/api/request.ts +++ b/src/frontend/client/src/api/request.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore /* eslint-disable @typescript-eslint/no-explicit-any */ import axios, { AxiosError, AxiosRequestConfig } from 'axios'; import i18next from "i18next"; diff --git a/src/frontend/client/src/components/Artifacts/Mermaid.tsx b/src/frontend/client/src/components/Artifacts/Mermaid.tsx index 551a5a5a78..699462b69c 100644 --- a/src/frontend/client/src/components/Artifacts/Mermaid.tsx +++ b/src/frontend/client/src/components/Artifacts/Mermaid.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React, { useEffect, useRef, useState } from 'react'; import mermaid from 'mermaid'; import { TransformWrapper, TransformComponent, ReactZoomPanPinchRef } from 'react-zoom-pan-pinch'; diff --git a/src/frontend/client/src/components/Artifacts/useDebounceCodeBlock.ts b/src/frontend/client/src/components/Artifacts/useDebounceCodeBlock.ts index 27aaf5bc83..4936558316 100644 --- a/src/frontend/client/src/components/Artifacts/useDebounceCodeBlock.ts +++ b/src/frontend/client/src/components/Artifacts/useDebounceCodeBlock.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore // client/src/hooks/useDebounceCodeBlock.ts import { useCallback, useEffect } from 'react'; import debounce from 'lodash/debounce'; diff --git a/src/frontend/client/src/components/Avator/index.tsx b/src/frontend/client/src/components/Avator/index.tsx index a4f1e01445..ed7620b9e4 100644 --- a/src/frontend/client/src/components/Avator/index.tsx +++ b/src/frontend/client/src/components/Avator/index.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useMemo } from "react"; import { cn } from "~/utils" import { AssistantIcon } from "~/components/ui/icon/AssistantIcon"; diff --git a/src/frontend/client/src/components/Banners/Banner.tsx b/src/frontend/client/src/components/Banners/Banner.tsx index 3ed0663472..ca0abfd832 100644 --- a/src/frontend/client/src/components/Banners/Banner.tsx +++ b/src/frontend/client/src/components/Banners/Banner.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useRef } from 'react'; import { XIcon } from 'lucide-react'; import { useRecoilState } from 'recoil'; diff --git a/src/frontend/client/src/components/Bookmarks/DeleteBookmarkButton.tsx b/src/frontend/client/src/components/Bookmarks/DeleteBookmarkButton.tsx index add7a87c80..f7c307d283 100644 --- a/src/frontend/client/src/components/Bookmarks/DeleteBookmarkButton.tsx +++ b/src/frontend/client/src/components/Bookmarks/DeleteBookmarkButton.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useCallback, useState } from 'react'; import type { FC } from 'react'; import { Label, OGDialog, OGDialogTrigger, TooltipAnchor } from '~/components/ui'; diff --git a/src/frontend/client/src/components/Bookmarks/EditBookmarkButton.tsx b/src/frontend/client/src/components/Bookmarks/EditBookmarkButton.tsx index 074762745f..b8c2cd70dd 100644 --- a/src/frontend/client/src/components/Bookmarks/EditBookmarkButton.tsx +++ b/src/frontend/client/src/components/Bookmarks/EditBookmarkButton.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useState } from 'react'; import type { FC } from 'react'; import type { TConversationTag } from '~/types/chat'; diff --git a/src/frontend/client/src/components/Chat/AddMultiConvo.tsx b/src/frontend/client/src/components/Chat/AddMultiConvo.tsx index 8ee85ddcab..0dc963e5cf 100644 --- a/src/frontend/client/src/components/Chat/AddMultiConvo.tsx +++ b/src/frontend/client/src/components/Chat/AddMultiConvo.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { PlusCircle } from 'lucide-react'; import { isAssistantsEndpoint } from '~/types/chat'; import type { TConversation } from '~/types/chat'; diff --git a/src/frontend/client/src/components/Chat/AiModelSelect.tsx b/src/frontend/client/src/components/Chat/AiModelSelect.tsx index d04b09e2f3..f3ac1d3a72 100644 --- a/src/frontend/client/src/components/Chat/AiModelSelect.tsx +++ b/src/frontend/client/src/components/Chat/AiModelSelect.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Rotate3DIcon } from "lucide-react"; import { memo, useEffect, useMemo } from "react"; import { diff --git a/src/frontend/client/src/components/Chat/ExportAndShareMenu.tsx b/src/frontend/client/src/components/Chat/ExportAndShareMenu.tsx index e8d01bb778..58f49544f4 100644 --- a/src/frontend/client/src/components/Chat/ExportAndShareMenu.tsx +++ b/src/frontend/client/src/components/Chat/ExportAndShareMenu.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useState, useId, useRef } from 'react'; import { useRecoilValue } from 'recoil'; import * as Ariakit from '@ariakit/react'; diff --git a/src/frontend/client/src/components/Chat/Input/AgentToolSelector.tsx b/src/frontend/client/src/components/Chat/Input/AgentToolSelector.tsx index 9aa9da459f..9754ca381d 100644 --- a/src/frontend/client/src/components/Chat/Input/AgentToolSelector.tsx +++ b/src/frontend/client/src/components/Chat/Input/AgentToolSelector.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore /** * AgentToolSelector — v2.5 Agent-mode tool picker for the daily chat input bar. * diff --git a/src/frontend/client/src/components/Chat/Input/AudioRecorder.tsx b/src/frontend/client/src/components/Chat/Input/AudioRecorder.tsx index 512c9c9d9c..1af6ac230a 100644 --- a/src/frontend/client/src/components/Chat/Input/AudioRecorder.tsx +++ b/src/frontend/client/src/components/Chat/Input/AudioRecorder.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useCallback } from 'react'; import { useChatFormContext, useToastContext } from '~/Providers'; import { ListeningIcon, Spinner } from '~/components/svg'; diff --git a/src/frontend/client/src/components/Chat/Input/ChatFormTools.tsx b/src/frontend/client/src/components/Chat/Input/ChatFormTools.tsx index 7d955e0ca6..9d7a478627 100644 --- a/src/frontend/client/src/components/Chat/Input/ChatFormTools.tsx +++ b/src/frontend/client/src/components/Chat/Input/ChatFormTools.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { GlobeIcon, Hammer, diff --git a/src/frontend/client/src/components/Chat/Input/CircleRender.tsx b/src/frontend/client/src/components/Chat/Input/CircleRender.tsx index 4086fb2ea5..f62769b066 100644 --- a/src/frontend/client/src/components/Chat/Input/CircleRender.tsx +++ b/src/frontend/client/src/components/Chat/Input/CircleRender.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React from 'react'; import { CircleIcon, CircleDotsIcon } from '~/components/svg'; import { ECallState } from '~/types/chat'; diff --git a/src/frontend/client/src/components/Chat/Input/CollapseChat.tsx b/src/frontend/client/src/components/Chat/Input/CollapseChat.tsx index ce6fdbf807..07e7d9cf73 100644 --- a/src/frontend/client/src/components/Chat/Input/CollapseChat.tsx +++ b/src/frontend/client/src/components/Chat/Input/CollapseChat.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React from 'react'; import { Minimize2 } from 'lucide-react'; import { TooltipAnchor } from '~/components/ui'; diff --git a/src/frontend/client/src/components/Chat/Input/Files/AttachFile.tsx b/src/frontend/client/src/components/Chat/Input/Files/AttachFile.tsx index 175181c01f..2c313be7dc 100644 --- a/src/frontend/client/src/components/Chat/Input/Files/AttachFile.tsx +++ b/src/frontend/client/src/components/Chat/Input/Files/AttachFile.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React, { useRef } from 'react'; import { FileUpload, TooltipAnchor } from '~/components/ui'; import { AttachmentIcon } from '~/components/svg'; diff --git a/src/frontend/client/src/components/Chat/Input/Files/AttachFileMenu.tsx b/src/frontend/client/src/components/Chat/Input/Files/AttachFileMenu.tsx index b795c40680..a31f9b787e 100644 --- a/src/frontend/client/src/components/Chat/Input/Files/AttachFileMenu.tsx +++ b/src/frontend/client/src/components/Chat/Input/Files/AttachFileMenu.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import * as Ariakit from '@ariakit/react'; import React, { useRef, useState, useMemo } from 'react'; import { FileSearch, ImageUpIcon, TerminalSquareIcon } from 'lucide-react'; diff --git a/src/frontend/client/src/components/Chat/Input/Files/FileFormWrapper.tsx b/src/frontend/client/src/components/Chat/Input/Files/FileFormWrapper.tsx index 1270981733..3b640ce8b0 100644 --- a/src/frontend/client/src/components/Chat/Input/Files/FileFormWrapper.tsx +++ b/src/frontend/client/src/components/Chat/Input/Files/FileFormWrapper.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { memo, useEffect, useState } from "react"; import { useRecoilValue } from "recoil"; import { useChatContext } from "~/Providers"; diff --git a/src/frontend/client/src/components/Chat/Input/Files/FilePreview.tsx b/src/frontend/client/src/components/Chat/Input/Files/FilePreview.tsx index a3a5cd8c48..3b0252525f 100644 --- a/src/frontend/client/src/components/Chat/Input/Files/FilePreview.tsx +++ b/src/frontend/client/src/components/Chat/Input/Files/FilePreview.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import type { ExtendedFile } from '~/common'; import { FileIcon, getFileTypebyFileName } from '~/components/ui/icon/File/FileIcon'; import LegacyFileIcon from '~/components/ui/icon/File'; diff --git a/src/frontend/client/src/components/Chat/Input/Files/MyKnowledgeView.tsx b/src/frontend/client/src/components/Chat/Input/Files/MyKnowledgeView.tsx index e1c91e1e25..52908227d6 100644 --- a/src/frontend/client/src/components/Chat/Input/Files/MyKnowledgeView.tsx +++ b/src/frontend/client/src/components/Chat/Input/Files/MyKnowledgeView.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import axios from 'axios'; import { useEffect, useState } from 'react'; import { NotificationSeverity } from '~/common'; diff --git a/src/frontend/client/src/components/Chat/Input/Files/Table/AttachFileButton.tsx b/src/frontend/client/src/components/Chat/Input/Files/Table/AttachFileButton.tsx index c05bf08a7d..ca5095d11f 100644 --- a/src/frontend/client/src/components/Chat/Input/Files/Table/AttachFileButton.tsx +++ b/src/frontend/client/src/components/Chat/Input/Files/Table/AttachFileButton.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React, { useRef } from 'react'; import { Button, FileUpload, TooltipAnchor } from '~/components/ui'; import { AttachmentIcon } from '~/components/svg'; diff --git a/src/frontend/client/src/components/Chat/Input/Files/Table/Columns.tsx b/src/frontend/client/src/components/Chat/Input/Files/Table/Columns.tsx index dedc02f708..b8b2835a1d 100644 --- a/src/frontend/client/src/components/Chat/Input/Files/Table/Columns.tsx +++ b/src/frontend/client/src/components/Chat/Input/Files/Table/Columns.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { ArrowUpDown, Database } from 'lucide-react'; import { FileSources, FileContext } from '~/types/chat'; diff --git a/src/frontend/client/src/components/Chat/Input/Files/Table/DataTableKnowledge.tsx b/src/frontend/client/src/components/Chat/Input/Files/Table/DataTableKnowledge.tsx index 7e02767853..4fca662769 100644 --- a/src/frontend/client/src/components/Chat/Input/Files/Table/DataTableKnowledge.tsx +++ b/src/frontend/client/src/components/Chat/Input/Files/Table/DataTableKnowledge.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import type { ColumnDef, ColumnFiltersState, diff --git a/src/frontend/client/src/components/Chat/Input/Files/Table/KnowledgeColumns.tsx b/src/frontend/client/src/components/Chat/Input/Files/Table/KnowledgeColumns.tsx index df0a25d366..7331c94990 100644 --- a/src/frontend/client/src/components/Chat/Input/Files/Table/KnowledgeColumns.tsx +++ b/src/frontend/client/src/components/Chat/Input/Files/Table/KnowledgeColumns.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { ArrowUpDown, Database, Download, TrashIcon } from 'lucide-react'; import { FileSources, FileContext, dataService } from '~/types/chat'; import type { ColumnDef } from '@tanstack/react-table'; diff --git a/src/frontend/client/src/components/Chat/Input/HeaderOptions.tsx b/src/frontend/client/src/components/Chat/Input/HeaderOptions.tsx index d487a1d795..39652d82e0 100644 --- a/src/frontend/client/src/components/Chat/Input/HeaderOptions.tsx +++ b/src/frontend/client/src/components/Chat/Input/HeaderOptions.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useRecoilState } from 'recoil'; import { Settings2 } from 'lucide-react'; import { useState, useEffect, useMemo } from 'react'; diff --git a/src/frontend/client/src/components/Chat/Input/Mention.tsx b/src/frontend/client/src/components/Chat/Input/Mention.tsx index 8e0e57eb0a..63de0d0942 100644 --- a/src/frontend/client/src/components/Chat/Input/Mention.tsx +++ b/src/frontend/client/src/components/Chat/Input/Mention.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useState, useRef, useEffect } from 'react'; import { AutoSizer, List } from 'react-virtualized'; import { EModelEndpoint } from '~/types/chat'; diff --git a/src/frontend/client/src/components/Chat/Input/PopoverButtons.tsx b/src/frontend/client/src/components/Chat/Input/PopoverButtons.tsx index 9915726117..1df68b0760 100644 --- a/src/frontend/client/src/components/Chat/Input/PopoverButtons.tsx +++ b/src/frontend/client/src/components/Chat/Input/PopoverButtons.tsx @@ -133,7 +133,7 @@ export default function PopoverButtons({ ))} - {/* eslint-disable-next-line @typescript-eslint/no-unnecessary-condition */} + { } {disabled ? null : (
{additionalButtons[settingsView].map((button, index) => ( diff --git a/src/frontend/client/src/components/Chat/Input/SendButton.tsx b/src/frontend/client/src/components/Chat/Input/SendButton.tsx index 1beb5580a6..8de83c7ac4 100644 --- a/src/frontend/client/src/components/Chat/Input/SendButton.tsx +++ b/src/frontend/client/src/components/Chat/Input/SendButton.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React, { forwardRef } from 'react'; import { useWatch } from 'react-hook-form'; import type { Control } from 'react-hook-form'; diff --git a/src/frontend/client/src/components/Chat/Input/StopButton.tsx b/src/frontend/client/src/components/Chat/Input/StopButton.tsx index 618cc8010e..55d2ee7dee 100644 --- a/src/frontend/client/src/components/Chat/Input/StopButton.tsx +++ b/src/frontend/client/src/components/Chat/Input/StopButton.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { TooltipAnchor } from '~/components/ui'; import { useLocalize } from '~/hooks'; import { cn } from '~/utils'; diff --git a/src/frontend/client/src/components/Chat/Menus/BookmarkMenu.tsx b/src/frontend/client/src/components/Chat/Menus/BookmarkMenu.tsx index c00a3487d0..75d5c78092 100644 --- a/src/frontend/client/src/components/Chat/Menus/BookmarkMenu.tsx +++ b/src/frontend/client/src/components/Chat/Menus/BookmarkMenu.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useState, useId, useCallback, useMemo, useRef } from 'react'; import { useRecoilValue } from 'recoil'; import * as Ariakit from '@ariakit/react'; diff --git a/src/frontend/client/src/components/Chat/Menus/Models/SpecIcon.tsx b/src/frontend/client/src/components/Chat/Menus/Models/SpecIcon.tsx index d280da3fa9..20e8a76fd1 100644 --- a/src/frontend/client/src/components/Chat/Menus/Models/SpecIcon.tsx +++ b/src/frontend/client/src/components/Chat/Menus/Models/SpecIcon.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React, { memo } from 'react'; import type { TModelSpec, TEndpointsConfig } from '~/types/chat'; import type { IconMapProps } from '~/common'; diff --git a/src/frontend/client/src/components/Chat/Menus/Presets/EditPresetDialog.tsx b/src/frontend/client/src/components/Chat/Menus/Presets/EditPresetDialog.tsx index 90b03fd9e4..b634fbef71 100644 --- a/src/frontend/client/src/components/Chat/Menus/Presets/EditPresetDialog.tsx +++ b/src/frontend/client/src/components/Chat/Menus/Presets/EditPresetDialog.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useRecoilState } from 'recoil'; import { useCallback, useEffect, useMemo } from 'react'; import { useQueryClient } from '@tanstack/react-query'; diff --git a/src/frontend/client/src/components/Chat/Menus/PresetsMenu.tsx b/src/frontend/client/src/components/Chat/Menus/PresetsMenu.tsx index c1a6cb2f9e..b64573f7fd 100644 --- a/src/frontend/client/src/components/Chat/Menus/PresetsMenu.tsx +++ b/src/frontend/client/src/components/Chat/Menus/PresetsMenu.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import type { FC } from 'react'; import { BookCopy } from 'lucide-react'; import { Content, Portal, Root, Trigger } from '@radix-ui/react-popover'; diff --git a/src/frontend/client/src/components/Chat/MessageSelection/ExportFormatSheet.tsx b/src/frontend/client/src/components/Chat/MessageSelection/ExportFormatSheet.tsx index ee409ebd01..81cbad3866 100644 --- a/src/frontend/client/src/components/Chat/MessageSelection/ExportFormatSheet.tsx +++ b/src/frontend/client/src/components/Chat/MessageSelection/ExportFormatSheet.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore /** * F028 — H5 bottom sheet that lets the user pick an export file format. * diff --git a/src/frontend/client/src/components/Chat/MessageSelection/MessageSelectionToolbar.tsx b/src/frontend/client/src/components/Chat/MessageSelection/MessageSelectionToolbar.tsx index beb83b9457..92edbf41ef 100644 --- a/src/frontend/client/src/components/Chat/MessageSelection/MessageSelectionToolbar.tsx +++ b/src/frontend/client/src/components/Chat/MessageSelection/MessageSelectionToolbar.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore /** * F028 — Bottom-fixed operation bar that appears when the conversation * export selection mode is active. diff --git a/src/frontend/client/src/components/Chat/Messages/Content/CitationDocumentPreviewDrawer.tsx b/src/frontend/client/src/components/Chat/Messages/Content/CitationDocumentPreviewDrawer.tsx index b89d395523..8110db8f0f 100644 --- a/src/frontend/client/src/components/Chat/Messages/Content/CitationDocumentPreviewDrawer.tsx +++ b/src/frontend/client/src/components/Chat/Messages/Content/CitationDocumentPreviewDrawer.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Outlined } from 'bisheng-icons'; import { useEffect, useState } from 'react'; import { useSetRecoilState } from 'recoil'; diff --git a/src/frontend/client/src/components/Chat/Messages/Content/Echarts.tsx b/src/frontend/client/src/components/Chat/Messages/Content/Echarts.tsx index c739cf91ec..9f4d12757b 100644 --- a/src/frontend/client/src/components/Chat/Messages/Content/Echarts.tsx +++ b/src/frontend/client/src/components/Chat/Messages/Content/Echarts.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore "use client" import { Copy } from "lucide-react" diff --git a/src/frontend/client/src/components/Chat/Messages/Content/EditMessage.tsx b/src/frontend/client/src/components/Chat/Messages/Content/EditMessage.tsx index 5814c0e319..d5b1304278 100644 --- a/src/frontend/client/src/components/Chat/Messages/Content/EditMessage.tsx +++ b/src/frontend/client/src/components/Chat/Messages/Content/EditMessage.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useRef, useEffect, useCallback } from 'react'; import { useRecoilState, useRecoilValue } from 'recoil'; import { useForm } from 'react-hook-form'; diff --git a/src/frontend/client/src/components/Chat/Messages/Content/MarkdownLite.tsx b/src/frontend/client/src/components/Chat/Messages/Content/MarkdownLite.tsx index d1364596cd..60431a1eb5 100644 --- a/src/frontend/client/src/components/Chat/Messages/Content/MarkdownLite.tsx +++ b/src/frontend/client/src/components/Chat/Messages/Content/MarkdownLite.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { memo } from 'react'; import remarkGfm from 'remark-gfm'; import remarkMath from 'remark-math'; diff --git a/src/frontend/client/src/components/Chat/Messages/Content/Mermaid.tsx b/src/frontend/client/src/components/Chat/Messages/Content/Mermaid.tsx index ff9e56391a..4040ab0bf0 100644 --- a/src/frontend/client/src/components/Chat/Messages/Content/Mermaid.tsx +++ b/src/frontend/client/src/components/Chat/Messages/Content/Mermaid.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore "use client" import type React from "react" diff --git a/src/frontend/client/src/components/Chat/Messages/Content/Parts/Text.tsx b/src/frontend/client/src/components/Chat/Messages/Content/Parts/Text.tsx index 7c207f1512..b7e5bd603b 100644 --- a/src/frontend/client/src/components/Chat/Messages/Content/Parts/Text.tsx +++ b/src/frontend/client/src/components/Chat/Messages/Content/Parts/Text.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { memo, useMemo, ReactElement } from 'react'; import { useRecoilValue } from 'recoil'; import MarkdownLite from '~/components/Chat/Messages/Content/MarkdownLite'; diff --git a/src/frontend/client/src/components/Chat/Messages/Content/SearchContent.tsx b/src/frontend/client/src/components/Chat/Messages/Content/SearchContent.tsx index 256fa373fa..4d58209d7d 100644 --- a/src/frontend/client/src/components/Chat/Messages/Content/SearchContent.tsx +++ b/src/frontend/client/src/components/Chat/Messages/Content/SearchContent.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Suspense } from 'react'; import { useRecoilValue } from 'recoil'; import type { TMessage, TMessageContentParts } from '~/types/chat'; diff --git a/src/frontend/client/src/components/Chat/Messages/Content/citationUtils.ts b/src/frontend/client/src/components/Chat/Messages/Content/citationUtils.ts index ea175a7625..136bd80db2 100644 --- a/src/frontend/client/src/components/Chat/Messages/Content/citationUtils.ts +++ b/src/frontend/client/src/components/Chat/Messages/Content/citationUtils.ts @@ -299,7 +299,7 @@ export function getCitationDocumentUrl(detail?: ChatCitation | null) { return getCitationDocumentPreviewUrl(detail); } -let inflightFileShareCache: Record> = {}; +const inflightFileShareCache: Record> = {}; export async function resolveCitationDocumentUrl(detail?: ChatCitation | null) { const fileId = getCitationKnowledgeFileId(detail); diff --git a/src/frontend/client/src/components/Chat/Messages/MessageIcon.tsx b/src/frontend/client/src/components/Chat/Messages/MessageIcon.tsx index 257c2e2297..1548ba2e2b 100644 --- a/src/frontend/client/src/components/Chat/Messages/MessageIcon.tsx +++ b/src/frontend/client/src/components/Chat/Messages/MessageIcon.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React, { useMemo, memo } from 'react'; import type { Assistant, Agent } from '~/types/chat'; import type { TMessageIcon } from '~/common'; diff --git a/src/frontend/client/src/components/Chat/Messages/ui/MessageRender.tsx b/src/frontend/client/src/components/Chat/Messages/ui/MessageRender.tsx index d572025057..719631fd31 100644 --- a/src/frontend/client/src/components/Chat/Messages/ui/MessageRender.tsx +++ b/src/frontend/client/src/components/Chat/Messages/ui/MessageRender.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import type { TMessage } from '~/types/chat'; import { memo, useCallback, useMemo } from 'react'; import { useRecoilValue } from 'recoil'; diff --git a/src/frontend/client/src/components/Conversations/Convo.tsx b/src/frontend/client/src/components/Conversations/Convo.tsx index b356ef55a9..38d30bdc6c 100644 --- a/src/frontend/client/src/components/Conversations/Convo.tsx +++ b/src/frontend/client/src/components/Conversations/Convo.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Outlined } from "bisheng-icons"; import { Check, X } from "lucide-react"; import type { FocusEvent, KeyboardEvent, MouseEvent } from "react"; diff --git a/src/frontend/client/src/components/Conversations/ConvoOptions/SharedLinkButton.tsx b/src/frontend/client/src/components/Conversations/ConvoOptions/SharedLinkButton.tsx index d284f3e2c5..e97fb3bdb1 100644 --- a/src/frontend/client/src/components/Conversations/ConvoOptions/SharedLinkButton.tsx +++ b/src/frontend/client/src/components/Conversations/ConvoOptions/SharedLinkButton.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useState, useCallback } from 'react'; import { QrCode, RotateCw, Trash2 } from 'lucide-react'; import type { TSharedLinkGetResponse } from '~/types/chat'; diff --git a/src/frontend/client/src/components/Endpoints/ConvoIconURL.tsx b/src/frontend/client/src/components/Endpoints/ConvoIconURL.tsx index 0972c8280b..65b310de46 100644 --- a/src/frontend/client/src/components/Endpoints/ConvoIconURL.tsx +++ b/src/frontend/client/src/components/Endpoints/ConvoIconURL.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { memo, useMemo } from 'react'; import type { IconMapProps } from '~/common'; import { icons } from '~/components/Chat/Menus/Endpoints/Icons'; diff --git a/src/frontend/client/src/components/Endpoints/EndpointIcon.tsx b/src/frontend/client/src/components/Endpoints/EndpointIcon.tsx index b4ef85e034..bfb98510bc 100644 --- a/src/frontend/client/src/components/Endpoints/EndpointIcon.tsx +++ b/src/frontend/client/src/components/Endpoints/EndpointIcon.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { isAssistantsEndpoint } from '~/types/chat'; import type { TConversation, diff --git a/src/frontend/client/src/components/Endpoints/Icon.tsx b/src/frontend/client/src/components/Endpoints/Icon.tsx index 802c218ba0..5d38e9b3cb 100644 --- a/src/frontend/client/src/components/Endpoints/Icon.tsx +++ b/src/frontend/client/src/components/Endpoints/Icon.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React, { memo, useMemo } from 'react'; import type { TUser } from '~/types/chat'; import type { IconProps } from '~/common'; diff --git a/src/frontend/client/src/components/FileListRow.tsx b/src/frontend/client/src/components/FileListRow.tsx index b9eb4dac67..fd77d0035a 100644 --- a/src/frontend/client/src/components/FileListRow.tsx +++ b/src/frontend/client/src/components/FileListRow.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useState } from "react"; import { Folder, FileText, Download, MoreVertical, Circle, Edit, Tag } from "lucide-react"; import { KnowledgeFile, FileType, FileStatus, SpaceRole } from "~/api/knowledge"; diff --git a/src/frontend/client/src/components/Files/FileList/FileTableColumns.tsx b/src/frontend/client/src/components/Files/FileList/FileTableColumns.tsx index c74d0fc938..97d9e66d30 100644 --- a/src/frontend/client/src/components/Files/FileList/FileTableColumns.tsx +++ b/src/frontend/client/src/components/Files/FileList/FileTableColumns.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore /* eslint-disable react-hooks/rules-of-hooks */ import { FileSources, FileContext } from '~/types/chat'; import type { ColumnDef } from '@tanstack/react-table'; diff --git a/src/frontend/client/src/components/Files/VectorStore/VectorStoreListItem.tsx b/src/frontend/client/src/components/Files/VectorStore/VectorStoreListItem.tsx index 720ebd0afe..bfe8152c31 100644 --- a/src/frontend/client/src/components/Files/VectorStore/VectorStoreListItem.tsx +++ b/src/frontend/client/src/components/Files/VectorStore/VectorStoreListItem.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React from 'react'; import { useNavigate } from 'react-router-dom'; import { TVectorStore } from '~/common'; diff --git a/src/frontend/client/src/components/Input/SetKeyDialog/GoogleConfig.tsx b/src/frontend/client/src/components/Input/SetKeyDialog/GoogleConfig.tsx index 2a9af3c1ea..230ee83b95 100644 --- a/src/frontend/client/src/components/Input/SetKeyDialog/GoogleConfig.tsx +++ b/src/frontend/client/src/components/Input/SetKeyDialog/GoogleConfig.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React from 'react'; import { object, string } from 'zod'; import { AuthKeys } from '~/types/chat'; diff --git a/src/frontend/client/src/components/Input/SetKeyDialog/InputWithLabel.tsx b/src/frontend/client/src/components/Input/SetKeyDialog/InputWithLabel.tsx index a45ab02325..5bf16fde86 100644 --- a/src/frontend/client/src/components/Input/SetKeyDialog/InputWithLabel.tsx +++ b/src/frontend/client/src/components/Input/SetKeyDialog/InputWithLabel.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { forwardRef } from 'react'; import type { ChangeEvent, FC, Ref } from 'react'; import { cn, defaultTextPropsLabel, removeFocusOutlines, defaultTextProps } from '~/utils/'; diff --git a/src/frontend/client/src/components/Linsight/Artifacts/WorkspacePanel.tsx b/src/frontend/client/src/components/Linsight/Artifacts/WorkspacePanel.tsx index 4e17c797bb..efebe1cae1 100644 --- a/src/frontend/client/src/components/Linsight/Artifacts/WorkspacePanel.tsx +++ b/src/frontend/client/src/components/Linsight/Artifacts/WorkspacePanel.tsx @@ -57,7 +57,7 @@ export function WorkspacePanel({ onKeyDown={(e) => e.key === 'Enter' && onPreview(file)} > {/* File-type icon hidden for now; keep for an easy future re-enable. */} - {/* eslint-disable-next-line @typescript-eslint/no-explicit-any -- FileIcon accepts more types than its union */} + { } {/* */} {file.file_name} diff --git a/src/frontend/client/src/components/Linsight/Execution/stepUtils.ts b/src/frontend/client/src/components/Linsight/Execution/stepUtils.ts index d518292b06..9bab5e2c1e 100644 --- a/src/frontend/client/src/components/Linsight/Execution/stepUtils.ts +++ b/src/frontend/client/src/components/Linsight/Execution/stepUtils.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore /** * F035 Track H (P3): pure helpers that turn the raw WS event log * (task.history / linsight.sessionSteps) into a renderable step tree. diff --git a/src/frontend/client/src/components/Messages/Content/Error.tsx b/src/frontend/client/src/components/Messages/Content/Error.tsx index bacec15711..87e2713960 100644 --- a/src/frontend/client/src/components/Messages/Content/Error.tsx +++ b/src/frontend/client/src/components/Messages/Content/Error.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore // file deepcode ignore HardcodedNonCryptoSecret: No hardcoded secrets import { ViolationTypes, ErrorTypes } from '~/types/chat'; import type { TOpenAIMessage } from '~/types/chat'; diff --git a/src/frontend/client/src/components/Nav/NavToggle.tsx b/src/frontend/client/src/components/Nav/NavToggle.tsx index dc0a72695d..28f72663d5 100644 --- a/src/frontend/client/src/components/Nav/NavToggle.tsx +++ b/src/frontend/client/src/components/Nav/NavToggle.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useLocalize } from '~/hooks'; import { TooltipAnchor } from '~/components/ui'; import { cn } from '~/utils'; diff --git a/src/frontend/client/src/components/Nav/SettingsTabs/Account/BackupCodesItem.tsx b/src/frontend/client/src/components/Nav/SettingsTabs/Account/BackupCodesItem.tsx index c062be0b6d..7547e415f6 100644 --- a/src/frontend/client/src/components/Nav/SettingsTabs/Account/BackupCodesItem.tsx +++ b/src/frontend/client/src/components/Nav/SettingsTabs/Account/BackupCodesItem.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React, { useState } from 'react'; import { RefreshCcw, ShieldX } from 'lucide-react'; import { motion, AnimatePresence } from 'framer-motion'; diff --git a/src/frontend/client/src/components/Nav/SettingsTabs/DangerButton.tsx b/src/frontend/client/src/components/Nav/SettingsTabs/DangerButton.tsx index c2bdae6cbf..060bba2341 100644 --- a/src/frontend/client/src/components/Nav/SettingsTabs/DangerButton.tsx +++ b/src/frontend/client/src/components/Nav/SettingsTabs/DangerButton.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { forwardRef } from 'react'; import type { ForwardedRef } from 'react'; import { CheckIcon } from 'lucide-react'; diff --git a/src/frontend/client/src/components/Nav/SettingsTabs/Data/SharedLinks.tsx b/src/frontend/client/src/components/Nav/SettingsTabs/Data/SharedLinks.tsx index 48cb09f6c8..0232e4c177 100644 --- a/src/frontend/client/src/components/Nav/SettingsTabs/Data/SharedLinks.tsx +++ b/src/frontend/client/src/components/Nav/SettingsTabs/Data/SharedLinks.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useCallback, useState, useMemo, useEffect } from 'react'; import { Link } from 'react-router-dom'; import debounce from 'lodash/debounce'; diff --git a/src/frontend/client/src/components/Nav/SettingsTabs/General/ArchivedChatsTable.tsx b/src/frontend/client/src/components/Nav/SettingsTabs/General/ArchivedChatsTable.tsx index b5035f095b..d836e2d07c 100644 --- a/src/frontend/client/src/components/Nav/SettingsTabs/General/ArchivedChatsTable.tsx +++ b/src/frontend/client/src/components/Nav/SettingsTabs/General/ArchivedChatsTable.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useState, useCallback, useMemo } from 'react'; import { Search, diff --git a/src/frontend/client/src/components/Nav/SettingsTabs/Speech/STT/LanguageSTTDropdown.tsx b/src/frontend/client/src/components/Nav/SettingsTabs/Speech/STT/LanguageSTTDropdown.tsx index eaa04b919e..9d4fb3e5a1 100644 --- a/src/frontend/client/src/components/Nav/SettingsTabs/Speech/STT/LanguageSTTDropdown.tsx +++ b/src/frontend/client/src/components/Nav/SettingsTabs/Speech/STT/LanguageSTTDropdown.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useRecoilState } from 'recoil'; import { Dropdown } from '~/components/ui'; import { useLocalize } from '~/hooks'; diff --git a/src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/EngineTTSDropdown.tsx b/src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/EngineTTSDropdown.tsx index 405c78555a..0e4657e1e1 100644 --- a/src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/EngineTTSDropdown.tsx +++ b/src/frontend/client/src/components/Nav/SettingsTabs/Speech/TTS/EngineTTSDropdown.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React from 'react'; import { useRecoilState } from 'recoil'; import { Dropdown } from '~/components/ui'; diff --git a/src/frontend/client/src/components/NotificationsDialog.tsx b/src/frontend/client/src/components/NotificationsDialog.tsx index ca62c6d817..819589212d 100644 --- a/src/frontend/client/src/components/NotificationsDialog.tsx +++ b/src/frontend/client/src/components/NotificationsDialog.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useMemo, useRef, useState } from "react"; import { Search, Trash2, Check, XIcon } from "lucide-react"; import { Dialog, DialogContent, DialogHeader, DialogTitle } from "~/components/ui/Dialog"; diff --git a/src/frontend/client/src/components/PreviewFile/DocxFileViewer.tsx b/src/frontend/client/src/components/PreviewFile/DocxFileViewer.tsx index 704d686de4..b6358da2b3 100644 --- a/src/frontend/client/src/components/PreviewFile/DocxFileViewer.tsx +++ b/src/frontend/client/src/components/PreviewFile/DocxFileViewer.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import * as mammoth from "mammoth"; import { useEffect, useRef, useState } from "react"; import { LoadingIcon } from "../ui/icon/Loading"; diff --git a/src/frontend/client/src/components/PreviewFile/FileView.tsx b/src/frontend/client/src/components/PreviewFile/FileView.tsx index a9c5a20bdb..0f18d5858a 100644 --- a/src/frontend/client/src/components/PreviewFile/FileView.tsx +++ b/src/frontend/client/src/components/PreviewFile/FileView.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import throttle from 'lodash/throttle'; import * as pdfjsLib from 'pdfjs-dist'; import React, { useCallback, useEffect, useRef, useState } from "react"; @@ -253,7 +254,7 @@ export default function FileView({ const throttledResizeHandler = throttle(entries => { if (panneDom) { - for (let entry of entries) { + for (const entry of entries) { const [width, height] = [entry.contentRect.width, entry.contentRect.height]; setBoxSize({ width, height }); const warpDom = document.getElementById('warp-pdf'); diff --git a/src/frontend/client/src/components/PreviewFile/TxtFileViewer.tsx b/src/frontend/client/src/components/PreviewFile/TxtFileViewer.tsx index 155dacfbdd..8f8b2073c3 100644 --- a/src/frontend/client/src/components/PreviewFile/TxtFileViewer.tsx +++ b/src/frontend/client/src/components/PreviewFile/TxtFileViewer.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useState } from 'react'; import Markdown from '../Chat/Messages/Content/Markdown'; diff --git a/src/frontend/client/src/components/PreviewFile/index.tsx b/src/frontend/client/src/components/PreviewFile/index.tsx index f3d31e3c4d..5d971ea07c 100644 --- a/src/frontend/client/src/components/PreviewFile/index.tsx +++ b/src/frontend/client/src/components/PreviewFile/index.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React, { useMemo, useState } from "react"; import { generateUUID } from "~/utils"; diff --git a/src/frontend/client/src/components/Prompts/PromptEditor.tsx b/src/frontend/client/src/components/Prompts/PromptEditor.tsx index 0156efe171..07fb62b16c 100644 --- a/src/frontend/client/src/components/Prompts/PromptEditor.tsx +++ b/src/frontend/client/src/components/Prompts/PromptEditor.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useMemo, memo } from 'react'; import { useRecoilValue } from 'recoil'; import { EditIcon } from 'lucide-react'; diff --git a/src/frontend/client/src/components/Prompts/PromptVariables.tsx b/src/frontend/client/src/components/Prompts/PromptVariables.tsx index 42f599bf29..b2a957f05c 100644 --- a/src/frontend/client/src/components/Prompts/PromptVariables.tsx +++ b/src/frontend/client/src/components/Prompts/PromptVariables.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React, { useMemo } from 'react'; import { Variable } from 'lucide-react'; import ReactMarkdown from 'react-markdown'; diff --git a/src/frontend/client/src/components/Prompts/PromptVersions.tsx b/src/frontend/client/src/components/Prompts/PromptVersions.tsx index aba79e0470..a42e213231 100644 --- a/src/frontend/client/src/components/Prompts/PromptVersions.tsx +++ b/src/frontend/client/src/components/Prompts/PromptVersions.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React from 'react'; import { format } from 'date-fns'; import { Layers3, Crown, Zap } from 'lucide-react'; diff --git a/src/frontend/client/src/components/Share/Message.tsx b/src/frontend/client/src/components/Share/Message.tsx index 2038955e79..53bb5dfbf3 100644 --- a/src/frontend/client/src/components/Share/Message.tsx +++ b/src/frontend/client/src/components/Share/Message.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useRecoilValue } from 'recoil'; import type { TMessageProps } from '~/common'; import MinimalHoverButtons from '~/components/Chat/Messages/MinimalHoverButtons'; diff --git a/src/frontend/client/src/components/SidePanel/Agents/AgentPanel.tsx b/src/frontend/client/src/components/SidePanel/Agents/AgentPanel.tsx index 4bf3411724..f49c3a752f 100644 --- a/src/frontend/client/src/components/SidePanel/Agents/AgentPanel.tsx +++ b/src/frontend/client/src/components/SidePanel/Agents/AgentPanel.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Plus } from 'lucide-react'; import React, { useMemo, useCallback } from 'react'; import { useWatch, useForm, FormProvider } from 'react-hook-form'; diff --git a/src/frontend/client/src/components/SidePanel/Agents/AgentPanelSwitch.tsx b/src/frontend/client/src/components/SidePanel/Agents/AgentPanelSwitch.tsx index 51400c6b93..1033d308ed 100644 --- a/src/frontend/client/src/components/SidePanel/Agents/AgentPanelSwitch.tsx +++ b/src/frontend/client/src/components/SidePanel/Agents/AgentPanelSwitch.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useState, useEffect, useMemo } from 'react'; import { EModelEndpoint } from '~/types/chat'; import type { ActionsEndpoint } from '~/common'; diff --git a/src/frontend/client/src/components/SidePanel/Agents/AgentSelect.tsx b/src/frontend/client/src/components/SidePanel/Agents/AgentSelect.tsx index 7788a3fe48..b62fad60d5 100644 --- a/src/frontend/client/src/components/SidePanel/Agents/AgentSelect.tsx +++ b/src/frontend/client/src/components/SidePanel/Agents/AgentSelect.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { EarthIcon } from 'lucide-react'; import { useCallback, useEffect, useRef } from 'react'; import { useFormContext, Controller } from 'react-hook-form'; diff --git a/src/frontend/client/src/components/SidePanel/Agents/ImageVision.tsx b/src/frontend/client/src/components/SidePanel/Agents/ImageVision.tsx index e7f75699a4..335e2b736c 100644 --- a/src/frontend/client/src/components/SidePanel/Agents/ImageVision.tsx +++ b/src/frontend/client/src/components/SidePanel/Agents/ImageVision.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useFormContext, Controller } from 'react-hook-form'; import { Capabilities } from '~/types/chat'; import type { AgentForm } from '~/common'; diff --git a/src/frontend/client/src/components/SidePanel/Agents/Retrieval.tsx b/src/frontend/client/src/components/SidePanel/Agents/Retrieval.tsx index 930ce9552e..c66d12f57e 100644 --- a/src/frontend/client/src/components/SidePanel/Agents/Retrieval.tsx +++ b/src/frontend/client/src/components/SidePanel/Agents/Retrieval.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useMemo } from 'react'; import { Capabilities } from '~/types/chat'; import { useFormContext, Controller, useWatch } from 'react-hook-form'; diff --git a/src/frontend/client/src/components/SidePanel/Agents/Sequential/SequentialAgents.tsx b/src/frontend/client/src/components/SidePanel/Agents/Sequential/SequentialAgents.tsx index 44aa7df093..6982f96c07 100644 --- a/src/frontend/client/src/components/SidePanel/Agents/Sequential/SequentialAgents.tsx +++ b/src/frontend/client/src/components/SidePanel/Agents/Sequential/SequentialAgents.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Plus, X } from 'lucide-react'; import React, { useRef, useState } from 'react'; import { Transition } from 'react-transition-group'; diff --git a/src/frontend/client/src/components/SidePanel/Builder/AssistantConversationStarters.tsx b/src/frontend/client/src/components/SidePanel/Builder/AssistantConversationStarters.tsx index b19ee93c8f..ca0b45a0f3 100644 --- a/src/frontend/client/src/components/SidePanel/Builder/AssistantConversationStarters.tsx +++ b/src/frontend/client/src/components/SidePanel/Builder/AssistantConversationStarters.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React, { useRef, useState } from 'react'; import { Plus, X } from 'lucide-react'; import { Transition } from 'react-transition-group'; diff --git a/src/frontend/client/src/components/SidePanel/Files/PanelColumns.tsx b/src/frontend/client/src/components/SidePanel/Files/PanelColumns.tsx index db1f256549..8edd52e8ea 100644 --- a/src/frontend/client/src/components/SidePanel/Files/PanelColumns.tsx +++ b/src/frontend/client/src/components/SidePanel/Files/PanelColumns.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { ArrowUpDown } from 'lucide-react'; import type { ColumnDef } from '@tanstack/react-table'; import type { TFile } from '~/types/chat'; diff --git a/src/frontend/client/src/components/SidePanel/Files/PanelTable.tsx b/src/frontend/client/src/components/SidePanel/Files/PanelTable.tsx index cd77f052df..85166e0be6 100644 --- a/src/frontend/client/src/components/SidePanel/Files/PanelTable.tsx +++ b/src/frontend/client/src/components/SidePanel/Files/PanelTable.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useState, useCallback, useMemo } from 'react'; import { ArrowUpLeft } from 'lucide-react'; import { useSetRecoilState } from 'recoil'; diff --git a/src/frontend/client/src/components/SidePanel/Nav.tsx b/src/frontend/client/src/components/SidePanel/Nav.tsx index 44ef52b39d..7336c84122 100644 --- a/src/frontend/client/src/components/SidePanel/Nav.tsx +++ b/src/frontend/client/src/components/SidePanel/Nav.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useState } from 'react'; import * as AccordionPrimitive from '@radix-ui/react-accordion'; import type { NavLink, NavProps } from '~/common'; diff --git a/src/frontend/client/src/components/SidePanel/SidePanel.tsx b/src/frontend/client/src/components/SidePanel/SidePanel.tsx index b55d6af293..73c5c0da9c 100644 --- a/src/frontend/client/src/components/SidePanel/SidePanel.tsx +++ b/src/frontend/client/src/components/SidePanel/SidePanel.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useState, useCallback, useMemo, memo } from 'react'; import { useUserKeyQuery } from '~/hooks/queries'; import type { TEndpointsConfig, TInterfaceConfig } from '~/types/chat'; diff --git a/src/frontend/client/src/components/Sop/components/SopLoading.tsx b/src/frontend/client/src/components/Sop/components/SopLoading.tsx index 29cd5da0ad..9e289b33a8 100644 --- a/src/frontend/client/src/components/Sop/components/SopLoading.tsx +++ b/src/frontend/client/src/components/Sop/components/SopLoading.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { motion, AnimatePresence } from "framer-motion"; import { useState, useEffect, useMemo } from "react"; import { cn } from "~/utils"; diff --git a/src/frontend/client/src/components/Sop/index.tsx b/src/frontend/client/src/components/Sop/index.tsx index 285ecc31ce..4a3474257b 100644 --- a/src/frontend/client/src/components/Sop/index.tsx +++ b/src/frontend/client/src/components/Sop/index.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import { useActivate } from 'react-activation'; diff --git a/src/frontend/client/src/components/Voice/SpeechToText.tsx b/src/frontend/client/src/components/Voice/SpeechToText.tsx index 72cfa47987..5d3a40d248 100644 --- a/src/frontend/client/src/components/Voice/SpeechToText.tsx +++ b/src/frontend/client/src/components/Voice/SpeechToText.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore "use client" import { Outlined } from "bisheng-icons" diff --git a/src/frontend/client/src/components/Voice/TextToSpeechButton.tsx b/src/frontend/client/src/components/Voice/TextToSpeechButton.tsx index e888ade418..e83e4983d9 100644 --- a/src/frontend/client/src/components/Voice/TextToSpeechButton.tsx +++ b/src/frontend/client/src/components/Voice/TextToSpeechButton.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore "use client" import { Outlined } from "bisheng-icons" diff --git a/src/frontend/client/src/components/Voice/textToSpeechStore.tsx b/src/frontend/client/src/components/Voice/textToSpeechStore.tsx index d36ac0654e..e7924f0d4a 100644 --- a/src/frontend/client/src/components/Voice/textToSpeechStore.tsx +++ b/src/frontend/client/src/components/Voice/textToSpeechStore.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore "use client" import { Howl } from "howler" diff --git a/src/frontend/client/src/components/svg/DownIcon.tsx b/src/frontend/client/src/components/svg/DownIcon.tsx index 962ae9f5a1..11ffb9e68d 100644 --- a/src/frontend/client/src/components/svg/DownIcon.tsx +++ b/src/frontend/client/src/components/svg/DownIcon.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { cn } from '~/utils'; export default function DownIcon({ className = '', ...props }) { return ( diff --git a/src/frontend/client/src/components/ui/Button.tsx b/src/frontend/client/src/components/ui/Button.tsx index d12d71bf0d..0b92c9ed1a 100644 --- a/src/frontend/client/src/components/ui/Button.tsx +++ b/src/frontend/client/src/components/ui/Button.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore /** * Button has moved to the shared component library (@bisheng/ui) — the first * component managed there and consumed by both apps. This re-export keeps every diff --git a/src/frontend/client/src/components/ui/DialogTemplate.tsx b/src/frontend/client/src/components/ui/DialogTemplate.tsx index cf3d50d3a5..f961e8409a 100644 --- a/src/frontend/client/src/components/ui/DialogTemplate.tsx +++ b/src/frontend/client/src/components/ui/DialogTemplate.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { forwardRef, ReactNode, Ref } from 'react'; import { DialogClose, diff --git a/src/frontend/client/src/components/ui/MultiSelect.tsx b/src/frontend/client/src/components/ui/MultiSelect.tsx index 8bd803d98c..5306e64a48 100644 --- a/src/frontend/client/src/components/ui/MultiSelect.tsx +++ b/src/frontend/client/src/components/ui/MultiSelect.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Check, X } from "lucide-react"; import React, { useCallback, useEffect, useRef, useState } from "react"; import { cn } from "~/utils"; @@ -6,7 +7,7 @@ import { SearchInput } from "./Input"; import { Select, SelectContent, SelectTrigger } from "./Select"; export function useDebounce(func: any, wait: number, immediate: boolean, callback?: any,): (any?: any) => any { - let timer = useRef(); + const timer = useRef(); const fnRef = useRef(func); useEffect(() => { fnRef.current = func; }, [func]); const timerCancel = function () { if (timer.current) clearTimeout(timer.current); }; @@ -19,7 +20,7 @@ export function useDebounce(func: any, wait: number, immediate: boolean, callbac }; timerCancel(); if (immediate) { - let runNow = !timer.current; + const runNow = !timer.current; timer.current = setTimeout(() => { timer.current = null; }, wait); if (runNow) { runFunction(); diff --git a/src/frontend/client/src/components/ui/Pagination.tsx b/src/frontend/client/src/components/ui/Pagination.tsx index eed9ae7444..3f5951eb28 100644 --- a/src/frontend/client/src/components/ui/Pagination.tsx +++ b/src/frontend/client/src/components/ui/Pagination.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import * as React from 'react'; import { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react'; import { ButtonProps, buttonVariants } from './Button'; diff --git a/src/frontend/client/src/components/ui/Select.tsx b/src/frontend/client/src/components/ui/Select.tsx index 7ec65bdfd8..6eb2feecd4 100644 --- a/src/frontend/client/src/components/ui/Select.tsx +++ b/src/frontend/client/src/components/ui/Select.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore "use client" import * as SelectPrimitive from "@radix-ui/react-select" diff --git a/src/frontend/client/src/components/ui/SelectDropDown.tsx b/src/frontend/client/src/components/ui/SelectDropDown.tsx index dc065a588a..b07b8cb1f6 100644 --- a/src/frontend/client/src/components/ui/SelectDropDown.tsx +++ b/src/frontend/client/src/components/ui/SelectDropDown.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React, { useRef } from 'react'; import { Label, diff --git a/src/frontend/client/src/components/ui/icon/File/index.tsx b/src/frontend/client/src/components/ui/icon/File/index.tsx index 11005a44db..9bb16973d0 100644 --- a/src/frontend/client/src/components/ui/icon/File/index.tsx +++ b/src/frontend/client/src/components/ui/icon/File/index.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React from 'react'; // 废弃 diff --git a/src/frontend/client/src/hooks/Chat/useChatHelpers.ts b/src/frontend/client/src/hooks/Chat/useChatHelpers.ts index dcb58e1d7a..913d45ba76 100644 --- a/src/frontend/client/src/hooks/Chat/useChatHelpers.ts +++ b/src/frontend/client/src/hooks/Chat/useChatHelpers.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useQueryClient } from '@tanstack/react-query'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { useRecoilState, useResetRecoilState, useSetRecoilState } from 'recoil'; diff --git a/src/frontend/client/src/hooks/Conversations/useDefaultConvo.ts b/src/frontend/client/src/hooks/Conversations/useDefaultConvo.ts index d6b9eb9fa0..9dec4963cb 100644 --- a/src/frontend/client/src/hooks/Conversations/useDefaultConvo.ts +++ b/src/frontend/client/src/hooks/Conversations/useDefaultConvo.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useGetModelsQuery } from '~/hooks/queries'; import type { TEndpointsConfig, diff --git a/src/frontend/client/src/hooks/Conversations/useExportConversation.ts b/src/frontend/client/src/hooks/Conversations/useExportConversation.ts index 6a963da6d6..784d9e7e45 100644 --- a/src/frontend/client/src/hooks/Conversations/useExportConversation.ts +++ b/src/frontend/client/src/hooks/Conversations/useExportConversation.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import download from 'downloadjs'; import { useCallback } from 'react'; import exportFromJSON from 'export-from-json'; diff --git a/src/frontend/client/src/hooks/Conversations/useNavigateToConvo.tsx b/src/frontend/client/src/hooks/Conversations/useNavigateToConvo.tsx index 33cd4aadf1..ffe5a0ab68 100644 --- a/src/frontend/client/src/hooks/Conversations/useNavigateToConvo.tsx +++ b/src/frontend/client/src/hooks/Conversations/useNavigateToConvo.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useQueryClient } from '@tanstack/react-query'; import { useNavigate } from 'react-router-dom'; import { useSetRecoilState } from 'recoil'; diff --git a/src/frontend/client/src/hooks/Conversations/usePresetIndexOptions.ts b/src/frontend/client/src/hooks/Conversations/usePresetIndexOptions.ts index aa73881ff0..53bb506063 100644 --- a/src/frontend/client/src/hooks/Conversations/usePresetIndexOptions.ts +++ b/src/frontend/client/src/hooks/Conversations/usePresetIndexOptions.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useRecoilValue, useSetRecoilState } from 'recoil'; import type { TPreset, TPlugin } from '~/types/chat'; import type { TSetOptionsPayload, TSetExample, TSetOption, TSetOptions } from '~/common'; diff --git a/src/frontend/client/src/hooks/Conversations/useSetIndexOptions.ts b/src/frontend/client/src/hooks/Conversations/useSetIndexOptions.ts index b7014c07e7..2b5cf7eacc 100644 --- a/src/frontend/client/src/hooks/Conversations/useSetIndexOptions.ts +++ b/src/frontend/client/src/hooks/Conversations/useSetIndexOptions.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useRecoilValue, useSetRecoilState } from 'recoil'; import { TPreset, TPlugin, TConversation, tConvoUpdateSchema } from '~/types/chat'; import type { TSetExample, TSetOption, TSetOptionsPayload } from '~/common'; diff --git a/src/frontend/client/src/hooks/Files/useFileHandling.ts b/src/frontend/client/src/hooks/Files/useFileHandling.ts index 263f0fb3ed..e0e4e9ae05 100644 --- a/src/frontend/client/src/hooks/Files/useFileHandling.ts +++ b/src/frontend/client/src/hooks/Files/useFileHandling.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { v4 } from 'uuid'; import debounce from 'lodash/debounce'; import { useQueryClient } from '@tanstack/react-query'; diff --git a/src/frontend/client/src/hooks/Input/useTextToSpeechEdge.ts b/src/frontend/client/src/hooks/Input/useTextToSpeechEdge.ts index 18ea00827f..9a6fab762a 100644 --- a/src/frontend/client/src/hooks/Input/useTextToSpeechEdge.ts +++ b/src/frontend/client/src/hooks/Input/useTextToSpeechEdge.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useRecoilValue } from 'recoil'; import { MsEdgeTTS, OUTPUT_FORMAT } from 'msedge-tts'; import { useState, useCallback, useRef, useEffect, useMemo } from 'react'; diff --git a/src/frontend/client/src/hooks/Messages/useMessageActions.tsx b/src/frontend/client/src/hooks/Messages/useMessageActions.tsx index b035e2bc4d..d5d9d100a8 100644 --- a/src/frontend/client/src/hooks/Messages/useMessageActions.tsx +++ b/src/frontend/client/src/hooks/Messages/useMessageActions.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useRecoilValue } from 'recoil'; import { useCallback, useMemo } from 'react'; import { isAssistantsEndpoint, isAgentsEndpoint } from '~/types/chat'; diff --git a/src/frontend/client/src/hooks/Messages/useSubmitMessage.ts b/src/frontend/client/src/hooks/Messages/useSubmitMessage.ts index 1fefb8c11f..697b60835e 100644 --- a/src/frontend/client/src/hooks/Messages/useSubmitMessage.ts +++ b/src/frontend/client/src/hooks/Messages/useSubmitMessage.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useCallback } from 'react'; import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil'; import { v4 } from 'uuid'; diff --git a/src/frontend/client/src/hooks/SSE/useEventHandlers.ts b/src/frontend/client/src/hooks/SSE/useEventHandlers.ts index e75e9daa69..ccde89f9ed 100644 --- a/src/frontend/client/src/hooks/SSE/useEventHandlers.ts +++ b/src/frontend/client/src/hooks/SSE/useEventHandlers.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { v4 } from 'uuid'; import { useCallback, useRef } from 'react'; import { useSetRecoilState } from 'recoil'; diff --git a/src/frontend/client/src/hooks/SSE/useSSE.ts b/src/frontend/client/src/hooks/SSE/useSSE.ts index bb015df7b8..922a0c3e31 100644 --- a/src/frontend/client/src/hooks/SSE/useSSE.ts +++ b/src/frontend/client/src/hooks/SSE/useSSE.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useState } from 'react'; import { useSetRecoilState } from 'recoil'; import { SSE } from 'sse.js'; diff --git a/src/frontend/client/src/hooks/Websocket/index.tsx b/src/frontend/client/src/hooks/Websocket/index.tsx index f6c8553a13..4777305dc3 100644 --- a/src/frontend/client/src/hooks/Websocket/index.tsx +++ b/src/frontend/client/src/hooks/Websocket/index.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useCallback, useEffect, useMemo, useRef } from "react"; import { getLinsightSessionVersionList, userInputLinsightEvent, userStopLinsightEvent } from "~/api/linsight"; import { SopStatus } from "~/store/linsight"; diff --git a/src/frontend/client/src/hooks/queries/files/mutations.ts b/src/frontend/client/src/hooks/queries/files/mutations.ts index fd2d11f3b6..decfde6b19 100644 --- a/src/frontend/client/src/hooks/queries/files/mutations.ts +++ b/src/frontend/client/src/hooks/queries/files/mutations.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { EToolResources } from '~/types/chat'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { diff --git a/src/frontend/client/src/hooks/queries/files/queries.ts b/src/frontend/client/src/hooks/queries/files/queries.ts index 685b06affc..ab793bcb45 100644 --- a/src/frontend/client/src/hooks/queries/files/queries.ts +++ b/src/frontend/client/src/hooks/queries/files/queries.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useRecoilValue } from 'recoil'; import { QueryKeys, dataService } from '~/types/chat'; import { useQuery, useQueryClient } from '@tanstack/react-query'; diff --git a/src/frontend/client/src/hooks/queries/mutations.ts b/src/frontend/client/src/hooks/queries/mutations.ts index 3bb3ad4fc9..64e2c9df23 100644 --- a/src/frontend/client/src/hooks/queries/mutations.ts +++ b/src/frontend/client/src/hooks/queries/mutations.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import type { InfiniteData, UseMutationResult } from '@tanstack/react-query'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import type * as t from '~/types/chat'; diff --git a/src/frontend/client/src/hooks/queries/queries.ts b/src/frontend/client/src/hooks/queries/queries.ts index c05be9cfe3..c5a90a9c85 100644 --- a/src/frontend/client/src/hooks/queries/queries.ts +++ b/src/frontend/client/src/hooks/queries/queries.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import type { QueryObserverResult, UseInfiniteQueryOptions, diff --git a/src/frontend/client/src/hooks/useAiChatSSE.ts b/src/frontend/client/src/hooks/useAiChatSSE.ts index dabc8a1656..2217b0e601 100644 --- a/src/frontend/client/src/hooks/useAiChatSSE.ts +++ b/src/frontend/client/src/hooks/useAiChatSSE.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore /** * SSE hook for v2.5 Agent-mode chat streaming. * diff --git a/src/frontend/client/src/hooks/useLinsightManager.tsx b/src/frontend/client/src/hooks/useLinsightManager.tsx index f083033846..2d5ce1ee51 100644 --- a/src/frontend/client/src/hooks/useLinsightManager.tsx +++ b/src/frontend/client/src/hooks/useLinsightManager.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore // src/hooks/useLinsightManager.ts import { useQueryClient } from '@tanstack/react-query'; import { useCallback, useEffect, useRef, useState } from 'react'; diff --git a/src/frontend/client/src/hooks/useToast.ts b/src/frontend/client/src/hooks/useToast.ts index b277f4126c..ceeb0902be 100644 --- a/src/frontend/client/src/hooks/useToast.ts +++ b/src/frontend/client/src/hooks/useToast.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useRecoilState } from 'recoil'; import { useRef, useEffect } from 'react'; import type { TShowToast } from '~/common'; diff --git a/src/frontend/client/src/pages/Subscription/CreateChannel/KnowledgeSyncSection.tsx b/src/frontend/client/src/pages/Subscription/CreateChannel/KnowledgeSyncSection.tsx index e1d8ba7443..6cab00f07e 100644 --- a/src/frontend/client/src/pages/Subscription/CreateChannel/KnowledgeSyncSection.tsx +++ b/src/frontend/client/src/pages/Subscription/CreateChannel/KnowledgeSyncSection.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore /** * KnowledgeSyncSection — v2.5 Module D configuration UI. * diff --git a/src/frontend/client/src/pages/Subscription/channelUtils.ts b/src/frontend/client/src/pages/Subscription/channelUtils.ts index f6629cdf05..1e43eafb70 100644 --- a/src/frontend/client/src/pages/Subscription/channelUtils.ts +++ b/src/frontend/client/src/pages/Subscription/channelUtils.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { type CreateManagerChannelPayload, type ManagerChannelFilterRule, diff --git a/src/frontend/client/src/pages/appChat/ChatInput.tsx b/src/frontend/client/src/pages/appChat/ChatInput.tsx index bddd4795b1..2b98bec258 100644 --- a/src/frontend/client/src/pages/appChat/ChatInput.tsx +++ b/src/frontend/client/src/pages/appChat/ChatInput.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useMemo, useState, useRef } from "react"; import { useRecoilState, useRecoilValue } from "recoil"; import { Button, SendIcon, Textarea } from "~/components"; diff --git a/src/frontend/client/src/pages/appChat/ChatMessages.tsx b/src/frontend/client/src/pages/appChat/ChatMessages.tsx index 6779ee320e..1888ade34c 100644 --- a/src/frontend/client/src/pages/appChat/ChatMessages.tsx +++ b/src/frontend/client/src/pages/appChat/ChatMessages.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useMemo } from "react"; import { useRecoilValue } from "recoil"; import type { CitationReferencesDesktopPayload } from "~/components/Chat/Messages/Content/CitationReferencesDrawer"; diff --git a/src/frontend/client/src/pages/appChat/appUtils/skillMethod.ts b/src/frontend/client/src/pages/appChat/appUtils/skillMethod.ts index 1a6df8cb98..bc10911388 100644 --- a/src/frontend/client/src/pages/appChat/appUtils/skillMethod.ts +++ b/src/frontend/client/src/pages/appChat/appUtils/skillMethod.ts @@ -14,7 +14,7 @@ export const SkillMethod = { inputs: {} } as any if (flow.flow_type === 1) { - let inputs = tabs[flow.id].formKeysData.input_keys; + const inputs = tabs[flow.id].formKeysData.input_keys; const input = inputs.find((el: any) => !el.type) const inputKey = input ? Object.keys(input)[0] : ''; if (message) msgData.inputs = { ...input, [inputKey]: message } diff --git a/src/frontend/client/src/pages/appChat/components/AppSidebarConvoItem.tsx b/src/frontend/client/src/pages/appChat/components/AppSidebarConvoItem.tsx index 9b2b268675..8087dae618 100644 --- a/src/frontend/client/src/pages/appChat/components/AppSidebarConvoItem.tsx +++ b/src/frontend/client/src/pages/appChat/components/AppSidebarConvoItem.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useState, useRef, useCallback, useEffect } from 'react'; import { Check, X } from 'lucide-react'; import { Outlined } from 'bisheng-icons'; diff --git a/src/frontend/client/src/pages/appChat/components/AppSwitcherDropdown.tsx b/src/frontend/client/src/pages/appChat/components/AppSwitcherDropdown.tsx index 2cd487d771..33c8ff6ece 100644 --- a/src/frontend/client/src/pages/appChat/components/AppSwitcherDropdown.tsx +++ b/src/frontend/client/src/pages/appChat/components/AppSwitcherDropdown.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { ArrowLeftRight, Loader2, Search, Pin } from 'lucide-react'; import type { AppItem } from '~/@types/app'; import { Popover, PopoverContent, PopoverTrigger } from '~/components/ui/Popover'; diff --git a/src/frontend/client/src/pages/appChat/components/ChatFile.tsx b/src/frontend/client/src/pages/appChat/components/ChatFile.tsx index 5c439c229e..391eb44b14 100644 --- a/src/frontend/client/src/pages/appChat/components/ChatFile.tsx +++ b/src/frontend/client/src/pages/appChat/components/ChatFile.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { FileIcon, getFileTypebyFileName } from "~/components/ui/icon/File/FileIcon"; import { downloadFile } from "~/utils"; import useLocalize from "~/hooks/useLocalize"; diff --git a/src/frontend/client/src/pages/appChat/components/GuideWord.tsx b/src/frontend/client/src/pages/appChat/components/GuideWord.tsx index 9afbc55d34..76a4a1521b 100644 --- a/src/frontend/client/src/pages/appChat/components/GuideWord.tsx +++ b/src/frontend/client/src/pages/appChat/components/GuideWord.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useMemo } from "react"; import { emitAreaTextEvent, EVENT_TYPE } from "../useAreaText" diff --git a/src/frontend/client/src/pages/appChat/components/InputComponent.tsx b/src/frontend/client/src/pages/appChat/components/InputComponent.tsx index dfe74f025a..162ebf369e 100644 --- a/src/frontend/client/src/pages/appChat/components/InputComponent.tsx +++ b/src/frontend/client/src/pages/appChat/components/InputComponent.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useState } from "react"; import { cn } from "~/utils"; diff --git a/src/frontend/client/src/pages/appChat/components/InputFileComponent.tsx b/src/frontend/client/src/pages/appChat/components/InputFileComponent.tsx index c533fab94b..9f799a9408 100644 --- a/src/frontend/client/src/pages/appChat/components/InputFileComponent.tsx +++ b/src/frontend/client/src/pages/appChat/components/InputFileComponent.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { FileSearch2, Loader2 } from "lucide-react"; import { useContext, useEffect, useState } from "react"; diff --git a/src/frontend/client/src/pages/appChat/components/InputFiles.tsx b/src/frontend/client/src/pages/appChat/components/InputFiles.tsx index d30941d425..868b0dccb0 100644 --- a/src/frontend/client/src/pages/appChat/components/InputFiles.tsx +++ b/src/frontend/client/src/pages/appChat/components/InputFiles.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Loader2, X } from "lucide-react"; import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from "react"; diff --git a/src/frontend/client/src/pages/appChat/components/InputForm.tsx b/src/frontend/client/src/pages/appChat/components/InputForm.tsx index bf2173f4b6..91714c4255 100644 --- a/src/frontend/client/src/pages/appChat/components/InputForm.tsx +++ b/src/frontend/client/src/pages/appChat/components/InputForm.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useRef, useState } from "react"; import { Button } from "~/components"; diff --git a/src/frontend/client/src/pages/appChat/components/InputFormSkill.tsx b/src/frontend/client/src/pages/appChat/components/InputFormSkill.tsx index 68621b9def..72c737e81c 100644 --- a/src/frontend/client/src/pages/appChat/components/InputFormSkill.tsx +++ b/src/frontend/client/src/pages/appChat/components/InputFormSkill.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { forwardRef, useContext, useEffect, useImperativeHandle, useRef, useState } from "react"; import { getVariablesApi } from "~/api/apps"; diff --git a/src/frontend/client/src/pages/appChat/components/MessageBs.tsx b/src/frontend/client/src/pages/appChat/components/MessageBs.tsx index 47bc203ea6..bd7eb39c9c 100644 --- a/src/frontend/client/src/pages/appChat/components/MessageBs.tsx +++ b/src/frontend/client/src/pages/appChat/components/MessageBs.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { CheckIcon, ChevronDown, Loader2 } from "lucide-react"; import { useMemo, useRef, useState } from "react"; import { useParams } from "react-router-dom"; diff --git a/src/frontend/client/src/pages/appChat/components/MessageBsChoose.tsx b/src/frontend/client/src/pages/appChat/components/MessageBsChoose.tsx index d72818317d..7818a90d83 100644 --- a/src/frontend/client/src/pages/appChat/components/MessageBsChoose.tsx +++ b/src/frontend/client/src/pages/appChat/components/MessageBsChoose.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { CheckIcon, File } from "lucide-react"; import { useMemo, useRef, useState } from "react"; import { ChatMessageType } from "~/@types/chat"; @@ -10,7 +11,7 @@ import { emitAreaTextEvent, EVENT_TYPE } from "../useAreaText"; import { changeMinioUrl } from "./ResouceModal"; export default function MessageBsChoose({ type = 'choose', disabled, logo, data, flow } - : { type?: string, disabled?: Boolean, logo: React.ReactNode, data: ChatMessageType }) { + : { type?: string, disabled?: boolean, logo: React.ReactNode, data: ChatMessageType }) { const t = useLocalize() const [selected, setSelected] = useState(data.message.hisValue || '') const handleSelect = (obj) => { diff --git a/src/frontend/client/src/pages/appChat/components/MessageRemark.tsx b/src/frontend/client/src/pages/appChat/components/MessageRemark.tsx index 6dd5797649..edb0a9c0df 100644 --- a/src/frontend/client/src/pages/appChat/components/MessageRemark.tsx +++ b/src/frontend/client/src/pages/appChat/components/MessageRemark.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import Markdown from "~/components/Chat/Messages/Content/Markdown"; import { TextToSpeechButton } from "~/components/Voice/TextToSpeechButton"; diff --git a/src/frontend/client/src/pages/appChat/components/MessageSystem.tsx b/src/frontend/client/src/pages/appChat/components/MessageSystem.tsx index 94e5f4b84a..2b82d7a2bb 100644 --- a/src/frontend/client/src/pages/appChat/components/MessageSystem.tsx +++ b/src/frontend/client/src/pages/appChat/components/MessageSystem.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Copy } from "lucide-react"; import { useMemo } from "react"; import Markdown from "~/components/Chat/Messages/Content/Markdown"; diff --git a/src/frontend/client/src/pages/appChat/components/ResouceModal.tsx b/src/frontend/client/src/pages/appChat/components/ResouceModal.tsx index 0f57850fde..3dfac518e9 100644 --- a/src/frontend/client/src/pages/appChat/components/ResouceModal.tsx +++ b/src/frontend/client/src/pages/appChat/components/ResouceModal.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { CircleHelp, Import } from "lucide-react"; import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; diff --git a/src/frontend/client/src/pages/appChat/index.tsx b/src/frontend/client/src/pages/appChat/index.tsx index 05acfbb727..9a94a9f58f 100644 --- a/src/frontend/client/src/pages/appChat/index.tsx +++ b/src/frontend/client/src/pages/appChat/index.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useMemo, useState } from "react"; import { useNavigate, useParams } from "react-router-dom"; import { useRecoilState, useRecoilValue, useSetRecoilState } from "recoil"; @@ -266,7 +267,7 @@ const useBuild = () => { const res = await postBuildInit({ flow, chatId }); const flowId = res.data.flowId; // Step 2: Use the session ID to establish an SSE connection using EventSource - let validationResults = []; + const validationResults = []; let finished = false; let buildEnd = false const apiUrl = `${__APP_ENV__.BASE_URL}/api/v1/build/stream/${flowId}?chat_id=${chatId}`; diff --git a/src/frontend/client/src/pages/appChat/useAreaText.ts b/src/frontend/client/src/pages/appChat/useAreaText.ts index 5ce218af08..04bf0aab96 100644 --- a/src/frontend/client/src/pages/appChat/useAreaText.ts +++ b/src/frontend/client/src/pages/appChat/useAreaText.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useRef, useState } from "react"; import { useRecoilState, useRecoilValue } from "recoil"; import { FLOW_TYPES } from "."; diff --git a/src/frontend/client/src/pages/appChat/useFileDropAndPaste.ts b/src/frontend/client/src/pages/appChat/useFileDropAndPaste.ts index 351b9b8694..20d5048bd5 100644 --- a/src/frontend/client/src/pages/appChat/useFileDropAndPaste.ts +++ b/src/frontend/client/src/pages/appChat/useFileDropAndPaste.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useState, useRef, useEffect, useCallback } from 'react'; import { generateUUID } from '~/utils'; diff --git a/src/frontend/client/src/pages/appChat/useWebsocket.ts b/src/frontend/client/src/pages/appChat/useWebsocket.ts index fa92bbb5e0..bf0f47acfc 100644 --- a/src/frontend/client/src/pages/appChat/useWebsocket.ts +++ b/src/frontend/client/src/pages/appChat/useWebsocket.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore "use client" import { useEffect, useRef } from "react" import { useRecoilState, useRecoilValue } from "recoil" diff --git a/src/frontend/client/src/pages/apps/appUtils.ts b/src/frontend/client/src/pages/apps/appUtils.ts index 7ff52e99af..1b8a61af9b 100644 --- a/src/frontend/client/src/pages/apps/appUtils.ts +++ b/src/frontend/client/src/pages/apps/appUtils.ts @@ -65,7 +65,7 @@ export function groupConversationsByTime( * Format: /share/app_{appId}_{flowType} */ export function getAppShareUrl(appId: string, flowType: number | string): string { - // eslint-disable-next-line @typescript-eslint/no-explicit-any -- global env constant + const baseUrl = __APP_ENV__.BASE_URL || ''; return `${window.location.origin}${baseUrl}/share/app_${appId}_${flowType}`; } diff --git a/src/frontend/client/src/pages/apps/components/AgentGrid.tsx b/src/frontend/client/src/pages/apps/components/AgentGrid.tsx index d8a8738c8b..31b8002a72 100644 --- a/src/frontend/client/src/pages/apps/components/AgentGrid.tsx +++ b/src/frontend/client/src/pages/apps/components/AgentGrid.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore "use client" import { ChevronDown, Loader2 } from "lucide-react" diff --git a/src/frontend/client/src/pages/apps/components/AgentNavigation.tsx b/src/frontend/client/src/pages/apps/components/AgentNavigation.tsx index f50cf858f5..bd4b32ce92 100644 --- a/src/frontend/client/src/pages/apps/components/AgentNavigation.tsx +++ b/src/frontend/client/src/pages/apps/components/AgentNavigation.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore "use client" import { BoltIcon } from "lucide-react" diff --git a/src/frontend/client/src/pages/apps/components/SearchOverlay.tsx b/src/frontend/client/src/pages/apps/components/SearchOverlay.tsx index b5a300175f..50c8a6bd96 100644 --- a/src/frontend/client/src/pages/apps/components/SearchOverlay.tsx +++ b/src/frontend/client/src/pages/apps/components/SearchOverlay.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore "use client" import { useCallback, useEffect, useMemo, useRef, useState } from "react" diff --git a/src/frontend/client/src/pages/knowledge/FilePreview/RichKnowledgePreview.tsx b/src/frontend/client/src/pages/knowledge/FilePreview/RichKnowledgePreview.tsx index 182da61e02..8c35e5c4ad 100644 --- a/src/frontend/client/src/pages/knowledge/FilePreview/RichKnowledgePreview.tsx +++ b/src/frontend/client/src/pages/knowledge/FilePreview/RichKnowledgePreview.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useMemo, useState } from "react"; import type { ReactNode } from "react"; import i18next from "i18next"; diff --git a/src/frontend/client/src/pages/knowledge/FilePreview/viewers/ExcelPreview.tsx b/src/frontend/client/src/pages/knowledge/FilePreview/viewers/ExcelPreview.tsx index 6abc828005..da038f789c 100644 --- a/src/frontend/client/src/pages/knowledge/FilePreview/viewers/ExcelPreview.tsx +++ b/src/frontend/client/src/pages/knowledge/FilePreview/viewers/ExcelPreview.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useMemo, useRef, useState } from "react"; import * as XLSX from "xlsx"; @@ -154,7 +155,7 @@ const ExcelPreview = ({ filePath, fileExt: fileExtProp }: { filePath: string; fi } // Step 3: 等待 base64 - for (let img of images) { + for (const img of images) { img.base64 = await img.base64Promise; delete img.base64Promise; img.mimeType = getMimeType(img.ext); diff --git a/src/frontend/client/src/pages/knowledge/FilePreview/viewers/MarkdownViewer.tsx b/src/frontend/client/src/pages/knowledge/FilePreview/viewers/MarkdownViewer.tsx index b62a03f922..0ec7fa9f54 100644 --- a/src/frontend/client/src/pages/knowledge/FilePreview/viewers/MarkdownViewer.tsx +++ b/src/frontend/client/src/pages/knowledge/FilePreview/viewers/MarkdownViewer.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useState } from "react"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; diff --git a/src/frontend/client/src/pages/knowledge/SpaceDetail/AiChat/TagPicker.tsx b/src/frontend/client/src/pages/knowledge/SpaceDetail/AiChat/TagPicker.tsx index da20fa6956..c2c312a71f 100644 --- a/src/frontend/client/src/pages/knowledge/SpaceDetail/AiChat/TagPicker.tsx +++ b/src/frontend/client/src/pages/knowledge/SpaceDetail/AiChat/TagPicker.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore /** * TagPicker — floating popup that displays available tags. * Triggered when user types '#' in the chat input. diff --git a/src/frontend/client/src/pages/knowledge/SpaceDetail/FileTable.tsx b/src/frontend/client/src/pages/knowledge/SpaceDetail/FileTable.tsx index e232923d21..e6d94bbb8d 100644 --- a/src/frontend/client/src/pages/knowledge/SpaceDetail/FileTable.tsx +++ b/src/frontend/client/src/pages/knowledge/SpaceDetail/FileTable.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { TableBody, TableCell, diff --git a/src/frontend/client/src/pages/knowledge/SpaceDetail/PaginationBar.tsx b/src/frontend/client/src/pages/knowledge/SpaceDetail/PaginationBar.tsx index b05c8720fd..833786cc8b 100644 --- a/src/frontend/client/src/pages/knowledge/SpaceDetail/PaginationBar.tsx +++ b/src/frontend/client/src/pages/knowledge/SpaceDetail/PaginationBar.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import React from "react"; import { ChevronLeft, ChevronRight } from "lucide-react"; import { diff --git a/src/frontend/client/src/pages/knowledge/SpaceDetail/index.tsx b/src/frontend/client/src/pages/knowledge/SpaceDetail/index.tsx index 22170ec04f..3571d22778 100644 --- a/src/frontend/client/src/pages/knowledge/SpaceDetail/index.tsx +++ b/src/frontend/client/src/pages/knowledge/SpaceDetail/index.tsx @@ -650,7 +650,7 @@ export function KnowledgeSpaceContent({ return; } - for (let f of filesList) { + for (const f of filesList) { const fileMaxSizeMB = getMaxFileSizeMBForFile(f.name, uploadSizeLimits); const fileMaxSizeBytes = getMaxFileSizeBytesForFile(f.name, uploadSizeLimits); if (f.size > fileMaxSizeBytes) { diff --git a/src/frontend/client/src/pages/knowledge/index.tsx b/src/frontend/client/src/pages/knowledge/index.tsx index 561f3050c9..5d9fdd0abe 100644 --- a/src/frontend/client/src/pages/knowledge/index.tsx +++ b/src/frontend/client/src/pages/knowledge/index.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { createPortal } from "react-dom"; import { Plus } from "lucide-react"; diff --git a/src/frontend/client/src/pages/knowledge/sidebar/KnowledgeSpaceItem.tsx b/src/frontend/client/src/pages/knowledge/sidebar/KnowledgeSpaceItem.tsx index 653e310aaa..aae39b62af 100644 --- a/src/frontend/client/src/pages/knowledge/sidebar/KnowledgeSpaceItem.tsx +++ b/src/frontend/client/src/pages/knowledge/sidebar/KnowledgeSpaceItem.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Outlined } from "bisheng-icons"; import { useState, type MouseEvent } from "react"; import { createPortal } from "react-dom"; diff --git a/src/frontend/client/src/pages/share.tsx b/src/frontend/client/src/pages/share.tsx index 7d9bef4876..3d33f05473 100644 --- a/src/frontend/client/src/pages/share.tsx +++ b/src/frontend/client/src/pages/share.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useEffect, useState } from "react"; import { useNavigate, useParams } from "react-router-dom"; diff --git a/src/frontend/client/src/types/chat/file-config.ts b/src/frontend/client/src/types/chat/file-config.ts index b00f19fd74..7e9546664b 100644 --- a/src/frontend/client/src/types/chat/file-config.ts +++ b/src/frontend/client/src/types/chat/file-config.ts @@ -1,4 +1,4 @@ -/* eslint-disable max-len */ + import { z } from 'zod'; import { EModelEndpoint } from './schemas'; import type { FileConfig, EndpointFileConfig } from './files'; diff --git a/src/frontend/client/src/types/chat/types.ts b/src/frontend/client/src/types/chat/types.ts index cc7cc3544e..e64db4032d 100644 --- a/src/frontend/client/src/types/chat/types.ts +++ b/src/frontend/client/src/types/chat/types.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import type OpenAI from 'openai'; import type { InfiniteData } from '@tanstack/react-query'; import type { diff --git a/src/frontend/client/src/utils/index.ts b/src/frontend/client/src/utils/index.ts index 6ea052772b..163010d3bf 100644 --- a/src/frontend/client/src/utils/index.ts +++ b/src/frontend/client/src/utils/index.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import axios from 'axios'; import React from 'react'; import { stripCitationMarkers } from '~/components/Chat/Messages/Content/citationUtils'; diff --git a/src/frontend/client/src/utils/rehypeBr.ts b/src/frontend/client/src/utils/rehypeBr.ts index 433b1b2d42..3fe5cbc5a7 100644 --- a/src/frontend/client/src/utils/rehypeBr.ts +++ b/src/frontend/client/src/utils/rehypeBr.ts @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { visit, SKIP } from 'unist-util-visit'; /** diff --git a/src/frontend/client/tsconfig.json b/src/frontend/client/tsconfig.json index 785454147b..6981f76933 100644 --- a/src/frontend/client/tsconfig.json +++ b/src/frontend/client/tsconfig.json @@ -1,6 +1,7 @@ { "compilerOptions": { "target": "ESNext", + "plugins": [{ "name": "typescript-strict-plugin" }], "useDefineForClassFields": true, "lib": ["DOM", "DOM.Iterable", "ESNext"], "allowJs": true, diff --git a/src/frontend/package.json b/src/frontend/package.json index 1def63fde1..bbe69d841c 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -10,6 +10,8 @@ "build:platform": "pnpm --filter bisheng build", "build": "pnpm --filter bisheng build && pnpm --filter bishengchat build", "build:docs": "pnpm --filter bishengchat build:docs", + "lint": "pnpm --filter bisheng lint && pnpm --filter bishengchat lint && pnpm --filter @bisheng/ui lint", + "typecheck": "pnpm --filter bisheng typecheck && pnpm --filter bishengchat typecheck", "preinstall": "npx only-allow pnpm" }, "pnpm": { @@ -17,5 +19,13 @@ "rollup@>=4.45.0": "4.44.1", "vite@>=6.4.2": "6.4.1" } + }, + "devDependencies": { + "@eslint/js": "^9", + "eslint": "^9", + "eslint-plugin-react-hooks": "^5", + "globals": "^17.7.0", + "typescript-eslint": "^8", + "typescript-strict-plugin": "^2.4.4" } } diff --git a/src/frontend/packages/ui/docs/scripts/detect.cjs b/src/frontend/packages/ui/docs/scripts/detect.cjs index bd838852e6..bde27a11b0 100644 --- a/src/frontend/packages/ui/docs/scripts/detect.cjs +++ b/src/frontend/packages/ui/docs/scripts/detect.cjs @@ -13,7 +13,6 @@ const fs = require('fs'); const CJK = /[㐀-䶿一-鿿豈-﫿]/; const S = String.fromCharCode(1); -const isCJK = (ch) => ch != null && CJK.test(ch); function mask(src) { let s = src; diff --git a/src/frontend/packages/ui/eslint.config.mjs b/src/frontend/packages/ui/eslint.config.mjs new file mode 100644 index 0000000000..e94d81904f --- /dev/null +++ b/src/frontend/packages/ui/eslint.config.mjs @@ -0,0 +1,37 @@ +// ESLint 9 flat config — @bisheng/ui shared package. +// This package is new code: NO suppressions file, zero tolerance from day one. +import js from '@eslint/js' +import tseslint from 'typescript-eslint' +import reactHooks from 'eslint-plugin-react-hooks' +import globals from 'globals' + +export default tseslint.config( + { ignores: ['dist/**', 'node_modules/**', 'doc_build/**'] }, + js.configs.recommended, + ...tseslint.configs.recommended, + { + languageOptions: { + globals: { ...globals.browser, ...globals.es2021 }, + parserOptions: { ecmaFeatures: { jsx: true } }, + }, + plugins: { 'react-hooks': reactHooks }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-hooks/exhaustive-deps': 'error', + '@typescript-eslint/no-explicit-any': 'error', + '@typescript-eslint/ban-ts-comment': ['error', { 'ts-expect-error': 'allow-with-description' }], + 'no-console': ['error', { allow: ['warn', 'error'] }], + // Package contract: presentation-only — no HTTP at all. + 'no-restricted-imports': ['error', { paths: [{ name: 'axios', message: '@bisheng/ui is presentation-only; no HTTP allowed (package contract).' }] }], + }, + }, + { + // Node CJS tooling (token build, tailwind preset, docs scripts) — not component source. + files: ['**/*.cjs'], + languageOptions: { globals: { ...globals.node } }, + rules: { + '@typescript-eslint/no-require-imports': 'off', + 'no-console': 'off', + }, + }, +) diff --git a/src/frontend/packages/ui/package.json b/src/frontend/packages/ui/package.json index 2149f0cd52..0f4aeacd2f 100644 --- a/src/frontend/packages/ui/package.json +++ b/src/frontend/packages/ui/package.json @@ -11,7 +11,8 @@ "./design-token": "./design-token.cjs" }, "scripts": { - "typecheck": "tsc --noEmit" + "typecheck": "tsc --noEmit", + "lint": "eslint ." }, "peerDependencies": { "react": "^18.2.0", diff --git a/src/frontend/platform/eslint-suppressions.json b/src/frontend/platform/eslint-suppressions.json new file mode 100644 index 0000000000..aeb2cf2c5f --- /dev/null +++ b/src/frontend/platform/eslint-suppressions.json @@ -0,0 +1,3767 @@ +{ + "src/App.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/CustomNodes/GenericNode/components/parameterComponent/index.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 2 + }, + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "react-hooks/exhaustive-deps": { + "count": 5 + } + }, + "src/CustomNodes/GenericNode/components/parameterComponent/l2Index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/CustomNodes/GenericNode/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/rules-of-hooks": { + "count": 1 + } + }, + "src/alerts/alertDropDown/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/LinSight/ToolSelector.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/LinSight/ToolSelectorContainer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/LinSight/skill/skillErrors.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/Pro/FlowControl.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "src/components/Pro/FlowRadio.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/Pro/security/AssistantSetting.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/Pro/security/FlowSetting.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/Pro/security/FormSet.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 2 + }, + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + } + }, + "src/components/VariablesComponent/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/bs-comp/FileView.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 6 + }, + "no-console": { + "count": 1 + }, + "no-useless-escape": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 4 + } + }, + "src/components/bs-comp/apiComponent/ApiAccess.tsx": { + "no-empty-pattern": { + "count": 1 + } + }, + "src/components/bs-comp/apiComponent/ApiAccessFlow.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 10 + }, + "no-useless-escape": { + "count": 6 + } + }, + "src/components/bs-comp/apiComponent/ApiAccessSkill.tsx": { + "no-empty-pattern": { + "count": 1 + } + }, + "src/components/bs-comp/apiComponent/ChatLink.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-comp/apiComponent/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-comp/cardComponent/LabelShow.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/components/bs-comp/cardComponent/index.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/bs-comp/chatComponent/ChatInput.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-console": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/components/bs-comp/chatComponent/CitationDocumentPreviewDrawer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/bs-comp/chatComponent/CitationReferencesDrawer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-comp/chatComponent/FileBs.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + } + }, + "src/components/bs-comp/chatComponent/GuideQuestions.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-comp/chatComponent/MessageBs.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + } + }, + "src/components/bs-comp/chatComponent/MessageButtons.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "src/components/bs-comp/chatComponent/MessagePanne.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/bs-comp/chatComponent/citationUtils.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "src/components/bs-comp/chatComponent/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/bs-comp/chatComponent/messageStore.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-console": { + "count": 3 + }, + "prefer-const": { + "count": 4 + } + }, + "src/components/bs-comp/department/LazyDepartmentTree.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-comp/filterTableDataComponent/FilterByApp.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-comp/filterTableDataComponent/FilterByUser.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-comp/knowledgeUploadComponent/DropZone.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + } + }, + "src/components/bs-comp/knowledgeUploadComponent/ProgressItem.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 4 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-comp/knowledgeUploadComponent/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/bs-comp/loadMore/index.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "no-console": { + "count": 4 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-comp/permission/PermissionBadge.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/bs-comp/permission/usePermissionLevels.ts": { + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/components/bs-comp/selectComponent/LabelSelect.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/bs-comp/selectComponent/Users.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + } + }, + "src/components/bs-comp/selectComponent/knowledge.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 10 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-comp/sheets/AppTempSheet.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/bs-comp/sheets/SkillChatSheet.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-comp/sheets/SkillSheet.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/bs-comp/sheets/ToolsSheet.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-comp/tableComponent/ColFilterUser.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-icons/addTo/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/app/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/components/bs-icons/avatar/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/bookOpen/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/clear/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/dashboard/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/components/bs-icons/del/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/components/bs-icons/down/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/en/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/expand/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/file/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/components/bs-icons/filter/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/flag/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/flow/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "src/components/bs-icons/form/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/github/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/go/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/knowledge/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/components/bs-icons/label/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/loading/BrandTickSpinner.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/loading/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/components/bs-icons/menu/application/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/menu/approval/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/menu/dataset/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/menu/evaluation/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/menu/label/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/menu/log/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/menu/model/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/menu/system/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/components/bs-icons/menu/technology/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/menu/tenant/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/moon/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/moveOne/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/office/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/plus/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/plusBox/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/components/bs-icons/prompt/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/quit/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/rbDrag/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/save/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/search/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/send/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/setting/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/tab/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/tip/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/tool/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/upload/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-icons/user/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-ui/alertDialog/useConfirm.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/bs-ui/button/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/bs-ui/calendar/datePicker.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "no-console": { + "count": 4 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/bs-ui/command.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/components/bs-ui/editLabel/index.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 2 + } + }, + "src/components/bs-ui/input/avator.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/bs-ui/input/editTitle.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 2 + } + }, + "src/components/bs-ui/input/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 7 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-ui/input/textInput.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/components/bs-ui/multiSelect.tsx/Example.tsx": { + "no-console": { + "count": 2 + } + }, + "src/components/bs-ui/multiSelect.tsx/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/components/bs-ui/select/cascader.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/bs-ui/select/filter.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-ui/select/multi.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/bs-ui/select/select.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/components/bs-ui/toast/use-toast.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/components/bs-ui/upload/simple.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/components/bs-ui/utils.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/bs-ui/voice/index.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/chatComponent/buildTrigger/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-console": { + "count": 1 + } + }, + "src/components/chatComponent/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/dictComponent/index.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/dropdownComponent/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/floatComponent/index.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/inputComponent/index.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/inputFileComponent/index.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/inputListComponent/index.tsx": { + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/intComponent/index.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/keypairListComponent/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/components/textAreaComponent/index.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/components/ui/editLabel.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 2 + } + }, + "src/components/voiceFunction/audioPlayButton.tsx": { + "no-console": { + "count": 4 + } + }, + "src/components/voiceFunction/speechToText.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 9 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/constants.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "no-empty": { + "count": 1 + } + }, + "src/contexts/SSEContext.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-empty-pattern": { + "count": 1 + } + }, + "src/contexts/darkContext.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 2 + } + }, + "src/contexts/locationContext.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/contexts/popUpContext.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/contexts/tabsContext.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 13 + }, + "no-console": { + "count": 1 + } + }, + "src/contexts/typesContext.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/contexts/undoRedoContext.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/contexts/userContext.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + } + }, + "src/controllers/API/approval.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 10 + } + }, + "src/controllers/API/assistant.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/controllers/API/dashboard.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 11 + }, + "no-console": { + "count": 1 + } + }, + "src/controllers/API/department.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "src/controllers/API/evaluate.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "src/controllers/API/finetune.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 28 + } + }, + "src/controllers/API/flow.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 15 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/controllers/API/index.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 58 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-console": { + "count": 6 + } + }, + "src/controllers/API/license.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/controllers/API/linsight.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "src/controllers/API/log.ts": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/controllers/API/orgSync.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/controllers/API/permission.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "src/controllers/API/pro.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 13 + } + }, + "src/controllers/API/tenant.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 11 + } + }, + "src/controllers/API/tools.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 9 + } + }, + "src/controllers/API/user.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 17 + } + }, + "src/controllers/API/workflow.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 10 + } + }, + "src/controllers/hooks/knowledge.ts": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/controllers/request.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/i18n.js": { + "no-undef": { + "count": 1 + } + }, + "src/icons/Airbyte/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/Anthropic/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/Bing/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/ChromaIcon/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/Cohere/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/Evernote/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/FacebookMessenger/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/GitBook/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/Google/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/HuggingFace/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/IFixIt/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/Meta/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/Midjorney/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/MongoDB/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/Notion/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/OpenAi/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/Pinecone/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/QDrant/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/Searx/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/Slack/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/VertexAI/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/hackerNews/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/icons/supabase/index.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/index.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 5 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/layout/HeaderMenu.tsx": { + "no-empty-pattern": { + "count": 1 + } + }, + "src/layout/MainLayout.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 2 + }, + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/modals/EditNodeModal/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 6 + } + }, + "src/modals/L2ParamsModal/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/modals/UploadModal/upload.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "no-console": { + "count": 2 + } + }, + "src/modals/baseModal/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/modals/dictAreaModal/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/modals/formModal/chatInput/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/modals/formModal/chatMessage/codeBlock/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/modals/formModal/chatMessage/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 8 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + }, + "react-hooks/rules-of-hooks": { + "count": 1 + } + }, + "src/modals/formModal/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 9 + }, + "@typescript-eslint/no-unsafe-function-type": { + "count": 1 + }, + "no-console": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/modals/genericModal/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 7 + } + }, + "src/pages/ApprovalPage/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 24 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/BuildPage/CreateApp.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-empty-object-type": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 7 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/appTemps.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/BuildPage/apps.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 16 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "react-hooks/rules-of-hooks": { + "count": 16 + } + }, + "src/pages/BuildPage/assistant/CreateAssistant.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/pages/BuildPage/assistant/editAssistant/AutoPromptDialog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/assistant/editAssistant/EditAssistantDialog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/assistant/editAssistant/Header.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/assistant/editAssistant/ModelSelect.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/assistant/editAssistant/Setting.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/BuildPage/assistant/editAssistant/TestChat.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/assistant/editAssistant/index.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + }, + "react-hooks/rules-of-hooks": { + "count": 15 + } + }, + "src/pages/BuildPage/bench/AppCenter.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/pages/BuildPage/bench/ConfigInheritanceBanner.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + } + }, + "src/pages/BuildPage/bench/DialogueWork.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/BuildPage/bench/IconUploadSection.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/pages/BuildPage/bench/KnowledgeSpace.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/BuildPage/bench/KnowledgeSpaceSensitivePolicy.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/bench/ModelManagement.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/pages/BuildPage/bench/OrgKbConfig.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/bench/RecommendedAppsConfig.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/BuildPage/bench/Subscribe.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "src/pages/BuildPage/bench/SubscriptionSensitivePolicy.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/bench/ToolsConfig.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/BuildPage/bench/WebSearchConfig.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/BuildPage/bench/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 11 + }, + "@typescript-eslint/no-unused-vars": { + "count": 6 + }, + "react-hooks/rules-of-hooks": { + "count": 14 + } + }, + "src/pages/BuildPage/flow/Controls.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "src/pages/BuildPage/flow/FlowChat/Chat.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/pages/BuildPage/flow/FlowChat/ChatFileFile.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowChat/ChatInput.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 6 + }, + "no-console": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 4 + } + }, + "src/pages/BuildPage/flow/FlowChat/ChatMessages.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/BuildPage/flow/FlowChat/ChatPane.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowChat/ChatTest.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowChat/GuideQuestions.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowChat/InputForm.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowChat/MessageBs.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "src/pages/BuildPage/flow/FlowChat/MessageBsChoose.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowChat/MessageMarkDown.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 5 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-useless-escape": { + "count": 2 + } + }, + "src/pages/BuildPage/flow/FlowChat/messageStore.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 9 + }, + "@typescript-eslint/no-unused-vars": { + "count": 6 + }, + "no-console": { + "count": 3 + }, + "prefer-const": { + "count": 5 + } + }, + "src/pages/BuildPage/flow/FlowNode/Parameter.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/ParameterGroup.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/pages/BuildPage/flow/FlowNode/ParameterSubGroup.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/RunLog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/RunTest.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/CodeInputItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/CodeOutputItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/CodePythonItem.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/ConditionItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 4 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/DragOptions.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/GlobalVarItem.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/GroupInputFile.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 6 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/HistoryNumItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/ImagePromptItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/InputFormItem.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/InputFormItemOld.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 4 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/InputListItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/KnowledgeQaSelectItem.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/KnowledgeSelectItem.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/MetadataFilter.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 11 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/ModelItem.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/NumberInput.tsx": { + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/OutputItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/ReportItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/ReportWordEdit.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/RetrievalWeightSlider.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/SelectVar.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 7 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-case-declarations": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/SqlConfigItem.tsx": { + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/VarInput.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 7 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/VarItem.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/VarSelectItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 5 + }, + "react-hooks/exhaustive-deps": { + "count": 7 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/VarTextareaItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/component/VarTextareaUploadItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/FlowNode/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "react-hooks/exhaustive-deps": { + "count": 5 + } + }, + "src/pages/BuildPage/flow/Header.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 8 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 5 + } + }, + "src/pages/BuildPage/flow/NoteNode.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/Panne.tsx": { + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 5 + } + }, + "src/pages/BuildPage/flow/Sidebar.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 7 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/BuildPage/flow/flowStore.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/BuildPage/flow/index.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/hook.ts": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/BuildPage/skills/CardSelectVersion.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/BuildPage/skills/CreateTemp.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/skills/FormSet.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/skills/editSkill/CollectionNameComponent/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/BuildPage/skills/editSkill/CollectionNameComponent/selectCollection.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/BuildPage/skills/editSkill/DisclosureComponent/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/BuildPage/skills/editSkill/Header.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/BuildPage/skills/editSkill/PageComponent/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 9 + } + }, + "src/pages/BuildPage/skills/editSkill/SelectionMenuComponent/index.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/skills/editSkill/extraSidebarComponent/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/BuildPage/skills/editSkill/index.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/skills/editSkill/nodeToolbarComponent/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-non-null-asserted-optional-chain": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-case-declarations": { + "count": 1 + } + }, + "src/pages/BuildPage/skills/editSkill/skillPage.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/skills/l2Edit.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + }, + "react-hooks/rules-of-hooks": { + "count": 22 + } + }, + "src/pages/BuildPage/tools/EditMcp.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 2 + } + }, + "src/pages/BuildPage/tools/EditTool.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/BuildPage/tools/ToolItem.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/tools/ToolSet.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "no-console": { + "count": 1 + } + }, + "src/pages/BuildPage/tools/builtInTool/Dalle3.tsx": { + "no-console": { + "count": 1 + } + }, + "src/pages/BuildPage/tools/builtInTool/FinancialData.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/BuildPage/tools/builtInTool/InputField.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/BuildPage/tools/builtInTool/SiliconFlowApiKey.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/BuildPage/tools/builtInTool/WebSearchFrom.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 33 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-empty": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/BuildPage/tools/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/ChatAppPage/chatAssitantShare.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/rules-of-hooks": { + "count": 2 + } + }, + "src/pages/ChatAppPage/chatShare.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + }, + "react-hooks/rules-of-hooks": { + "count": 4 + } + }, + "src/pages/ChatAppPage/chatWebview.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/ChatAppPage/components/ChatHome.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/ChatAppPage/components/ChatPanne.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-empty": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/ChatAppPage/components/ChatReportForm.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/ChatAppPage/components/FileViewPanne.tsx": { + "no-console": { + "count": 1 + }, + "no-useless-escape": { + "count": 1 + } + }, + "src/pages/ChatAppPage/components/ResouceModal.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 5 + } + }, + "src/pages/ChatAppPage/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/Dashboard/colorSchemes.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/Dashboard/components/AdvancedDatePicker.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Dashboard/components/charts/BaseChart.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 13 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/Dashboard/components/charts/ChartContainer.tsx": { + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Dashboard/components/charts/MetricCard.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/Dashboard/components/charts/QueryFilter.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Dashboard/components/config/ChartSelector.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/pages/Dashboard/components/config/ComponentConfigDrawer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 11 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 5 + } + }, + "src/pages/Dashboard/components/config/DashboardConfigPanel.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/pages/Dashboard/components/config/DatasetSelector.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "src/pages/Dashboard/components/config/DimensionBlock.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "no-console": { + "count": 2 + } + }, + "src/pages/Dashboard/components/config/FilterConditionDialog.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 5 + } + }, + "src/pages/Dashboard/components/config/StyleConfigPanel.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 9 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/Dashboard/components/config/useChartState.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 12 + }, + "no-console": { + "count": 7 + }, + "react-hooks/exhaustive-deps": { + "count": 4 + } + }, + "src/pages/Dashboard/components/dashboard/DashboardDetail.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/pages/Dashboard/components/dashboard/DashboardListItem.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/Dashboard/components/dashboard/DashboardSidebar.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/Dashboard/components/editor/ComponentWrapper.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Dashboard/components/editor/EditorCanvas.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 6 + } + }, + "src/pages/Dashboard/components/editor/EditorHeader.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/Dashboard/editor.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Dashboard/hook.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/pages/Dashboard/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/Dashboard/share.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Dashboard/types/chartData.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/pages/DataSetPage/CreateDataSet.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/DataSetPage/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/rules-of-hooks": { + "count": 4 + } + }, + "src/pages/DepartmentPage/components/AddMemberDialog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/pages/DepartmentPage/components/DepartmentSettings.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/DepartmentPage/components/DepartmentTrafficControl.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/pages/DiffFlowPage/components/Cell.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + } + }, + "src/pages/DiffFlowPage/components/Component.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/DiffFlowPage/components/ComponentParameter.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/pages/DiffFlowPage/components/RunTest.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "no-empty": { + "count": 1 + } + }, + "src/pages/DiffFlowPage/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + }, + "react-hooks/rules-of-hooks": { + "count": 7 + } + }, + "src/pages/EvaluationPage/EvaluationCreate.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/EvaluationPage/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/KnowledgePage/KnowledgeFile.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 11 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-console": { + "count": 9 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/KnowledgePage/KnowledgeQa.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 11 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/KnowledgePage/components/DocxFileViewer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "no-useless-escape": { + "count": 1 + }, + "react-hooks/rules-of-hooks": { + "count": 1 + } + }, + "src/pages/KnowledgePage/components/ExcelPreview.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "no-console": { + "count": 3 + }, + "no-useless-escape": { + "count": 4 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/KnowledgePage/components/FileSelector.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 5 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/KnowledgePage/components/FileUploadParagraphs.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + }, + "@typescript-eslint/no-unused-vars": { + "count": 15 + }, + "no-console": { + "count": 1 + } + }, + "src/pages/KnowledgePage/components/FileUploadStep1.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/KnowledgePage/components/FileUploadStep2.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 12 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + } + }, + "src/pages/KnowledgePage/components/FileUploadStep4.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-console": { + "count": 5 + } + }, + "src/pages/KnowledgePage/components/Files.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 9 + }, + "@typescript-eslint/no-unused-vars": { + "count": 7 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/KnowledgePage/components/Header.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 11 + } + }, + "src/pages/KnowledgePage/components/ImportQa.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "no-console": { + "count": 1 + } + }, + "src/pages/KnowledgePage/components/Markdown.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/KnowledgePage/components/MetadataDialog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 6 + } + }, + "src/pages/KnowledgePage/components/MetadataManagementDialog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/pages/KnowledgePage/components/ParagraphEdit.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "no-console": { + "count": 1 + }, + "no-useless-escape": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/KnowledgePage/components/Paragraphs.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "no-console": { + "count": 7 + }, + "react-hooks/exhaustive-deps": { + "count": 6 + } + }, + "src/pages/KnowledgePage/components/PreviewFile.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "no-useless-escape": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/KnowledgePage/components/PreviewParagraph.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 5 + } + }, + "src/pages/KnowledgePage/components/PreviewResult.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "prefer-const": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 3 + } + }, + "src/pages/KnowledgePage/components/RichPreviewFile.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/pages/KnowledgePage/components/RuleFile.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/pages/KnowledgePage/components/RuleTable.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/KnowledgePage/components/TxtFileViewer.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "no-useless-escape": { + "count": 1 + } + }, + "src/pages/KnowledgePage/components/WebLinkImportDialog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/KnowledgePage/components/tags/KnowledgeTagSelect.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/KnowledgePage/detail.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/KnowledgePage/filesUpload.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/KnowledgePage/index.tsx": { + "react-hooks/rules-of-hooks": { + "count": 1 + } + }, + "src/pages/KnowledgePage/qas.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/LabelPage/AddSimilarQuestions.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/LabelPage/SaveQaLibForm.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/LabelPage/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/LabelPage/taskAppChats.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + }, + "react-hooks/rules-of-hooks": { + "count": 12 + } + }, + "src/pages/LabelPage/taskApps.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "react-hooks/rules-of-hooks": { + "count": 4 + } + }, + "src/pages/LogPage/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/rules-of-hooks": { + "count": 1 + } + }, + "src/pages/LogPage/systemLog/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 13 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/LogPage/useAppLog/appChatDetail.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/LogPage/useAppLog/dailyChatDetail.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/LogPage/useAppLog/index.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/LoginPage/TenantSelect.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + } + }, + "src/pages/LoginPage/UserPwdModal.tsx": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/LoginPage/login.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/LoginPage/loginBridge.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/LoginPage/resetPwd.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/LoginPage/utils.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/ModelPage/components/Combobox.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/ModelPage/components/CreateTask.tsx": { + "no-console": { + "count": 1 + } + }, + "src/pages/ModelPage/components/CreateTaskList.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/ModelPage/components/FinetuneDetail.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/pages/ModelPage/components/FinetuneHead.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/ModelPage/components/FinetuneResult.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/ModelPage/components/RTConfig.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/pages/ModelPage/components/UploadModal.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "no-console": { + "count": 2 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/ModelPage/cpuInfo.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/ModelPage/doc.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/ModelPage/finetune.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + } + }, + "src/pages/ModelPage/manage/CustomForm.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/ModelPage/manage/ModelConfig.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 8 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/ModelPage/manage/SystemConfigBanners.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/ModelPage/manage/SystemModelConfig.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/pages/ModelPage/manage/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/ModelPage/manage/tabs/AssisModel.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/pages/ModelPage/manage/tabs/EvaluationModel.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/ModelPage/manage/tabs/KnowledgeModel.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/pages/ModelPage/manage/tabs/WorkbenchModel.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/ModelPage/manage/tabs/WorkflowModel.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/ModelPage/manage/useSystemConfigEnvelope.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/pages/Page404.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/pages/Report/components/Word.tsx": { + "no-console": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/Report/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/SystemPage/components/Config.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/SystemPage/components/EditRole.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 34 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + }, + "react-hooks/rules-of-hooks": { + "count": 1 + } + }, + "src/pages/SystemPage/components/EditUserGroup.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/pages/SystemPage/components/Roles.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/SystemPage/components/UserGroup.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/SystemPage/components/UserRoleItem.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + } + }, + "src/pages/SystemPage/components/UserRoleModal.tsx": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + } + }, + "src/pages/SystemPage/components/Users.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/pages/SystemPage/index.tsx": { + "react-hooks/rules-of-hooks": { + "count": 2 + } + }, + "src/pages/SystemPage/theme/Example.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/SystemPage/theme/WorkbenchThemeSettings.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/SystemPage/theme/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/TenantPage/components/CreateTenantDialog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/pages/TenantPage/components/TenantQuotaDialog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/pages/TenantPage/components/TenantUserDialog.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/pages/TenantPage/index.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/routes/index.tsx": { + "@typescript-eslint/ban-ts-comment": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "src/store/assistantStore.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/store/dashboardStore.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/store/diffFlowStore.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/store/editFlowStore.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/test/approvalPage.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 20 + } + }, + "src/test/departmentKnowledgeSpaceDialogs.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/test/departmentPageRefresh.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/test/departmentSettingsPayload.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 13 + } + }, + "src/test/departmentUsersSelectScope.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/test/headerMenuChildAdmin.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/test/knowledgePermissionDialog.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 13 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/test/knowledgeSpaceGrantSubjects.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 18 + } + }, + "src/test/mainLayoutSystemNavChildAdmin.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "src/test/mainLayoutWorkspaceMenu.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "src/test/modelPermissions.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 12 + } + }, + "src/test/permissionGrantTab.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "src/test/permissionListTab.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 20 + } + }, + "src/test/permissionRegressions.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 36 + } + }, + "src/test/resolveRoutePermissions.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/test/setup.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/test/subjectSearchUser.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 12 + } + }, + "src/test/systemDepartmentsArchivedDelete.test.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/types/alerts/index.ts": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + } + }, + "src/types/api/finetune.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/types/api/index.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "src/types/api/tenant.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "src/types/api/user.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "src/types/chat/index.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "src/types/components/index.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + }, + "@typescript-eslint/no-unsafe-function-type": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/types/flow/index.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 11 + } + }, + "src/types/global.d.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "src/types/tabs/index.ts": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + }, + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "src/types/templatesContext/index.ts": { + "@typescript-eslint/no-empty-object-type": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/types/typesContext/index.ts": { + "@typescript-eslint/no-empty-object-type": { + "count": 3 + }, + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/util/advancedParamsTemplates.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 17 + } + }, + "src/util/flowUtils.ts": { + "@typescript-eslint/no-unused-expressions": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "no-useless-escape": { + "count": 6 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/util/hook.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 10 + }, + "@typescript-eslint/no-unused-expressions": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "no-console": { + "count": 4 + }, + "react-hooks/exhaustive-deps": { + "count": 7 + } + }, + "src/util/reactflowUtils.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + }, + "@typescript-eslint/no-non-null-asserted-optional-chain": { + "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 6 + }, + "no-prototype-builtins": { + "count": 3 + } + }, + "src/util/utils.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "no-restricted-imports": { + "count": 1 + }, + "no-useless-escape": { + "count": 1 + } + }, + "src/utils.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + }, + "@typescript-eslint/no-this-alias": { + "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "no-prototype-builtins": { + "count": 4 + } + }, + "src/workspace/markdown/Echarts.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-console": { + "count": 1 + } + }, + "src/workspace/markdown/Mermaid.tsx": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + }, + "no-console": { + "count": 1 + }, + "no-constant-binary-expression": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 1 + } + } +} \ No newline at end of file diff --git a/src/frontend/platform/eslint.config.mjs b/src/frontend/platform/eslint.config.mjs new file mode 100644 index 0000000000..d28266b638 --- /dev/null +++ b/src/frontend/platform/eslint.config.mjs @@ -0,0 +1,49 @@ +// ESLint 9 flat config — quality gate for the platform app. +// Policy: legacy violations are frozen in eslint-suppressions.json (may only shrink); +// new code must be clean. Run `npm run lint` locally, CI enforces on every PR. +import js from '@eslint/js' +import tseslint from 'typescript-eslint' +import reactHooks from 'eslint-plugin-react-hooks' +import globals from 'globals' + +export default tseslint.config( + { + ignores: [ + 'dist/**', + 'build/**', + 'node_modules/**', + 'public/**', + 'local-packages/**', + 'coverage/**', + '*.config.{js,ts,mjs,mts}', + 'vite.config.mts', + ], + }, + js.configs.recommended, + ...tseslint.configs.recommended, + { + languageOptions: { + globals: { ...globals.browser, ...globals.es2021, ...globals.node }, + parserOptions: { ecmaFeatures: { jsx: true } }, + }, + plugins: { 'react-hooks': reactHooks }, + rules: { + ...reactHooks.configs.recommended.rules, + // All gate rules are "error" so they are frozen via suppressions and block new code. + 'react-hooks/exhaustive-deps': 'error', + '@typescript-eslint/no-explicit-any': 'error', + '@typescript-eslint/ban-ts-comment': ['error', { 'ts-expect-error': 'allow-with-description' }], + 'no-console': ['error', { allow: ['warn', 'error'] }], + // C7: HTTP must go through the wrapped request module. + 'no-restricted-imports': [ + 'error', + { paths: [{ name: 'axios', message: 'Use @/controllers/request (wrapped module) instead of raw axios. See constitution C7.' }] }, + ], + }, + }, + { + // The wrapper itself legitimately imports axios. + files: ['src/controllers/request.ts', 'src/controllers/API/index.ts'], + rules: { 'no-restricted-imports': 'off' }, + }, +) diff --git a/src/frontend/platform/package.json b/src/frontend/platform/package.json index 75867e247e..b5798aa2e3 100644 --- a/src/frontend/platform/package.json +++ b/src/frontend/platform/package.json @@ -79,7 +79,11 @@ "format": "npx prettier --write \"**/*.{js,jsx,ts,tsx,json,md}\"", "test": "vitest run", "test:watch": "vitest", - "test:coverage": "vitest run --coverage" + "test:coverage": "vitest run --coverage", + "lint": "eslint . --suppressions-location eslint-suppressions.json", + "lint:fix": "eslint . --suppressions-location eslint-suppressions.json --fix", + "lint:prune": "eslint . --suppressions-location eslint-suppressions.json --prune-suppressions", + "typecheck": "tsc-strict" }, "eslintConfig": { "extends": [ diff --git a/src/frontend/platform/src/App.tsx b/src/frontend/platform/src/App.tsx index 61951da964..039a75ee2d 100644 --- a/src/frontend/platform/src/App.tsx +++ b/src/frontend/platform/src/App.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import cloneDeep from "lodash-es/cloneDeep"; import uniqueId from "lodash-es/uniqueId"; import { Suspense, useContext, useEffect, useMemo, useState } from "react"; @@ -19,7 +20,7 @@ import { LoadingIcon } from "./components/bs-icons/loading"; import { useToast } from "./components/bs-ui/toast/use-toast"; export default function App() { - let { setCurrent, setShowSideBar, setIsStackedOpen } = useContext(locationContext); + const { setCurrent, setShowSideBar, setIsStackedOpen } = useContext(locationContext); // let location = useLocation(); useEffect(() => { setCurrent(location.pathname.replace(/\/$/g, "").split("/")); @@ -61,7 +62,7 @@ export default function App() { } setErrorOpen(false); setAlertsList((old) => { - let newAlertsList = [ + const newAlertsList = [ ...old, { type: "error", data: cloneDeep(errorData), id: uniqueId() }, ]; @@ -79,7 +80,7 @@ export default function App() { } setNoticeOpen(false); setAlertsList((old) => { - let newAlertsList = [ + const newAlertsList = [ ...old, { type: "notice", data: cloneDeep(noticeData), id: uniqueId() }, ]; @@ -97,7 +98,7 @@ export default function App() { } setSuccessOpen(false); setAlertsList((old) => { - let newAlertsList = [ + const newAlertsList = [ ...old, { type: "success", data: cloneDeep(successData), id: uniqueId() }, ]; @@ -123,7 +124,7 @@ export default function App() { useEffect(() => { window.errorAlerts = (errorList: string[]) => { setAlertsList((old) => { - let newAlertsList = [ + const newAlertsList = [ ...old, { type: "error", data: { title: '', list: errorList }, id: uniqueId() }, ]; diff --git a/src/frontend/platform/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx b/src/frontend/platform/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx index d5da60a290..e7eccba0b6 100644 --- a/src/frontend/platform/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx +++ b/src/frontend/platform/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import KnowledgeSelect from "@/components/bs-comp/selectComponent/knowledge"; import ModelSelect from "@/pages/BuildPage/assistant/editAssistant/ModelSelect"; import CollectionNameComponent from "@/pages/BuildPage/skills/editSkill/CollectionNameComponent"; @@ -179,7 +180,7 @@ export default function ParameterComponent({ const [errorDuplicateKey, setErrorDuplicateKey] = useState(false); useEffect(() => { - let groupedObj: any = groupByFamily(myData, tooltipTitle!, left, flow.data?.nodes || []); + const groupedObj: any = groupByFamily(myData, tooltipTitle!, left, flow.data?.nodes || []); groupedEdge.current = groupedObj; if (groupedObj && groupedObj.length > 0) { @@ -478,7 +479,7 @@ export default function ParameterComponent({ reactFlowInstance.setNodes((nds) => nds.map((nd) => { if (nd.id === data.id) { - let newNode = cloneDeep(nd); + const newNode = cloneDeep(nd); newNode.data.node = nodeClass newNode.data.node.template[name].value = code; return newNode; diff --git a/src/frontend/platform/src/CustomNodes/GenericNode/components/parameterComponent/l2Index.tsx b/src/frontend/platform/src/CustomNodes/GenericNode/components/parameterComponent/l2Index.tsx index 90e8267212..22be8f5c6c 100644 --- a/src/frontend/platform/src/CustomNodes/GenericNode/components/parameterComponent/l2Index.tsx +++ b/src/frontend/platform/src/CustomNodes/GenericNode/components/parameterComponent/l2Index.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import CollectionNameComponent from "@/pages/BuildPage/skills/editSkill/CollectionNameComponent"; import { useContext, useState } from "react"; import CodeAreaComponent from "../../../../components/codeAreaComponent"; @@ -24,7 +25,7 @@ export default function L2ParameterComponent({ }) { const { reactFlowInstance } = useContext(typesContext); // let disabled = reactFlowInstance?.getEdges().some((e) => e.targetHandle === id) ?? false; - let disabled = false + const disabled = false const [errorDuplicateKey, setErrorDuplicateKey] = useState(false); diff --git a/src/frontend/platform/src/CustomNodes/GenericNode/index.tsx b/src/frontend/platform/src/CustomNodes/GenericNode/index.tsx index e876b6b199..2a868c8231 100644 --- a/src/frontend/platform/src/CustomNodes/GenericNode/index.tsx +++ b/src/frontend/platform/src/CustomNodes/GenericNode/index.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/bs-ui/tooltip"; import NodeToolbarComponent from "@/pages/BuildPage/skills/editSkill/nodeToolbarComponent"; import { Zap } from "lucide-react"; diff --git a/src/frontend/platform/src/alerts/alertDropDown/components/singleAlertComponent/index.tsx b/src/frontend/platform/src/alerts/alertDropDown/components/singleAlertComponent/index.tsx index 18475b0396..a688308d7c 100644 --- a/src/frontend/platform/src/alerts/alertDropDown/components/singleAlertComponent/index.tsx +++ b/src/frontend/platform/src/alerts/alertDropDown/components/singleAlertComponent/index.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Transition } from "@headlessui/react"; import { CheckCircle2, Info, X, XCircle } from "lucide-react"; import { useState } from "react"; diff --git a/src/frontend/platform/src/alerts/error/index.tsx b/src/frontend/platform/src/alerts/error/index.tsx index 3824c3e871..25c7bed597 100644 --- a/src/frontend/platform/src/alerts/error/index.tsx +++ b/src/frontend/platform/src/alerts/error/index.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Transition } from "@headlessui/react"; import { XCircle } from "lucide-react"; import { useEffect, useState } from "react"; diff --git a/src/frontend/platform/src/components/LinSight/ToolSelector.tsx b/src/frontend/platform/src/components/LinSight/ToolSelector.tsx index 825edd46c7..a47026193e 100644 --- a/src/frontend/platform/src/components/LinSight/ToolSelector.tsx +++ b/src/frontend/platform/src/components/LinSight/ToolSelector.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore // components/ToolSelector.tsx import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'; import { AlignJustify, Check, CpuIcon, Minus, Plus, Star, User, X } from 'lucide-react'; diff --git a/src/frontend/platform/src/components/LinSight/ToolSelectorContainer.tsx b/src/frontend/platform/src/components/LinSight/ToolSelectorContainer.tsx index e1a37f4676..00939b499b 100644 --- a/src/frontend/platform/src/components/LinSight/ToolSelectorContainer.tsx +++ b/src/frontend/platform/src/components/LinSight/ToolSelectorContainer.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { useMemo, useState } from 'react'; import ToolSelector from './ToolSelector'; diff --git a/src/frontend/platform/src/components/Pro/security/AssistantSetting.tsx b/src/frontend/platform/src/components/Pro/security/AssistantSetting.tsx index b3d12460b5..da41acd227 100644 --- a/src/frontend/platform/src/components/Pro/security/AssistantSetting.tsx +++ b/src/frontend/platform/src/components/Pro/security/AssistantSetting.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { SettingIcon } from "@/components/bs-icons"; import { AccordionContent, AccordionItem, AccordionTrigger } from "@/components/bs-ui/accordion"; import { Sheet, SheetContent, SheetTitle, SheetTrigger } from "@/components/bs-ui/sheet"; diff --git a/src/frontend/platform/src/components/Pro/security/FlowSetting.tsx b/src/frontend/platform/src/components/Pro/security/FlowSetting.tsx index 4d62a9da1e..61b0f55201 100644 --- a/src/frontend/platform/src/components/Pro/security/FlowSetting.tsx +++ b/src/frontend/platform/src/components/Pro/security/FlowSetting.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { SettingIcon } from "@/components/bs-icons"; import { Sheet, SheetContent, SheetTitle, SheetTrigger } from "@/components/bs-ui/sheet"; import { Switch } from "@/components/bs-ui/switch"; diff --git a/src/frontend/platform/src/components/Pro/security/FormSet.tsx b/src/frontend/platform/src/components/Pro/security/FormSet.tsx index bc50e52ff4..bbe6dcf0ef 100644 --- a/src/frontend/platform/src/components/Pro/security/FormSet.tsx +++ b/src/frontend/platform/src/components/Pro/security/FormSet.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { Button } from "@/components/bs-ui/button"; import { Checkbox } from "@/components/bs-ui/checkBox"; @@ -17,7 +18,7 @@ export default function FormSet({ data, onChange, onSave, onCancel }) { }, [data]) const handleCheckboxChange = (val, name) => { - let temp = form.wordsType + const temp = form.wordsType // setForm({ ...form, wordsType: [1] }) val ? setForm({ ...form, wordsType: [...temp, name] diff --git a/src/frontend/platform/src/components/RadialProgress/index.tsx b/src/frontend/platform/src/components/RadialProgress/index.tsx index f277a9c80b..d55270bc59 100644 --- a/src/frontend/platform/src/components/RadialProgress/index.tsx +++ b/src/frontend/platform/src/components/RadialProgress/index.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import { RadialProgressType } from "../../types/components"; export default function RadialProgressComponent({ diff --git a/src/frontend/platform/src/components/VariablesComponent/VarDialog.tsx b/src/frontend/platform/src/components/VariablesComponent/VarDialog.tsx index 56a2ff3ad3..26fa70a355 100644 --- a/src/frontend/platform/src/components/VariablesComponent/VarDialog.tsx +++ b/src/frontend/platform/src/components/VariablesComponent/VarDialog.tsx @@ -1,3 +1,4 @@ +// @ts-strict-ignore import cloneDeep from 'lodash-es/cloneDeep'; import { ArrowDownUp, Plus, X } from "lucide-react"; import { useContext, useState } from 'react'; @@ -116,7 +117,7 @@ export default function VarDialog({ data, onSave, onClose }) { handleChangeOptionValue(e.target.value, index)} />