fix: refresh provider metadata#2658
Conversation
Greptile SummaryThis PR updates provider metadata for Kimi (renamed to "Kimi Code") and Rovo Dev (updated to the
Confidence Score: 5/5Safe to merge — all changes are metadata updates and a well-tested title-formatting utility refactor with explicit backward compatibility for stored titles. The conversation title logic correctly builds a backward-compatible regex that matches old lowercase/old-display-name forms and new display-name forms using the case-insensitive flag. The Kimi and Rovo metadata changes are consistent across both the registry and the plugin files, and the new tests verify the key migration and command-building scenarios. No files require special attention.
|
| Filename | Overview |
|---|---|
| apps/emdash-desktop/src/renderer/features/tasks/conversations/conversation-title-utils.ts | Uses provider display name (e.g. 'Kimi Code') for formatting and generating default conversation titles; backward-compatible regex handles old stored titles with lowercase or old display names |
| apps/emdash-desktop/src/renderer/tests/conversation-title-utils.test.ts | Adds test verifying that old 'Kimi (1)' titles are displayed as 'Kimi Code (1)' and the next default title skips occupied slots correctly |
| apps/emdash-desktop/src/shared/core/agents/agent-provider-registry.ts | Updates Kimi metadata (name, URLs, install command) and Rovo metadata (install flow, binary name, interaction mode changed to keystroke) |
| packages/plugins/src/agents/impl/rovo/index.ts | Switches Rovo from argv to keystroke prompt mode, adds proper homebrew/apt install commands, and sets defaultArgs to ['rovodev', 'run'] |
| packages/plugins/src/agents/impl/kimi/index.ts | Updates Kimi plugin name to 'Kimi Code', install script URL, and GitHub repo reference to moonshotai/kimi-code |
| packages/plugins/src/agents/impl/index.test.ts | Adds a test covering Rovo's updated ACLI install metadata, keystroke prompt kind, and buildCommand output including the --yolo flag |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["formatConversationTitleForDisplay / nextDefaultConversationTitle\n(providerId, title)"] --> B["getDefaultTitlePrefix(providerId)"]
B --> C["getProvider(providerId)?.name"]
C -->|"name exists"| D["Use provider display name\ne.g. 'Kimi Code'"]
C -->|"name not found"| E["capitalizeProviderId(providerId)\ne.g. 'Codex'"]
D --> F["Build regex prefixes"]
E --> F
F --> G{"displayName.lower()\n== providerId.lower()?"}
G -->|"Yes (e.g. 'codex' → 'Codex')"| H["prefixes = [providerId]"]
G -->|"No (e.g. 'kimi' → 'Kimi Code')"| I["prefixes = [providerId, displayName]\nfor backward compat"]
H --> J["Regex: ^(?:codex) \\(n\\)$ /i"]
I --> K["Regex: ^(?:kimi|Kimi Code) \\(n\\)$ /i"]
J --> L["Parse index, return displayName (n)"]
K --> L
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
A["formatConversationTitleForDisplay / nextDefaultConversationTitle\n(providerId, title)"] --> B["getDefaultTitlePrefix(providerId)"]
B --> C["getProvider(providerId)?.name"]
C -->|"name exists"| D["Use provider display name\ne.g. 'Kimi Code'"]
C -->|"name not found"| E["capitalizeProviderId(providerId)\ne.g. 'Codex'"]
D --> F["Build regex prefixes"]
E --> F
F --> G{"displayName.lower()\n== providerId.lower()?"}
G -->|"Yes (e.g. 'codex' → 'Codex')"| H["prefixes = [providerId]"]
G -->|"No (e.g. 'kimi' → 'Kimi Code')"| I["prefixes = [providerId, displayName]\nfor backward compat"]
H --> J["Regex: ^(?:codex) \\(n\\)$ /i"]
I --> K["Regex: ^(?:kimi|Kimi Code) \\(n\\)$ /i"]
J --> L["Parse index, return displayName (n)"]
K --> L
Reviews (2): Last reviewed commit: "fix(tasks): remove redundant title prefi..." | Re-trigger Greptile
| } | ||
|
|
||
| function getDefaultTitlePrefix(providerId: AgentProviderId): string { | ||
| return getProvider(providerId)?.name ?? capitalizeProviderId(providerId); |
There was a problem hiding this comment.
Let's just always use the name?
There was a problem hiding this comment.
thanks, updated :D
Description
acli rovodev runKimi Code (1)Checklist
messages and, when possible, the PR title