Skip to content

fix: refresh provider metadata#2658

Open
janburzinski wants to merge 6 commits into
mainfrom
emdash/cli-docs-o9lm3
Open

fix: refresh provider metadata#2658
janburzinski wants to merge 6 commits into
mainfrom
emdash/cli-docs-o9lm3

Conversation

@janburzinski

Copy link
Copy Markdown
Collaborator

Description

  • renamed Kimi to Kimi Code
  • updated provider metadata for rovo and junie
  • rovo dev uses the current acli flow acli rovodev run
  • updated default conversation title to be the provider display names, e.g. Kimi Code (1)
Checklist
  • I kept this PR small and focused
  • I ran a self-review before opening this PR
  • I ran the relevant local checks or explained why not
  • I updated docs when behavior or setup changed
  • I added or updated tests when behavior changed, or explained why not
  • I only added comments where the logic is not obvious
  • I used Conventional Commits for commit
    messages and, when possible, the PR title

@greptile-apps

greptile-apps Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR updates provider metadata for Kimi (renamed to "Kimi Code") and Rovo Dev (updated to the acli rovodev run flow), and wires the provider display name into the default conversation title formatter so titles like "Kimi Code (1)" are used instead of the raw provider ID.

  • Kimi: name, install script URL, docs URL, and GitHub repo updated to reflect the kimi-code rebranding; install flags changed from -LsSf to -fsSL (equivalent set of options, reordered).
  • Rovo: binary check narrowed to acli only, install commands updated with proper homebrew/apt steps, prompt kind switched from argv to keystroke, and defaultArgs: ['rovodev', 'run'] replaces the old autoStartCommand.
  • Conversation titles: getDefaultTitlePrefix now resolves the provider's display name and the backward-compatible regex accepts both old stored forms (e.g. kimi (1)) and new display-name forms (e.g. Kimi Code (1)) when upgrading persisted titles.

Confidence Score: 5/5

Safe 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.

Important Files Changed

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
Loading
%%{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
Loading

Reviews (2): Last reviewed commit: "fix(tasks): remove redundant title prefi..." | Re-trigger Greptile

@janburzinski

Copy link
Copy Markdown
Collaborator Author

@greptileai

}

function getDefaultTitlePrefix(providerId: AgentProviderId): string {
return getProvider(providerId)?.name ?? capitalizeProviderId(providerId);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Let's just always use the name?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

thanks, updated :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants