diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 61eb720b00..0000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,63 +0,0 @@ -const config = require('@lobehub/lint').eslint; - -config.root = true; -config.extends.push('plugin:@next/next/recommended-legacy'); - -config.rules['unicorn/no-negated-condition'] = 0; -config.rules['unicorn/prefer-type-error'] = 0; -config.rules['unicorn/prefer-logical-operator-over-ternary'] = 0; -config.rules['unicorn/no-null'] = 0; -config.rules['unicorn/no-typeof-undefined'] = 0; -config.rules['unicorn/explicit-length-check'] = 0; -config.rules['unicorn/prefer-code-point'] = 0; -config.rules['no-extra-boolean-cast'] = 0; -config.rules['unicorn/no-useless-undefined'] = 0; -config.rules['react/no-unknown-property'] = 0; -config.rules['unicorn/prefer-ternary'] = 0; -config.rules['unicorn/prefer-spread'] = 0; -config.rules['unicorn/catch-error-name'] = 0; -config.rules['unicorn/no-array-for-each'] = 0; -config.rules['unicorn/prefer-number-properties'] = 0; -config.rules['unicorn/prefer-query-selector'] = 0; -config.rules['unicorn/no-array-callback-reference'] = 0; -config.rules['unicorn/text-encoding-identifier-case'] = 0; -config.rules['@typescript-eslint/no-use-before-define'] = 0; -// FIXME: Linting error in src/app/[variants]/(main)/chat/features/Migration/DBReader.ts, the fundamental solution should be upgrading typescript-eslint -config.rules['@typescript-eslint/no-useless-constructor'] = 0; -config.rules['@next/next/no-img-element'] = 0; - -config.overrides = [ - { - extends: ['plugin:mdx/recommended'], - files: ['*.mdx'], - rules: { - '@typescript-eslint/no-unused-vars': 1, - 'micromark-extension-mdx-jsx': 0, - 'no-undef': 0, - 'react/jsx-no-undef': 0, - 'react/no-unescaped-entities': 0, - }, - settings: { - 'mdx/code-blocks': false, - }, - }, - { - files: ['src/store/image/**/*', 'src/types/generation/**/*'], - rules: { - '@typescript-eslint/no-empty-interface': 0, - 'sort-keys-fix/sort-keys-fix': 0, - 'typescript-sort-keys/interface': 0, - 'typescript-sort-keys/string-enum': 0, - }, - }, - // CLI scripts legitimately use process.exit() and async IIFE patterns - { - files: ['scripts/**/*'], - rules: { - 'unicorn/no-process-exit': 0, - 'unicorn/prefer-top-level-await': 0, - }, - }, -]; - -module.exports = config; diff --git a/.github/workflows/auto-tag-release.yml b/.github/workflows/auto-tag-release.yml index d08f44859c..a93c9c069c 100644 --- a/.github/workflows/auto-tag-release.yml +++ b/.github/workflows/auto-tag-release.yml @@ -41,19 +41,28 @@ jobs: echo "⏭️ Not a release PR" fi - - name: Detect hotfix PR (branch prefix) + - name: Detect hotfix PR (branch prefix + commit prefix gate) id: hotfix if: steps.release.outputs.should_tag != 'true' run: | HEAD_REF="${{ github.event.pull_request.head.ref }}" + PR_TITLE="${{ github.event.pull_request.title }}" echo "Head ref: $HEAD_REF" + echo "PR Title: $PR_TITLE" - if [[ "$HEAD_REF" == hotfix/* ]]; then - echo "should_tag=true" >> $GITHUB_OUTPUT - echo "✅ Detected hotfix PR" - else + if [[ "$HEAD_REF" != hotfix/* ]]; then echo "should_tag=false" >> $GITHUB_OUTPUT echo "⏭️ Not a hotfix PR" + exit 0 + fi + + # Gate: PR title must match style/feat/fix/refactor prefix (with optional gitmoji) + if echo "$PR_TITLE" | grep -qiE '^(💄\s*)?style(\(.+\))?:|^(✨\s*)?feat(\(.+\))?:|^(🐛\s*)?fix(\(.+\))?:|^(♻️\s*)?refactor(\(.+\))?:'; then + echo "should_tag=true" >> $GITHUB_OUTPUT + echo "✅ Detected hotfix PR with valid commit prefix" + else + echo "should_tag=false" >> $GITHUB_OUTPUT + echo "⏭️ Hotfix PR but title does not match style/feat/fix/refactor prefix, skipping tag" fi - name: Prepare main branch diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 81198696c3..da55ff1661 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -77,7 +77,7 @@ "electron-store": "^8.2.0", "electron-vite": "^4.0.1", "es-toolkit": "^1.43.0", - "eslint": "^9.18.0", + "eslint": "10.0.0", "execa": "^9.6.1", "fast-glob": "^3.3.3", "fix-path": "^5.0.0", @@ -111,4 +111,4 @@ "node-mac-permissions" ] } -} \ No newline at end of file +} diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 27ea966355..d1b6a10d20 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -1,11 +1,66 @@ { + "src/app/(backend)/api/agent/route.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/app/(backend)/api/agent/run/route.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/app/(backend)/api/dev/memory-user-memory/benchmark-locomo/route.ts": { + "no-console": { + "count": 6 + } + }, + "src/app/(backend)/api/webhooks/logto/route.ts": { + "no-console": { + "count": 1 + } + }, + "src/app/(backend)/trpc/async/[trpc]/route.ts": { + "no-console": { + "count": 1 + } + }, + "src/app/(backend)/trpc/mobile/[trpc]/route.ts": { + "no-console": { + "count": 1 + } + }, + "src/app/(backend)/webapi/chat/[provider]/route.ts": { + "no-console": { + "count": 1 + } + }, + "src/app/[variants]/(auth)/market-auth-callback/page.tsx": { + "no-console": { + "count": 2 + } + }, "src/app/[variants]/(desktop)/desktop-onboarding/features/WelcomeStep.tsx": { "@eslint-react/no-nested-component-definitions": { "count": 1 } }, - "src/app/[variants]/(main)/agent/profile/features/Header/AgentPublishButton/PublishButton.tsx": { - "import-x/consistent-type-specifier-style": { + "src/app/[variants]/(main)/agent/features/Conversation/AgentWelcome/ToolAuthAlert.tsx": { + "no-console": { + "count": 1 + } + }, + "src/app/[variants]/(main)/agent/profile/features/Header/AgentForkTag.tsx": { + "no-console": { + "count": 1 + } + }, + "src/app/[variants]/(main)/agent/profile/features/Header/AgentPublishButton/useMarketPublish.ts": { + "object-shorthand": { + "count": 3 + } + }, + "src/app/[variants]/(main)/community/(detail)/agent/features/AgentForkTag.tsx": { + "no-console": { "count": 1 } }, @@ -19,14 +74,64 @@ "count": 1 } }, + "src/app/[variants]/(main)/community/(detail)/agent/features/Sidebar/ActionButton/index.tsx": { + "object-shorthand": { + "count": 2 + } + }, + "src/app/[variants]/(main)/community/(detail)/group_agent/features/Sidebar/ActionButton/index.tsx": { + "object-shorthand": { + "count": 2 + } + }, + "src/app/[variants]/(main)/community/(detail)/user/features/UserAgentCard.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/app/[variants]/(main)/community/(detail)/user/features/UserAgentList.tsx": { + "no-console": { + "count": 1 + } + }, + "src/app/[variants]/(main)/community/(detail)/user/features/UserFavoriteAgents.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/app/[variants]/(main)/community/(detail)/user/features/UserFavoritePlugins.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/app/[variants]/(main)/community/(detail)/user/features/UserGroupCard.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/app/[variants]/(main)/community/(list)/(home)/loading.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/app/[variants]/(main)/community/(list)/mcp/features/List/Item.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/app/[variants]/(main)/community/(list)/provider/features/List/Item.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, "src/app/[variants]/(main)/community/components/VirtuosoGridList/index.tsx": { "@eslint-react/no-nested-component-definitions": { "count": 2 } }, - "src/app/[variants]/(main)/home/_layout/Body/Agent/Modals/ConfigGroupModal/GroupItem.tsx": { - "import-x/consistent-type-specifier-style": { - "count": 1 + "src/app/[variants]/(main)/group/profile/features/Header/AgentPublishButton/useMarketPublish.ts": { + "object-shorthand": { + "count": 4 } }, "src/app/[variants]/(main)/home/_layout/Body/Agent/Modals/ConfigGroupModal/index.tsx": { @@ -42,21 +147,51 @@ "count": 1 } }, + "src/app/[variants]/(main)/home/features/components/GroupSkeleton.tsx": { + "object-shorthand": { + "count": 1 + } + }, "src/app/[variants]/(main)/home/features/index.tsx": { "@eslint-react/no-nested-component-definitions": { "count": 1 } }, + "src/app/[variants]/(main)/image/_layout/ConfigPanel/utils/__tests__/imageValidation.test.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/app/[variants]/(main)/image/features/GenerationFeed/index.tsx": { + "object-shorthand": { + "count": 1 + } + }, "src/app/[variants]/(main)/memory/features/GridView/index.tsx": { "@eslint-react/no-nested-component-definitions": { "count": 1 } }, + "src/app/[variants]/(main)/memory/features/MemoryAnalysis/index.tsx": { + "no-console": { + "count": 1 + } + }, "src/app/[variants]/(main)/resource/features/hooks/useResourceManagerUrlSync.ts": { "react-hooks/exhaustive-deps": { "count": 1 } }, + "src/app/[variants]/(main)/resource/library/_layout/Header/LibraryHead.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/app/[variants]/(main)/settings/provider/ProviderMenu/List.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, "src/app/[variants]/(main)/settings/provider/detail/ollama/CheckError.tsx": { "regexp/no-dupe-characters-character-class": { "count": 1 @@ -65,6 +200,31 @@ "count": 1 } }, + "src/app/[variants]/(main)/settings/provider/features/ProviderConfig/index.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/app/[variants]/(main)/settings/skill/features/KlavisSkillItem.tsx": { + "no-console": { + "count": 2 + } + }, + "src/app/[variants]/(main)/settings/skill/features/LobehubSkillItem.tsx": { + "no-console": { + "count": 1 + } + }, + "src/app/[variants]/(main)/settings/stats/features/usage/UsageCards/ActiveModels/ModelTable.tsx": { + "object-shorthand": { + "count": 1 + } + }, + "src/app/[variants]/onboarding/components/KlavisServerList/hooks/useKlavisOAuth.ts": { + "no-console": { + "count": 1 + } + }, "src/app/[variants]/onboarding/features/ResponseLanguageStep.tsx": { "@eslint-react/no-nested-component-definitions": { "count": 1 @@ -80,6 +240,11 @@ "count": 3 } }, + "src/components/ChatGroupWizard/ChatGroupWizard.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, "src/components/ChatGroupWizard/index.ts": { "sort-keys-fix/sort-keys-fix": { "count": 1 @@ -88,16 +253,41 @@ "count": 1 } }, + "src/components/DebugNode.tsx": { + "no-console": { + "count": 1 + } + }, + "src/components/FeedbackModal/index.tsx": { + "no-console": { + "count": 1 + } + }, "src/components/Loading/CircleLoading/index.tsx": { "unicorn/no-anonymous-default-export": { "count": 1 } }, + "src/components/MCPStdioCommandInput/index.tsx": { + "object-shorthand": { + "count": 1 + } + }, + "src/components/MaxTokenSlider.tsx": { + "object-shorthand": { + "count": 1 + } + }, "src/components/ModelSelect/index.tsx": { "no-shadow-restricted-names": { "count": 1 } }, + "src/components/mdx/index.tsx": { + "object-shorthand": { + "count": 1 + } + }, "src/config/featureFlags/schema.ts": { "sort-keys-fix/sort-keys-fix": { "count": 1 @@ -150,6 +340,26 @@ "count": 1 } }, + "src/features/ChatInput/ActionBar/Model/ReasoningTokenSlider.tsx": { + "object-shorthand": { + "count": 1 + } + }, + "src/features/ChatInput/ActionBar/Tools/KlavisServerItem.tsx": { + "no-console": { + "count": 2 + } + }, + "src/features/ChatInput/ActionBar/Tools/LobehubSkillServerItem.tsx": { + "no-console": { + "count": 3 + } + }, + "src/features/CommandMenu/SearchResults.tsx": { + "no-console": { + "count": 1 + } + }, "src/features/Conversation/Error/OllamaBizError/index.tsx": { "regexp/no-dupe-characters-character-class": { "count": 1 @@ -158,8 +368,18 @@ "count": 1 } }, - "src/features/Conversation/Messages/CompressedGroup/index.tsx": { - "import-x/consistent-type-specifier-style": { + "src/features/Conversation/Messages/Assistant/Actions/index.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/features/Conversation/Messages/AssistantGroup/Actions/index.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/features/Conversation/Messages/Supervisor/Actions/index.tsx": { + "simple-import-sort/imports": { "count": 1 } }, @@ -168,6 +388,21 @@ "count": 1 } }, + "src/features/Conversation/components/Reaction/ReactionPicker.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/features/Conversation/store/slices/message/action/index.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/features/Conversation/store/slices/message/action/sendMessage.ts": { + "no-console": { + "count": 1 + } + }, "src/features/Conversation/types/hooks.ts": { "typescript-sort-keys/interface": { "count": 1 @@ -183,11 +418,41 @@ "count": 1 } }, + "src/features/LibraryModal/CreateNew/CreateForm.tsx": { + "unused-imports/no-unused-imports": { + "count": 1 + } + }, + "src/features/LibraryModal/CreateNew/index.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/features/MCP/Scores.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/features/MCPPluginDetail/Header.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, "src/features/NavPanel/SideBarHeaderLayout.tsx": { "@eslint-react/dom/no-flush-sync": { "count": 1 } }, + "src/features/PluginDevModal/MCPManifestForm/QuickImportSection.tsx": { + "object-shorthand": { + "count": 2 + } + }, + "src/features/PluginDevModal/MCPManifestForm/utils.ts": { + "object-shorthand": { + "count": 1 + } + }, "src/features/PluginsUI/Render/utils/iframeOnReady.test.ts": { "unicorn/no-invalid-remove-event-listener": { "count": 1 @@ -204,18 +469,44 @@ } }, "src/features/ProtocolUrlHandler/InstallPlugin/CustomPluginInstallModal.tsx": { + "object-shorthand": { + "count": 1 + }, "prefer-const": { "count": 1 } }, + "src/features/ResourceManager/components/Explorer/Header/SearchInput.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, "src/features/ResourceManager/components/Explorer/ListView/index.tsx": { "@eslint-react/no-nested-component-definitions": { "count": 1 } }, + "src/features/ResourceManager/components/Explorer/MasonryView/MasonryItem/DefaultFileItem.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/features/ResourceManager/components/Explorer/MasonryView/MasonryItem/ImageFileItem.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, + "src/features/ResourceManager/components/Explorer/MasonryView/MasonryItem/MarkdownFileItem.tsx": { + "simple-import-sort/imports": { + "count": 1 + } + }, "src/features/ResourceManager/components/Explorer/MasonryView/MasonryItem/NoteFileItem.tsx": { "regexp/no-super-linear-backtracking": { "count": 1 + }, + "simple-import-sort/imports": { + "count": 1 } }, "src/features/ShareModal/ShareJSON/generateFullExport.ts": { @@ -228,7 +519,25 @@ "count": 1 } }, + "src/helpers/toolEngineering/index.ts": { + "object-shorthand": { + "count": 2 + } + }, + "src/hooks/useAgentOwnershipCheck.ts": { + "no-console": { + "count": 6 + } + }, + "src/hooks/useHotkeys/useHotkeyById.ts": { + "no-console": { + "count": 1 + } + }, "src/layout/AuthProvider/MarketAuth/oidc.ts": { + "no-console": { + "count": 17 + }, "prefer-const": { "count": 1 } @@ -241,6 +550,19 @@ "count": 1 } }, + "src/libs/better-auth/sso/index.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/libs/next/proxy/define-config.ts": { + "no-console": { + "count": 1 + }, + "object-shorthand": { + "count": 2 + } + }, "src/libs/observability/traceparent.test.ts": { "import/first": { "count": 1 @@ -252,6 +574,24 @@ }, "@typescript-eslint/no-unsafe-function-type": { "count": 1 + }, + "object-shorthand": { + "count": 1 + } + }, + "src/libs/oidc-provider/jwt.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/libs/swr/localStorageProvider.ts": { + "no-console": { + "count": 1 + } + }, + "src/libs/traces/index.ts": { + "no-console": { + "count": 1 } }, "src/libs/trpc/middleware/openTelemetry.test.ts": { @@ -267,6 +607,21 @@ "count": 1 } }, + "src/server/manifest.ts": { + "object-shorthand": { + "count": 3 + } + }, + "src/server/modules/AgentRuntime/RuntimeExecutors.ts": { + "object-shorthand": { + "count": 4 + } + }, + "src/server/modules/KeyVaultsEncrypt/index.ts": { + "object-shorthand": { + "count": 2 + } + }, "src/server/modules/Mecha/ContextEngineering/index.ts": { "sort-keys-fix/sort-keys-fix": { "count": 1 @@ -277,6 +632,21 @@ "count": 1 } }, + "src/server/modules/ModelRuntime/trace.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/modules/S3/index.ts": { + "object-shorthand": { + "count": 3 + } + }, + "src/server/routers/async/image.ts": { + "object-shorthand": { + "count": 1 + } + }, "src/server/routers/lambda/__tests__/integration/aiAgent.createClientGroupAgentTaskThread.integration.test.ts": { "@typescript-eslint/no-non-null-asserted-optional-chain": { "count": 2 @@ -287,6 +657,21 @@ "count": 2 } }, + "src/server/routers/lambda/__tests__/integration/message.integration.test.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/routers/lambda/agent.ts": { + "no-console": { + "count": 1 + } + }, + "src/server/routers/lambda/aiAgent.ts": { + "no-console": { + "count": 1 + } + }, "src/server/routers/lambda/aiChat.ts": { "prefer-const": { "count": 1 @@ -302,11 +687,21 @@ "count": 2 } }, + "src/server/routers/lambda/knowledge.ts": { + "no-console": { + "count": 1 + } + }, "src/server/routers/lambda/ragEval.ts": { "sort-keys-fix/sort-keys-fix": { "count": 1 } }, + "src/server/routers/lambda/sessionGroup.ts": { + "no-console": { + "count": 1 + } + }, "src/server/routers/lambda/user.ts": { "sort-keys-fix/sort-keys-fix": { "count": 2 @@ -333,6 +728,11 @@ "count": 1 } }, + "src/server/services/chunk/index.ts": { + "object-shorthand": { + "count": 1 + } + }, "src/server/services/comfyui/config/fluxModelRegistry.ts": { "sort-keys-fix/sort-keys-fix": { "count": 2 @@ -426,21 +826,121 @@ "count": 2 } }, + "src/server/services/mcp/index.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/services/memory/userMemory/extract.ts": { + "object-shorthand": { + "count": 2 + } + }, + "src/server/services/message/__tests__/index.integration.test.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/services/oidc/index.ts": { + "object-shorthand": { + "count": 2 + } + }, + "src/server/services/search/impls/anspire/index.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/services/search/impls/bocha/index.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/services/search/impls/brave/index.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/services/search/impls/exa/index.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/services/search/impls/firecrawl/index.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/services/search/impls/google/index.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/services/search/impls/jina/index.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/services/search/impls/kagi/index.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/services/search/impls/search1api/index.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/services/search/impls/tavily/index.ts": { + "object-shorthand": { + "count": 1 + } + }, + "src/server/services/search/index.ts": { + "object-shorthand": { + "count": 5 + } + }, + "src/server/services/usage/index.test.ts": { + "object-shorthand": { + "count": 11 + } + }, "src/server/services/webhookUser/index.test.ts": { "unicorn/no-thenable": { "count": 7 } }, + "src/server/services/webhookUser/index.ts": { + "no-console": { + "count": 2 + } + }, "src/services/_url.ts": { "sort-keys-fix/sort-keys-fix": { "count": 1 } }, + "src/services/chat/index.ts": { + "object-shorthand": { + "count": 1 + } + }, "src/services/chat/mecha/contextEngineering.ts": { "sort-keys-fix/sort-keys-fix": { "count": 1 } }, + "src/services/models.ts": { + "no-console": { + "count": 1 + } + }, + "src/services/tableViewer/client.ts": { + "no-console": { + "count": 2 + } + }, "src/store/agent/slices/cron/action.ts": { "no-unused-private-class-members": { "count": 1 @@ -461,7 +961,15 @@ "count": 1 } }, + "src/store/chat/agents/__tests__/createAgentExecutors/call-tool.test.ts": { + "object-shorthand": { + "count": 1 + } + }, "src/store/chat/agents/createAgentExecutors.ts": { + "object-shorthand": { + "count": 1 + }, "prefer-const": { "count": 1 }, @@ -486,13 +994,15 @@ } }, "src/store/chat/slices/aiChat/actions/__tests__/StreamingHandler.test.ts": { - "import-x/consistent-type-specifier-style": { - "count": 1 - }, "unused-imports/no-unused-imports": { "count": 1 } }, + "src/store/chat/slices/aiChat/actions/__tests__/streamingExecutor.test.ts": { + "object-shorthand": { + "count": 8 + } + }, "src/store/chat/slices/aiChat/actions/conversationControl.ts": { "no-unused-private-class-members": { "count": 1 @@ -538,6 +1048,11 @@ "count": 1 } }, + "src/store/chat/slices/message/supervisor.ts": { + "no-console": { + "count": 5 + } + }, "src/store/chat/slices/operation/types.ts": { "sort-keys-fix/sort-keys-fix": { "count": 1 @@ -546,6 +1061,11 @@ "count": 1 } }, + "src/store/chat/slices/plugin/action.test.ts": { + "object-shorthand": { + "count": 3 + } + }, "src/store/chat/slices/plugin/actions/internals.ts": { "no-unused-private-class-members": { "count": 2 @@ -680,11 +1200,21 @@ "count": 1 } }, + "src/store/file/slices/chat/action.ts": { + "no-console": { + "count": 1 + } + }, "src/store/file/slices/chunk/action.ts": { "no-unused-private-class-members": { "count": 1 } }, + "src/store/file/slices/document/action.ts": { + "object-shorthand": { + "count": 1 + } + }, "src/store/file/slices/tts/action.ts": { "no-unused-private-class-members": { "count": 1 @@ -693,6 +1223,9 @@ "src/store/file/slices/upload/action.ts": { "no-unused-private-class-members": { "count": 2 + }, + "object-shorthand": { + "count": 1 } }, "src/store/global/actions/workspacePane.ts": { @@ -710,6 +1243,19 @@ "count": 1 } }, + "src/store/home/slices/homeInput/action.ts": { + "no-console": { + "count": 1 + } + }, + "src/store/image/slices/generationConfig/action.ts": { + "no-useless-rename": { + "count": 4 + }, + "object-shorthand": { + "count": 1 + } + }, "src/store/image/slices/generationConfig/initialState.ts": { "sort-keys-fix/sort-keys-fix": { "count": 1 @@ -728,12 +1274,25 @@ "count": 1 } }, + "src/store/page/slices/crud/action.ts": { + "object-shorthand": { + "count": 1 + } + }, "src/store/serverConfig/action.ts": { "no-unused-private-class-members": { "count": 1 } }, + "src/store/session/slices/homeInput/action.ts": { + "no-console": { + "count": 1 + } + }, "src/store/session/slices/session/action.ts": { + "object-shorthand": { + "count": 1 + }, "typescript-sort-keys/interface": { "count": 1 } @@ -746,11 +1305,19 @@ "count": 1 } }, - "src/store/tool/slices/builtin/executors/index.ts": { - "import-x/consistent-type-specifier-style": { + "src/store/tool/slices/klavisStore/action.ts": { + "no-console": { "count": 1 } }, + "src/store/tool/slices/mcpStore/action.ts": { + "no-console": { + "count": 1 + }, + "object-shorthand": { + "count": 3 + } + }, "src/store/tool/slices/oldStore/initialState.ts": { "typescript-sort-keys/string-enum": { "count": 1 diff --git a/package.json b/package.json index 0e33034300..6ad2d68e86 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "lint:style": "stylelint \"{src,tests}/**/*.{js,jsx,ts,tsx}\" --fix", "lint:ts": "bash scripts/lint-ts.sh", "lint:ts:prune": "eslint \"{src,tests,packages}/**/*.{js,jsx,ts,tsx}\" --prune-suppressions --concurrency=auto", - "lint:ts:suppress": "eslint \"{src,tests}/**/*.{js,jsx,ts,tsx}\" --suppress-all --fix --concurrency=auto", + "lint:ts:suppress": "eslint \"{src,tests}/**/*.{js,jsx,ts,tsx}\" --suppress-all --concurrency=auto", "lint:unused": "knip --include files,exports,types,enumMembers,duplicates", "prepare": "husky", "prettier": "prettier -c --write \"**/**\"", @@ -144,6 +144,9 @@ "stylelint --fix", "eslint --fix", "prettier --parser=typescript --write" + ], + "*.{yml,yaml}": [ + "eslint --fix" ] }, "overrides": { @@ -380,7 +383,7 @@ "@inquirer/prompts": "^8.2.0", "@lobechat/types": "workspace:*", "@lobehub/i18n-cli": "^1.26.0", - "@lobehub/lint": "2.0.2", + "@lobehub/lint": "2.1.3", "@lobehub/market-types": "^1.12.3", "@lobehub/seo-cli": "^1.7.0", "@next/bundle-analyzer": "^16.1.5", @@ -428,7 +431,7 @@ "dpdm-fast": "^1.0.14", "drizzle-dbml-generator": "^0.10.0", "drizzle-kit": "^0.31.8", - "eslint": "^9.18.0", + "eslint": "10.0.0", "eslint-plugin-mdx": "^3.6.2", "fake-indexeddb": "^6.2.5", "fs-extra": "^11.3.3",