Skip to content

fix(assistant): use dynamic backend list in assistant editor dropdown#1798

Merged
piorpua merged 1 commit intomainfrom
fix/issue-1385
Mar 29, 2026
Merged

fix(assistant): use dynamic backend list in assistant editor dropdown#1798
piorpua merged 1 commit intomainfrom
fix/issue-1385

Conversation

@kaizhou-lab
Copy link
Copy Markdown
Collaborator

Summary

  • Replace hardcoded 6-backend list in AssistantEditDrawer with dynamic lookup from ACP_BACKENDS_ALL
  • All detected backends (iFlow, Goose, Kimi, Copilot, etc.) now appear in the Main Agent dropdown
  • Unknown/extension backends fall back to using their ID as the display label

Related Issues

Closes #1385

Test Plan

  • Unit tests pass (5 new tests for backend option generation)
  • Type check passes
  • Lint and format pass

Replace the hardcoded 6-backend list in AssistantEditDrawer with a
dynamic lookup from ACP_BACKENDS_ALL filtered by availableBackends.
This ensures all detected backends (iFlow, Goose, Kimi, Copilot, etc.)
appear in the Main Agent dropdown when creating or editing assistants.

Closes #1385
@piorpua
Copy link
Copy Markdown
Contributor

piorpua commented Mar 29, 2026

Code Review:fix(assistant): use dynamic backend list in assistant editor dropdown (#1798)

变更概述

本 PR 将 AssistantEditDrawer.tsx 中硬编码的 6 个后端选项替换为从 ACP_BACKENDS_ALL 动态生成,使所有已检测到的 ACP 后端(如 iFlow、Goose、Kimi 等)都能出现在 Main Agent 下拉列表中。同时新增了一个单元测试文件验证该逻辑。


方案评估

结论:✅ 方案合理

ACP_BACKENDS_ALL 作为唯一数据源生成 label,彻底消除了检测到后端但下拉缺项的问题,与项目架构一致。对未知 backend ID 回退为 id 作为 label,兜底处理得当。测试文件直接提取并测试核心映射逻辑,覆盖了关键场景。


问题清单

🔵 LOW — 双重 .map() 可合并为一次

文件src/renderer/pages/settings/AgentSettings/AssistantManagement/AssistantEditDrawer.tsx,第 265–274 行

问题代码

{Array.from(availableBackends)
  .map((id) => {
    const config = ACP_BACKENDS_ALL[id as keyof typeof ACP_BACKENDS_ALL];
    return { value: id, label: config?.name ?? id };
  })
  .map((opt) => (
    <Select.Option key={opt.value} value={opt.value}>
      {opt.label}
    </Select.Option>
  ))}

问题说明:两次 .map() 遍历同一数组,可以合并为一次,减少中间数组分配。

修复建议

{Array.from(availableBackends).map((id) => {
  const config = ACP_BACKENDS_ALL[id as keyof typeof ACP_BACKENDS_ALL];
  const label = config?.name ?? id;
  return (
    <Select.Option key={id} value={id}>
      {label}
    </Select.Option>
  );
})}

汇总

# 严重级别 文件 问题
1 🔵 LOW AssistantEditDrawer.tsx:265 双重 .map() 可合并

结论

批准合并 — 无阻塞性问题,修复方案正确,测试覆盖充分,LOW 级别优化不影响合并。


本报告由本地 pr-review skill 生成,包含完整项目上下文,无截断限制。

CONCLUSION: APPROVED
IS_CRITICAL_PATH: false
PR_NUMBER: 1798

@piorpua
Copy link
Copy Markdown
Contributor

piorpua commented Mar 29, 2026

✅ 已自动 review,无阻塞性问题,正在触发自动合并。

@piorpua piorpua merged commit a98ec78 into main Mar 29, 2026
17 checks passed
@piorpua piorpua deleted the fix/issue-1385 branch March 29, 2026 06:43
@piorpua piorpua added bot:done Auto-merged by bot and removed bot:reviewing Review in progress (mutex) labels Mar 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot:done Auto-merged by bot

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: iFlow CLI not detected as available Main Agent option when creating/editing assistants

2 participants