All notable changes to this project will be documented in this file.
-
Improved Model Name Resolution: Enhanced model name handling across providers to better handle experimental and latest model versions:
- Automatically resolves
-exp-*
suffixes to find stable model versions - Resolves
-latest
suffixes to the most recent compatible model - For ModelBox and OpenRouter: automatically finds models across providers without requiring provider prefixes (e.g.
gpt-4o
will findopenai/gpt-4o
) - Provides helpful suggestions when models aren't found, showing similar available models
- Automatically resolves
-
Google Vertex AI Authentication: Added support for Google Vertex AI authentication using JSON key files or Application Default Credentials (ADC). This update maintains backward compatibility, continuing to support the direct API key string method, while adding additional authentication options. To use this feature, set the
GEMINI_API_KEY
environment variable to the path of your JSON key file or toadc
to use Application Default Credentials. This enables access to gemini models such asgemini-2.0-flash
via the Vertex AI. This feature introduces a new dependency:google-auth-library
.- Example: Using Service Account JSON Key
Set
GEMINI_API_KEY
to the path of your service account JSON key file:GEMINI_API_KEY="./path/to/service-account.json"
- Example: Using Application Default Credentials (ADC)
First, authenticate locally using gcloud:
Then set
gcloud auth application-default login
GEMINI_API_KEY
toadc
to use Application Default Credentials:GEMINI_API_KEY="adc"
- Example: Using Service Account JSON Key
Set
- Improved ModelBox Provider: Enhanced the ModelBox provider with improved model name handling. If a requested model is not found, cursor-tools now provides helpful suggestions for similar models. Error messages have also been clarified to better guide users on the requirement for provider prefixes when specifying ModelBox models.
- Example: Improved Error Message
If you use an invalid model with ModelBox, you will now receive suggestions:
Error: Model 'invalid-model' not found in ModelBox. You requested: invalid-model Similar available models: - openai/gpt-4o - anthropic/claude-3-5-sonnet Use --model with one of the above models. Note: ModelBox requires provider prefixes (e.g., 'openai/gpt-4' instead of just 'gpt-4').
- Example: Improved Error Message
If you use an invalid model with ModelBox, you will now receive suggestions:
- Added support for MCP server overrides in the marketplace
- Implemented hardcoded overrides in
MCP_OVERRIDES
map - Added override for google-calendar-mcp to use eastlondoner fork
- Overrides can specify custom
githubUrl
,command
, andargs
- Preserves environment variables when using overrides
- Type-safe implementation ensures overrides match the MCPServer interface
- Overrides take precedence over marketplace data and automatic GitHub repository checks
- Logs when an override is applied using console.log for transparency
- Added support for user-configurable overrides in
cursor-tools.config.json
- Users can define custom overrides in the
mcp.overrides
section - Config overrides take precedence over hardcoded overrides
- Warns when a config override replaces a hardcoded override
- Users can define custom overrides in the
- Implemented hardcoded overrides in
- Updated all references to Claude 3.5 Sonnet models to Claude 3.7 Sonnet models throughout the codebase
- Updated model references in configuration files, documentation, and source code
- Updated default model settings for Anthropic provider
- Updated error messages and model suggestions
- Used
claude-3-7-sonnet
for most use cases andclaude-3-7-sonnet-thinking
for MCP client
- Updated @browserbasehq/stagehand dependency from 1.13.0 to 1.13.1
- cursor-tools now only recommends global installation
- Updated install command to check for and warn about cursor-tools dependencies in package.json files
- Checks both dependencies and devDependencies in package.json
- Provides clear instructions for removing local installations using npm, pnpm, or yarn
- This is in response to multiple issues caused by local installation and execution under different js runtimes
- Added validation to require --tag alpha or --tag latest when running release command
- Added ModelBox provider for access to a wider range of models through an OpenAI-compatible API
- Added OpenRouter provider to enable access to models from various providers including Perplexity
- New ClickUp integration command for task management
- Added ClickUp authentication flow with API token request during installation
- Implemented ClickUp command with task management capabilities
- Added ClickUp command instructions to template
- Added instructions for Chrome remote debugging setup in cursor rules
- Improved browser command state management when using
--connect-to
:- Reuses existing browser tabs for subsequent commands in a session, preserving page state
- Introduced
reload-current
as a special URL value to refresh the current page without losing the connected session
- Browser commands (
open
,act
,observe
,extract
) now have--console
and--network
options enabled by default. Use--no-console
and--no-network
to disable them. - Improved page reuse in browser commands when using
--connect-to
: now reuses existing tabs instead of creating new ones for better state preservation - Improved error handling and type safety in cursor rules management
- Enhanced directory creation order in installation process
- Added user choice during installation for cursor rules location (legacy
.cursorrules
or new.cursor/rules/cursor-tools.mdc
) - Added
USE_LEGACY_CURSORRULES
environment variable to control cursor rules file location - Improved output handling across all commands:
- Centralized output handling in main CLI
- Commands now yield output consistently
- Better error handling for file writes
- Added timeout protection for stdout writes
- More reliable output flushing
- Improved security by not logging API keys in stagehand config
- Fixed debug logging in all provider commands to properly pass through the debug flag
- Fixed
ask
command to pass debug flag to provider - Fixed
web
command to properly handle debug flag - Fixed
doc
command to include debug flag in options - Fixed
plan
command to pass debug flag to both file and thinking providers - Standardized debug logging format across all providers
- Debug logs now show full request and response details when enabled
- Fixed
- Changed default thinking provider for plan command to OpenAI with o3-mini model for significantly faster plan generation, while maintaining plan quality
- New
ask
command for direct model queries- Requires both provider and model parameters
- Allows querying any model from any provider directly
- Simple and focused command for direct questions
- Support for new Cursor IDE project rules structure
- New installations now use
.cursor/rules/cursor-tools.mdc
by default - Maintain compatibility with legacy
.cursorrules
file viaUSE_LEGACY_CURSORRULES=true
- Interactive choice during installation
- When both exist, use path based on
USE_LEGACY_CURSORRULES
environment variable - Updated documentation to reflect new path structure
- New installations now use
- Added support for the
gpt-4o
model in browser commands (act
,extract
,observe
)- The model can be selected using the
--model=gpt-4o
command-line option - The default model can be configured in
cursor-tools.config.json
- If no model is specified, a default model is used based on the configured provider (OpenAI or Anthropic)
- The model can be selected using the
- Internal: Bundled Stagehand script directly into the codebase to prevent dependency issues
- Build: Added stagehand script verification to the release process
- Enhanced
plan
command with dual-provider architecture:- Separate providers for file identification and plan generation
fileProvider
handles repository file analysisthinkingProvider
generates implementation plans- New command options:
--fileProvider
: Provider for file identification (gemini, openai, or openrouter)--thinkingProvider
: Provider for plan generation (gemini, openai, or openrouter)--fileModel
: Model to use for file identification--thinkingModel
: Model to use for plan generation--fileMaxTokens
: Maximum tokens for file identification--thinkingMaxTokens
: Maximum tokens for plan generation
- Brand new provider system with enhanced error handling and configuration:
- New provider interfaces for specialized tasks
- Shared implementations via provider mixins
- Better error messages and debugging support
- Configurable system prompts for different tasks
- Added
--quiet
flag to suppress stdout output while still saving to file with--save-to
- Useful for scripting and automated documentation generation
- All commands now support quiet mode
- Error messages are still displayed even in quiet mode
- Fixed browser commands to respect system color scheme when using
--connect-to
by not forcing a specific color scheme
- Fixed browser commands to not set viewport size in Stagehand when using
--connect-to
- Fixed browser commands to not set viewport size when using
--connect-to
without an explicit--viewport
option
- Browser commands (
open
,act
,observe
,extract
) now have--console
and--network
options enabled by default. Use--no-console
and--no-network
to disable them.
- Fixed browser commands to always reuse existing tabs when using
--connect-to
instead of creating new ones
- Browser commands now preserve viewport size when using
--connect-to
unless--viewport
is explicitly provided - Added validation to prevent using
--video
with--connect-to
as video recording is not supported when connecting to existing Chrome instances
- Added
reload-current
as a special URL value for browser commands when using--connect-to
. This allows refreshing the current page while maintaining the connection, which is particularly useful in development workflows.
- Fixed console logging in browser act command by correcting parameter order in outputMessages call
- Browser commands now support
--url=current
to skip navigation and use the current page - Browser commands now automatically skip navigation if already on the correct URL
- Improved page reuse when connecting to existing Chrome instance
- New
browser
command for AI-powered web automation and debugging, leveraging Stagehand AI for natural language interactionact <instruction> --url <url> [options]
: Execute actions on a webpage using natural language instructions<instruction>
: Natural language instruction describing the action (e.g., "Click Login", "Type 'hello' in the search box")--url <url>
: Required URL to navigate to before performing actions- Additional options:
--delay=<milliseconds>
: Delay between actions (default: 100)--retry=<number>
: Number of retries for failed actions (default: 3)
extract <instruction> --url <url> [options]
: Extract data from webpages based on natural language instructions<instruction>
: Natural language instruction describing the data to extract (e.g., "product names", "article content")--url <url>
: Required URL to navigate to- Additional options:
--format=<json|csv|text>
: Output format (default: json)--flatten
: Flatten nested objects in output
observe <instruction> --url <url> [options]
: Observe interactive elements on a webpage and suggest possible actions<instruction>
: Natural language instruction describing what to observe (e.g., "interactive elements", "login form")--url <url>
: Required URL to navigate to- Additional options:
--interval=<milliseconds>
: Check interval for observation (default: 1000)--duration=<duration>
: Total observation time (e.g., '30s', '5m')--changes-only
: Only report when changes are detected
open <url> [options]
: Open and interact with web pages- Capture HTML content with
--html
- Monitor console logs with
--console
- Track network activity with
--network
- Take screenshots with
--screenshot=<file path>
- Configure viewport size with
--viewport=<width>x<height>
- Debug with visible browser using
--no-headless
- Connect to existing Chrome instances with
--connect-to=<port>
- Capture HTML content with
- Common options for all browser commands:
--timeout=<milliseconds>
: Set navigation timeout (default: 30000)--viewport=<width>x<height>
: Set viewport size (e.g., 1280x720)--headless
: Run browser in headless mode (default: true)--no-headless
: Show browser UI for visual inspection and debugging--connect-to=<port>
: Connect to an existing Chrome instance--wait=<duration or selector>
: Wait after page load, supports:- Time duration: '5s', '1000ms', '2m' (seconds, milliseconds, minutes)
- CSS selector: '#element-id', '.my-class'
- Explicit format: 'time:5s', 'selector:#element-id', 'css:.my-class'
- Made Playwright a peer dependency for lighter installation
- Added browser configuration options in config file (headless mode, viewport, timeout)
- Integrated Stagehand AI for browser automation
- Support for OpenAI and Anthropic providers
- Auto-selection of provider based on available API keys
- Configurable timeout and debug options
- Moved Playwright from direct dependency to peer dependency
- Users need to install Playwright separately to use browser commands
- Added clear installation instructions and error messages
- Fixed punycode deprecation warning by properly redirecting both
punycode
andnode:punycode
imports topunycode/
- Fixed dynamic require issues with Node.js built-in modules by using proper ESM imports
- Improved handling of Node.js built-in modules in build configuration
- Changed default tokenizer to
o200k_base
for better compatibility with Gemini models - Added configurable tokenizer support through
tokenCount.encoding
in config file - Updated documentation to reflect new tokenizer configuration options
- Big improvements to robustness of command line arguments
- Introduces doc command to generate documentation for local or remote repositories
- Introduces github command to access PRs and issues from github
- Support for listing recent PRs and issues
- Detailed view of PR/issue discussions and code review comments
- Multiple authentication methods:
- GitHub token via environment variable
- GitHub CLI integration for automatic token generation
- Git credentials support (stored tokens or Basic Auth)
- Support for both local and remote repositories
- Markdown-formatted output for readability
- Use token count estimation to switch gemini models to pro if repository is large to fit any other model
- Updates GitHub model names to latest versions
- Updates Perplexity model names to latest versions
- Added version command to display the current version of cursor-tools
- Improved GitHub authentication error handling and rate limit messages
- Better detection of stored GitHub tokens in git credentials
- Fixed authentication status messages to accurately reflect available methods
- Fixed ESM compatibility issues with Node.js built-in modules
- Removed bundling of Node.js built-ins for better ESM support
- Reduced bundle size by externalizing Node.js core modules
- Fixed dynamic require issues with Node.js built-in modules
- Updated build configuration to properly handle Node.js built-ins in ESM context
- Fixed dynamic require of url module in ESM context
- Updated import-meta-url.js to use proper ESM imports
- Improved release process with dedicated release script
- Fixed ESM compatibility issues with dependencies
- Added better error handling for git operations during release
- Updated build configuration to output ES Module format for better Node.js 20+ compatibility
- Changed output file from CommonJS (.cjs) to ES Module (.mjs)
- Fixed ESM compatibility issues with dependencies
- Added branch support for GitHub repositories in
doc
command- Support for specifying branch using
@branch
syntax (e.g.--fromGithub=username/repo@branch
) - Works with both HTTPS URLs and shorthand format
- Properly integrates with repomix API using the
ref
parameter
- Support for specifying branch using
- New
doc
command to generate comprehensive repository documentation- Support for local repository documentation generation
- Support for remote GitHub repository documentation via
--fromGithub
option - Option to save documentation to file with
--output
- Development mode support via
pnpm dev
for running latest code without building
- Updated
.cursorrules
to include documentation for the newdoc
command - Improved command-line argument parsing for better option handling
Initial release with basic functionality:
- Web search using Perplexity AI
- Repository context-aware answers using Google Gemini
- Installation and configuration utilities