{ "name": "codemore", "displayName": "CodeMore", "description": "The static analyzer your AI agent reads — finds production-blocking bugs in vibe-coded apps (CLI, GitHub Action, MCP server).", "version": "0.3.3", "license": "MIT", "publisher": "codemore", "engines": { "vscode": "^1.85.0", "node": ">=18" }, "categories": [ "Linters", "Programming Languages", "Other" ], "keywords": [ "code quality", "ai", "refactoring", "code analysis", "technical debt", "sast", "vibe-coding", "mcp", "agentic-fixer", "security" ], "icon": "resources/icon.png", "homepage": "https://codemore.tech", "repository": { "type": "git", "url": "git+https://github.com/abhinavteja123/codemore.git" }, "bugs": { "url": "https://github.com/abhinavteja123/codemore/issues" }, "files": [ "cli.js", "action.yml", "lib/**", "dist/**", "daemon/dist/**", "bin/**", "resources/**", "shared/report/schema.json", "scripts/format-pr-comment.js", "scripts/validate-rule-pr.js", "scripts/download-binaries.js", "README.md", "CONTRIBUTING-RULES.md" ], "activationEvents": [ "onStartupFinished" ], "main": "./dist/extension.js", "bin": { "codemore": "cli.js" }, "contributes": { "commands": [ { "command": "codemore.openDashboard", "title": "Open Code Quality Dashboard", "category": "CodeMore" }, { "command": "codemore.analyzeWorkspace", "title": "Analyze Workspace", "category": "CodeMore" }, { "command": "codemore.analyzeCurrentFile", "title": "Analyze Current File", "category": "CodeMore" }, { "command": "codemore.applySuggestion", "title": "Apply Suggestion", "category": "CodeMore" }, { "command": "codemore.restartDaemon", "title": "Restart Context Daemon", "category": "CodeMore" }, { "command": "codemore.showLogs", "title": "Show Daemon Logs", "category": "CodeMore" } ], "viewsContainers": { "activitybar": [ { "id": "codemore", "title": "CodeMore", "icon": "resources/activity-bar-icon.svg" } ] }, "views": { "codemore": [ { "type": "webview", "id": "codemore.dashboard", "name": "Code Quality Dashboard" } ] }, "menus": { "editor/context": [ { "command": "codemore.analyzeCurrentFile", "group": "codemore" } ], "commandPalette": [ { "command": "codemore.openDashboard" }, { "command": "codemore.analyzeWorkspace" }, { "command": "codemore.restartDaemon" } ] }, "keybindings": [ { "command": "codemore.openDashboard", "key": "ctrl+shift+q", "mac": "cmd+shift+q" }, { "command": "codemore.analyzeCurrentFile", "key": "ctrl+shift+a", "mac": "cmd+shift+a" } ], "configuration": { "title": "CodeMore", "properties": { "codemore.aiProvider": { "type": "string", "default": "openai", "enum": [ "openai", "anthropic", "gemini", "local" ], "enumDescriptions": [ "OpenAI GPT models", "Anthropic Claude models", "Google Gemini models", "Local LLM server" ], "description": "AI provider for code analysis" }, "codemore.apiKey": { "type": "string", "default": "", "description": "API key for the AI provider" }, "codemore.autoAnalyze": { "type": "boolean", "default": true, "description": "Automatically analyze files on save" }, "codemore.enableExperimental": { "type": "boolean", "default": false, "markdownDescription": "Include **experimental** rules in analysis. Experimental rules are new detections still being proven through the rule lifecycle (`experimental` → `stable`) and may over-report. Off by default so the extension reports exactly what `codemore scan` and the MCP server do; equivalent to `codemore scan --enable-experimental`." }, "codemore.analysisDelay": { "type": "number", "default": 2000, "description": "Delay in milliseconds before analyzing after file changes" }, "codemore.excludePatterns": { "type": "array", "default": [ "**/node_modules/**", "**/dist/**", "**/build/**", "**/.git/**" ], "description": "Glob patterns to exclude from analysis" }, "codemore.maxFileSizeKB": { "type": "number", "default": 500, "description": "Maximum file size in KB to analyze" }, "codemore.enableTelemetry": { "type": "boolean", "default": false, "description": "Enable anonymous usage telemetry" }, "codemore.analysisTools": { "type": "string", "default": "both", "enum": [ "both", "external", "internal" ], "enumDescriptions": [ "Use both external tools (Biome, Ruff, TFLint) and internal analyzers", "Use only external tools (Biome, Ruff, TFLint)", "Use only internal static analyzers" ], "description": "Select which analysis tools to use during code analysis" } } } }, "scripts": { "dev": "vite --host 0.0.0.0 --port 3000", "build": "vite build", "vscode:prepublish": "npm run package", "compile": "npm run compile:extension && npm run compile:daemon && npm run compile:webview", "compile:extension": "webpack --mode development", "compile:daemon": "webpack --mode development --config webpack.daemon.config.js", "compile:webview": "webpack --mode development --config webpack.webview.config.js", "watch": "concurrently \"npm run watch:extension\" \"npm run watch:daemon\" \"npm run watch:webview\"", "watch:extension": "webpack --mode development --watch", "watch:daemon": "webpack --mode development --watch --config webpack.daemon.config.js", "watch:webview": "webpack --mode development --watch --config webpack.webview.config.js", "package": "webpack --mode production --devtool hidden-source-map && webpack --mode production --config webpack.daemon.config.js && webpack --mode production --config webpack.webview.config.js", "download-binaries": "node scripts/download-binaries.js --current-platform", "download-binaries:all": "node scripts/download-binaries.js", "postinstall": "node scripts/download-binaries.js --skip-download", "lint": "eslint src daemon webview --ext ts,tsx", "lint:fix": "eslint src daemon webview --ext ts,tsx --fix", "test": "node ./out/test/runTest.js", "test:unit": "mocha --require ts-node/register 'test/**/*.test.ts' --ignore 'test/edh/**'", "test:coverage": "c8 --reporter=text --reporter=text-summary npm run test:unit", "test:mutation": "stryker run", "test:edh:compile": "tsc -p tsconfig.edh.json", "test:edh": "npm run compile:extension && npm run compile:daemon && npm run test:edh:compile && node ./out/test/edh/runTest.js", "pretest": "npm run compile", "cli": "node ./cli.js", "cli:scan": "node ./cli.js scan", "self-scan": "node ./cli.js scan . --fail-on BLOCKER --packs vibe-supabase", "validate-rules": "node scripts/validate-rule-pr.js", "scan:samples": "node scripts/scan-samples.js", "scan:samples:refresh": "node scripts/scan-samples.js --refresh", "build:publish": "tsc -p tsconfig.publish.json", "clean:publish": "node -e \"require('fs').rmSync('lib',{recursive:true,force:true})\"", "prepack": "npm run clean:publish && npm run build:publish", "vsce:package": "npm run download-binaries:all && node scripts/vsce-package.js package", "vsce:publish": "npm run download-binaries:all && node scripts/vsce-package.js publish" }, "devDependencies": { "@stryker-mutator/core": "^9.6.1", "@stryker-mutator/mocha-runner": "^9.6.1", "@supabase/supabase-js": "^2.110.0", "@tailwindcss/vite": "^4.3.2", "@types/diff": "^7.0.2", "@types/glob": "^8.1.0", "@types/mocha": "^10.0.6", "@types/node": "^20.10.0", "@types/pino": "^7.0.4", "@types/prompts": "^2.4.9", "@types/react": "^18.2.45", "@types/react-dom": "^18.2.18", "@types/uuid": "^10.0.0", "@types/vscode": "^1.85.0", "@typescript-eslint/eslint-plugin": "^6.15.0", "@typescript-eslint/parser": "^6.15.0", "@vitejs/plugin-react": "^6.0.3", "@vscode/codicons": "^0.0.44", "@vscode/test-electron": "^2.3.8", "@vscode/vsce": "^2.22.0", "ajv": "^8.20.0", "ajv-formats": "^3.0.1", "c8": "^11.0.0", "concurrently": "^8.2.2", "css-loader": "^6.8.1", "eslint": "^8.56.0", "glob": "^10.3.10", "minimatch": "^10.1.1", "mocha": "^10.2.0", "pino-pretty": "^13.1.3", "style-loader": "^3.3.3", "tailwindcss": "^4.3.2", "ts-loader": "^9.5.1", "ts-node": "^10.9.2", "vite": "^8.1.3", "webpack": "^5.89.0", "webpack-cli": "^5.1.4" }, "dependencies": { "@biomejs/biome": "^1.9.4", "@google/generative-ai": "^0.24.1", "@modelcontextprotocol/sdk": "^1.29.0", "@sentry/node": "^10.45.0", "chokidar": "^3.5.3", "codemore": "^0.3.2", "diff": "^5.1.0", "gsap": "^3.15.0", "ignore": "^7.0.5", "lenis": "^1.3.25", "lru-cache": "^11.2.7", "lucide-react": "^0.563.0", "openai": "^4.24.0", "pino": "^10.3.1", "prompts": "^2.4.2", "react": "^18.2.0", "react-dom": "^18.2.0", "tree-kill": "^1.2.2", "tree-sitter-python": "^0.25.0", "typescript": "^5.3.3", "uuid": "^9.0.1", "web-tree-sitter": "^0.26.9", "zod": "^3.25.76" }, "mcpName": "io.github.abhinavteja123/codemore" }