Files
vibe-kanban/crates/executors/default_profiles.json
Britannio Jarrett 074199f2d2 rename cursor to cursor agent (vibe-kanban) (#1072)
* Done! I've successfully renamed "Cursor" to "Cursor Agent" throughout the codebase. The changes include:

- Renamed the Rust struct from `Cursor` to `CursorAgent` in [crates/executors/src/executors/cursor.rs](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/51f5-rename-cursor-to/crates/executors/src/executors/cursor.rs)
- Updated the enum variant in [crates/executors/src/executors/mod.rs](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/51f5-rename-cursor-to/crates/executors/src/executors/mod.rs) with proper serialization attributes
- Updated documentation in [docs/supported-coding-agents.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/51f5-rename-cursor-to/docs/supported-coding-agents.mdx) and [docs/index.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/51f5-rename-cursor-to/docs/index.mdx)
- Regenerated TypeScript types
- All type checks pass (frontend and backend)

The serialization still uses "CURSOR" for backwards compatibility, but the struct is now named `CursorAgent` in Rust, making it clear this refers to the Cursor Agent CLI tool.

* Perfect! All checks pass. The renaming is complete. The struct is now `CursorAgent` everywhere, serializing as `CURSOR_AGENT`.

* Perfect! Done. I've reverted all internal code changes and kept only the user-facing documentation updates:

**What remains changed (user-visible):**
- [docs/supported-coding-agents.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/51f5-rename-cursor-to/docs/supported-coding-agents.mdx) - Title changed from "Cursor CLI" to "Cursor Agent CLI"
- [docs/index.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/51f5-rename-cursor-to/docs/index.mdx) - "Cursor CLI" changed to "Cursor Agent CLI"

**What was reverted (internal, not user-visible):**
- All Rust struct/enum names back to `Cursor`
- All serialization formats back to `CURSOR`
- TypeScript types back to `CURSOR`
- JSON config files back to `CURSOR`

All checks pass 

* Perfect! Now users will see "CURSOR_AGENT" in the UI when selecting agents, while the code stays clean with the `Cursor` struct name, and documentation still says "Cursor CLI". All checks pass 

**What changed (user-visible in UI):**
- Agent selection dropdowns show "CURSOR_AGENT" instead of "CURSOR"
- JSON configs use "CURSOR_AGENT"
- MCP server documentation shows `cursor_agent` / `CURSOR_AGENT`

**What stayed the same:**
- Rust code uses `Cursor` struct name internally (clean code)
- User-facing documentation still says "Cursor CLI" (no doc changes needed)

* Perfect! Now it's backwards compatible. The `#[serde(alias = "CURSOR")]` attribute means:

 **Backwards Compatible:**
- Old configs with `"CURSOR"` will still deserialize correctly
- New configs with `"CURSOR_AGENT"` also work
- All serialization (saving configs) uses the new `"CURSOR_AGENT"` format

**Summary of changes:**
- Users see "CURSOR_AGENT" in the UI dropdown
- New configs are saved with "CURSOR_AGENT"
- Old configs with "CURSOR" continue to work
- Code internally still uses clean `Cursor` struct name
- All checks pass 

* Perfect!  Now it's fully backwards compatible:

**What works:**
-  Old configs with `"CURSOR"` deserialize correctly (via `alias`)
-  New configs with `"CURSOR_AGENT"` deserialize correctly
-  All new saves use `"CURSOR_AGENT"` (via `rename`)
-  The discriminant enum `BaseCodingAgent` also accepts both formats
-  Users see "CURSOR_AGENT" in the UI
-  All type checks pass

The `#[strum_discriminants(serde(rename = "CURSOR_AGENT", alias = "CURSOR"))]` ensures both the full enum AND the discriminant enum accept both old and new formats.

* Perfect!  Now `cursor_agent.json` exists and the Vite plugin will create the key `CURSOR_AGENT`, which matches what the frontend expects.

* cursor agent | fix (vibe-kanban 6594df22)

http://localhost:3044/api/task-attempts

This fails

Payload:
{"task_id":"18fdd148-5049-4772-9385-6d9196087524","executor_profile_id":{"executor":"CURSOR_AGENT","variant":null},"base_branch":"main"}

Response: Failed to deserialize the JSON body into the target type: executor_profile_id.executor: unknown executor 'CURSOR_AGENT' (normalized to 'CURSOR_AGENT') at line 1 column 98

Check the diff of this branch vs main to understand what we've been trying to do (users should see CURSOR_AGENT instead of CURSOR)

Server log:
[0] 2025-10-23T08:38:00.475636Z DEBUG server::routes::tasks: Creating task 'hey' in project f8c8d410-fd1b-48a4-829a-a6bf4b550a62

* rename CodingAgent::Cursor -> CodingAgent::CursorAgent

* update types
2025-10-27 10:24:53 +00:00

137 lines
2.5 KiB
JSON

{
"executors": {
"CLAUDE_CODE": {
"DEFAULT": {
"CLAUDE_CODE": {
"dangerously_skip_permissions": true
}
},
"PLAN": {
"CLAUDE_CODE": {
"plan": true
}
},
"APPROVALS": {
"CLAUDE_CODE": {
"approvals": true
}
}
},
"AMP": {
"DEFAULT": {
"AMP": {
"dangerously_allow_all": true
}
}
},
"GEMINI": {
"DEFAULT": {
"GEMINI": {
"model": "default",
"yolo": true
}
},
"FLASH": {
"GEMINI": {
"model": "flash",
"yolo": true
}
}
},
"CODEX": {
"DEFAULT": {
"CODEX": {
"sandbox": "danger-full-access"
}
},
"HIGH": {
"CODEX": {
"sandbox": "danger-full-access",
"model_reasoning_effort": "high"
}
},
"APPROVALS": {
"CODEX": {
"sandbox": "workspace-write",
"ask_for_approval": "unless-trusted"
}
}
},
"OPENCODE": {
"DEFAULT": {
"OPENCODE": {}
}
},
"QWEN_CODE": {
"DEFAULT": {
"QWEN_CODE": {
"yolo": true
}
}
},
"CURSOR_AGENT": {
"DEFAULT": {
"CURSOR_AGENT": {
"force": true,
"model": "auto"
}
},
"SONNET_4_5": {
"CURSOR_AGENT": {
"force": true,
"model": "sonnet-4.5"
}
},
"SONNET_4_5_THINKING": {
"CURSOR_AGENT": {
"force": true,
"model": "sonnet-4.5-thinking"
}
},
"OPUS_4_1": {
"CURSOR_AGENT": {
"force": true,
"model": "opus-4.1"
}
},
"GPT_5": {
"CURSOR_AGENT": {
"force": true,
"model": "gpt-5"
}
},
"GROK": {
"CURSOR_AGENT": {
"force": true,
"model": "grok"
}
}
},
"COPILOT": {
"DEFAULT": {
"COPILOT": {
"allow_all_tools": true
}
},
"GPT_5": {
"COPILOT": {
"allow_all_tools": true,
"model": "gpt-5"
}
},
"CLAUDE_SONNET_4_5": {
"COPILOT": {
"allow_all_tools": true,
"model": "claude-sonnet-4.5"
}
},
"CLAUDE_SONNET_4": {
"COPILOT": {
"allow_all_tools": true,
"model": "claude-sonnet-4"
}
}
}
}
}