Files
vibe-kanban/crates/executors/default_profiles.json

140 lines
2.6 KiB
JSON
Raw Normal View History

feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
{
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
"executors": {
"CLAUDE_CODE": {
"DEFAULT": {
"CLAUDE_CODE": {
"dangerously_skip_permissions": true
}
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
},
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
"PLAN": {
"CLAUDE_CODE": {
"plan": true
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
}
},
"APPROVALS": {
"CLAUDE_CODE": {
"approvals": true
}
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
}
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
},
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
"AMP": {
"DEFAULT": {
"AMP": {
"dangerously_allow_all": true
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
}
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
}
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
},
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
"GEMINI": {
"DEFAULT": {
"GEMINI": {
"model": "default",
"yolo": true
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
}
},
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
"FLASH": {
"GEMINI": {
"model": "flash",
"yolo": true
}
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
}
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
},
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
"CODEX": {
"DEFAULT": {
"CODEX": {
2025-11-17 18:03:23 +00:00
"model": "gpt-5.1-codex",
2025-10-08 11:11:39 +01:00
"sandbox": "danger-full-access"
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
}
},
"HIGH": {
"CODEX": {
2025-11-17 18:03:23 +00:00
"model": "gpt-5.1-codex",
"sandbox": "danger-full-access",
2025-10-08 11:11:39 +01:00
"model_reasoning_effort": "high"
}
},
"APPROVALS": {
"CODEX": {
2025-11-17 18:03:23 +00:00
"model": "gpt-5.1-codex",
"sandbox": "workspace-write",
"ask_for_approval": "unless-trusted"
}
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
}
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
},
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
"OPENCODE": {
"DEFAULT": {
"OPENCODE": {}
}
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
},
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
"QWEN_CODE": {
"DEFAULT": {
"QWEN_CODE": {
"yolo": true
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
}
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
}
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
},
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
"CURSOR_AGENT": {
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
"DEFAULT": {
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
"CURSOR_AGENT": {
"force": true,
"model": "auto"
}
},
"SONNET_4_5": {
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
"CURSOR_AGENT": {
"force": true,
"model": "sonnet-4.5"
}
},
"SONNET_4_5_THINKING": {
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
"CURSOR_AGENT": {
"force": true,
"model": "sonnet-4.5-thinking"
}
},
"OPUS_4_1": {
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
"CURSOR_AGENT": {
"force": true,
"model": "opus-4.1"
}
},
"GPT_5": {
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
"CURSOR_AGENT": {
"force": true,
"model": "gpt-5"
}
},
"GROK": {
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
"CURSOR_AGENT": {
"force": true,
"model": "grok"
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
}
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
}
2025-10-03 13:12:53 +01:00
},
"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"
}
}
feat: edit coding agent profiles (#453) * edit profiles.json * move default crate configuration to a default_profiles.json button to open mcp config in editor initialse empty mcp config files fix test new JSON structure remove editor buttons fmt and types * feat: add profile field to follow-up attempt (#442) * move default crate configuration to a default_profiles.json * new JSON structure * feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up fmt Profile selection (vibe-kanban cf714482) Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way feat: add watchkill support to CommandBuilder and integrate with Claude executor feat: refactor profile handling to use ProfileVariant across executors and requests feat: restructure command modes in default_profiles.json for clarity and consistency update profile handling to use ProfileVariant across components and add mode selection fmt feat: refactor profile handling to use variants instead of modes across components and update related structures Fix frontend * Refactor coding agent representation in task and task attempt models - Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs. - Updated SQL queries and data handling to reflect the new `profile` field. - Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`. - Adjusted frontend API calls and components to align with the updated data structure. - Removed unused `BaseCodingAgent` enum and related type guards from the frontend. - Enhanced MCP server configuration handling to utilize the new profile-based approach. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. feat: Introduce MCP configuration management - Added `McpConfig` struct for managing MCP server configurations. - Implemented reading and writing of agent config files in JSON and TOML formats. - Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure. - Removed deprecated `agent_config.rs` and updated related imports. - Enhanced error handling for MCP server operations. - Updated frontend strategies to accommodate the new MCP configuration structure. Best effort migration; add missing feature flag feat: refactor execution process handling and introduce profile variant extraction feat: add default follow-up variant handling in task details context feat: enhance profile variant selection with dropdown menus in onboarding and task sections fmt, types * refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant Fmt, clippy * Fix rebase issues * refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes --------- Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com> Fmt Fix tests refactor: clean up unused imports and default implementations in executor modules Move profiles to profiles.rs * rename profile to profile_variant_label for readability rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig * remove duplicated profile state * Amp yolo --------- Co-authored-by: Alex Netsch <alex@bloop.ai>
2025-08-14 17:33:33 +01:00
}
Profile changes (#596) * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Make variants an object rather than array (vibe-kanban 63213864) Profile variants should be an object, with key used instead of the current label. The code should be refactored leaving no legacy trace. crates/server/src/routes/config.rs crates/executors/src/profile.rs * Remove the command builder from profiles (vibe-kanban d30abc92) It should no longer be possible to customise the command builder in profiles.json. Instead, anywhere where the command is customised, the code should be hardcoded as an enum field on the executor, eg claude code vs claude code router on the claude code struct. crates/executors/src/profile.rs crates/executors/src/executors/claude.rs * fmt * Refactor Qwen log normalization (vibe-kanban 076fdb3f) Qwen basically uses the same log normalization as Gemini, can you refactor the code to make it more reusable. A similar example exists in Amp, where we use Claude's log normalization. crates/executors/src/executors/amp.rs crates/executors/src/executors/qwen.rs crates/executors/src/executors/claude.rs * Add field overrides to executors (vibe-kanban cc3323a4) We should add optional fields 'base_command_override' (String) and 'additional_params' (Vec<String>) to each executor, and wire these fields up to the command builder * Update profiles (vibe-kanban e7545ab6) Redesign the profile configuration storage system to store only differences from defaults instead of complete profile files. Implement partial profile functions (create_partial_profile, load_from_partials, save_as_diffs) that save human-readable partial profiles containing only changed values. Update ProfileConfigs::load() to handle the new partial format while maintaining backward compatibility with legacy full profile formats through automatic migration that creates backups. Implement smart variants handling that only stores changed, added, or removed variants rather than entire arrays. Fix the profile API consistency issue by replacing the manual file loading logic in the get_profiles() endpoint in crates/server/src/routes/config.rs with ProfileConfigs::get_cached() to ensure the GET endpoint uses the same cached data that PUT updates. Add comprehensive test coverage for all new functionality. * Yolo mode becomes a field (vibe-kanban d8dd02f0) Most executors implement some variation of yolo-mode, can you make this boolean field on each executor (if supported), where the name for the field aligns with the CLI field * Change ClaudeCodeVariant to boolean (vibe-kanban cc05956f) Instead of an enum ClaudeCodeVariant, let's use a variable claude_code_router to determine whether to use claude_code_router's command. If the user has also supplied a base_command_override this should take precedence (also write a warning to console) crates/executors/src/executors/claude.rs * Remove mcp_config_path from profile config (vibe-kanban 6c1e5947) crates/executors/src/profile.rs * One profile per executor (vibe-kanban b0adc27e) Currently you can define arbitrary profiles, multiple profiles per executor. Let's refactor to simplify this configuration, instead we should only be able to configure one profile per executor. The new format should be something like: ```json { "profiles": { "CLAUDE_CODE": { "default": { "plan": false, "dangerously_skip_permissions": true, "append_prompt": null }, "plan": { "plan": true, "dangerously_skip_permissions": false, "append_prompt": null } } } } ``` Each profile's defaults should be defined as code instead of in default_profiles.json profile.json will now contain: - Overrides for default configurations - Additional user defined configurations, for executors It is not possible to remove a default configuration entirely, just override the configuration. The user profile.json should still be a minimal set of overrides, to make upgrading easy. Don't worry about migration, this will be done manually. crates/executors/default_profiles.json crates/executors/src/profile.rs * SCREAMING_SNAKE_CASE * update profile.rs * config migration * fmt * delete binding * config keys * fmt * shared types * Profile variants should be saved as SCREAMING_SNAKE_CASE (vibe-kanban 5c6c124c) crates/executors/src/profile.rs save_overrides * rename default profiles * remove defaulted executor fields * backwards compatability * fix legacy variants
2025-09-01 23:33:15 +01:00
}
}