diff --git a/eslint.config.js b/eslint.config.js index e26608f07..83c597cc2 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -145,6 +145,7 @@ export default tseslint.config( }, ], 'no-unsafe-finally': 'error', + 'no-console': 'error', 'no-unused-expressions': 'off', // Disable base rule '@typescript-eslint/no-unused-expressions': [ // Enable TS version @@ -216,6 +217,28 @@ export default tseslint.config( 'no-undef': 'off', }, }, + // ==================== no-console allowlist ==================== + // The following files/packages are allowed to use console.* + + // VS Code IDE companion - out of scope for no-console rule + { + files: ['packages/vscode-ide-companion/**/*.ts', 'packages/vscode-ide-companion/**/*.tsx', 'packages/vscode-ide-companion/**/*.js'], + rules: { 'no-console': 'off' }, + }, + // WebUI package - UI component library with Storybook + { + files: ['packages/webui/**/*.ts', 'packages/webui/**/*.tsx', 'packages/webui/**/*.js'], + rules: { 'no-console': 'off' }, + }, + // Specific CLI files that intentionally wrap console usage + { + files: [ + 'packages/cli/src/acp-integration/acpAgent.ts', // console infrastructure for ACP mode + 'packages/cli/src/utils/stdioHelpers.ts', // wraps console.clear() + ], + rules: { 'no-console': 'off' }, + }, + // Specific esbuild configs not covered by scripts pattern { files: ['packages/vscode-ide-companion/esbuild.js'], languageOptions: { @@ -228,36 +251,7 @@ export default tseslint.config( rules: { 'no-restricted-syntax': 'off', '@typescript-eslint/no-require-imports': 'off', - }, - }, - // extra settings for scripts that we run directly with node - { - files: ['packages/vscode-ide-companion/scripts/**/*.js'], - languageOptions: { - globals: { - ...globals.node, - process: 'readonly', - console: 'readonly', - }, - }, - rules: { - 'no-restricted-syntax': 'off', - '@typescript-eslint/no-require-imports': 'off', - }, - }, - // extra settings for core package scripts - { - files: ['packages/core/scripts/**/*.js'], - languageOptions: { - globals: { - ...globals.node, - process: 'readonly', - console: 'readonly', - }, - }, - rules: { - 'no-restricted-syntax': 'off', - '@typescript-eslint/no-require-imports': 'off', + 'no-console': 'off', }, }, // Prettier config must be last @@ -273,6 +267,7 @@ export default tseslint.config( }, }, rules: { + 'no-console': 'off', // Allow console in integration tests '@typescript-eslint/no-unused-vars': [ 'error', {