Skip to content

feat(cursor-cli): add Cursor CLI module #309

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 21 commits into
base: main
Choose a base branch
from

Conversation

matifali
Copy link
Member

@matifali matifali commented Aug 8, 2025

Summary

  • Add new module registry/coder-labs/modules/cursor-cli to run Cursor Agent CLI directly (no AgentAPI)
  • Interactive chat by default; supports non-interactive mode (-p) with output-format
  • Supports model (-m) and force (-f) flags, initial prompt, and CURSOR_API_KEY
  • Merges MCP settings into ~/.cursor/settings.json
  • Installs via npm, bootstrapping Node via NVM if missing (mirrors gemini approach)
  • Adds Terraform-native tests (.tftest.hcl); all pass locally

Test plan

  • From module dir:
    • terraform init -upgrade
    • terraform test -verbose
  • Expect 4 tests passing covering defaults, flag plumbing, and MCP settings injection
  • Basic smoke run: ensure cursor-agent is on PATH or set install_cursor_cli=true

…CP settings, model/force)

- Runs `cursor-agent` directly (no AgentAPI); interactive chat by default
- Supports non-interactive prints (-p) with output-format, model (-m), force (-f)
- Merges MCP settings into ~/.cursor/settings.json
- Installs via npm (uses nvm if needed); terraform tests added
@matifali matifali marked this pull request as draft August 8, 2025 18:17
…only

- mcp_json -> <folder>/.cursor/mcp.json (optional)
- rules_files map -> <folder>/.cursor/rules/* (optional); link rules docs
- always -p; default output_format=json; README updates
…itional_settings; simplify non-interactive run
@matifali matifali changed the title feat(cursor-cli): add Cursor Agent CLI module (no AgentAPI, interactive by default) feat(cursor-cli): add Cursor Agent CLI module Aug 8, 2025
@matifali matifali changed the title feat(cursor-cli): add Cursor Agent CLI module feat(cursor-cli): add Cursor CLI module Aug 8, 2025
- Introduced variables for optional pre-install and post-install scripts in the module.
- Updated the main script to execute these scripts if provided.
- Enhanced tests to validate the embedding of the new scripts.
…and add post-install wait script

- Modified main.tf to pass the folder variable to pre-install and post-install scripts.
- Added a new post_install_script in README to wait for the repository to be ready before proceeding.
- Removed the `-p` argument and the conditional for `OUTPUT_FORMAT` from the script to streamline execution and avoid unnecessary options.
….sh script

- Reintroduced the `-p` argument and the conditional for `OUTPUT_FORMAT` to enhance script functionality and allow for more flexible execution options.
…t arguments

- Eliminated the `output_format` variable from main.tf and removed associated logic from start.sh to simplify the script and reduce complexity.
@@ -54,7 +54,7 @@ const setupContainer = async ({
...vars,
});
const coderScript = findResourceInstance(state, "coder_script");
const id = await runContainer(image ?? "codercom/enterprise-node:latest");
const id = await runContainer(image ?? "node:18-alpine");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean to make this change in this PR?

The claude-code tests are failing now

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No. Good catch. I was trying to run tests faster locally. And replace all instances of the node image as that's huge in size.

# Optional
install_cursor_cli = true
cursor_cli_version = "latest"
output_format = "json" # text | json | stream-json
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there is no variable for this in the module.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes I removed it but forgot to update the examples. Still testing if we can benefit from output choice.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants