Skip to content

feat: Agent CLI の有無チェック(doctor)と Config 選択肢の絞り込み#320

Merged
kkyosuke merged 3 commits into
mainfrom
feat/doctor-agent-presence
Jun 23, 2026
Merged

feat: Agent CLI の有無チェック(doctor)と Config 選択肢の絞り込み#320
kkyosuke merged 3 commits into
mainfrom
feat/doctor-agent-presence

Conversation

@kkyosuke

Copy link
Copy Markdown
Owner

目的

  • usagi doctor に Agent CLI(claude / codex / sakana.ai / gemini)の有無チェックを追加する。
  • Config 画面の Agent CLI 選択肢を、インストール済み(PATH 上に存在する)agent だけに絞る。

両者は同じ「インストール判定」を共有する(usecase::agent::available_clis)。

注: sakana.ai(Codex 互換 CLI、起動コマンド codex-fugu)を追加した #317 はマージ済みのため、本 PR はそれを前提に最新 main の上へ載せています。

変更内容

doctor(有無チェック)

  • usagi doctor が 4 つの Agent CLI の有無を確認。いずれも任意(起動するのは設定中の 1 つだけ)なので、未導入は missing ではなく warn(doctor は正常終了、--fix の対象外)。
  • 各行は表示名で示し、ok のときは探索コマンド名(sakana.ai なら codex-fugu)を併記。

Config 画面(選択肢の絞り込み)

  • グローバル設定・ワークスペース上書きの両方の Agent CLI セレクタが、インストール済みの agent だけを循環。未インストールは選択肢に出さない。
  • 画面を開いただけで保存値を失わないよう、現在設定中の値が未インストールでも選択肢に残す

リファクタ(SSoT)

  • AgentCli::ALLAgentCli::display_name() を domain に集約。TUI Config・usagi feature の表示名と循環順序の正本を一本化(重複していた agent_cli_label / COLUMNS のラベルを削除)。
  • 有無判定を usecase::agent に新設し、doctor と Config 画面で共用。

テスト・確認方法

  • cargo fmt --check / cargo clippy --all-targets -- -D warnings / cargo test(1651 件)すべてパス。
  • 追加テスト: available_clis のフィルタ、doctor の agent presence(ok/warn・順序)、Config 循環(導入済みのみ・未導入の保存値の保持・ローカル上書き)。

🤖 Generated with Claude Code

kkyosuke and others added 3 commits June 24, 2026 08:18
`usagi doctor` が claude / codex / sakana.ai / gemini の各 Agent CLI が
PATH 上にあるかを確認する。いずれも任意(起動するのは設定中の 1 つだけ)
なので、未導入は `missing` ではなく `warn` 扱いとし、doctor は正常終了し
`--fix` の対象にもしない。

あわせて表示名を domain に集約(SSoT 化):
- `AgentCli::ALL` と `AgentCli::display_name()` を domain に追加
- 有無判定 `usecase::agent::available_clis` を新設(doctor と Config 画面で共用)
- `usagi feature` の列ラベルを display_name 由来に統一

テスト・確認方法: cargo fmt / clippy -D warnings / test すべてパス。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Config 画面(グローバル設定・ワークスペース上書きの両方)の Agent CLI
セレクタが、PATH 上にインストール済みの agent だけを循環するようにする。
未インストールの agent は選択肢に出さない。判定は usecase::agent::available_clis
で行い、doctor の有無チェックと同じ仕組みを共有する。

画面を開いただけで保存値を失わないよう、現在設定中の値が未インストールでも
選択肢に残す。

テスト・確認方法: cargo fmt / clippy -D warnings / test すべてパス。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
available_clis は CommandRunner::available のみ使うため、テスト用
FakeRunner の run/check/spawn が未カバーだった(カバレッジ CI が失敗)。
doctor のフェイクランナーテストと同じ方針でそれらを叩くテストを追加する。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

📊 Test Coverage

🚀 いまのカバレッジ (Lines): 100.00% — この調子でいこう!

🎉✨ パーフェクト!全ファイル Lines カバレッジ 100% を達成しました 🏆🐰

@kkyosuke kkyosuke merged commit bb6701e into main Jun 23, 2026
4 checks passed
@kkyosuke kkyosuke deleted the feat/doctor-agent-presence branch June 23, 2026 23:42
@kkyosuke kkyosuke mentioned this pull request Jun 23, 2026
kkyosuke added a commit that referenced this pull request Jun 24, 2026
## 目的

`v1.2.0` をリリースする。`Cargo.toml` / `Cargo.lock` の version を `1.1.0` →
`1.2.0` に更新する。
本 PR を `main` にマージすると `auto-release.yml` が version 変更を検知し、`v1.2.0` タグと
GitHub Release を自動作成する。

## 変更内容

version bump のみ。v1.1.0 以降に main へマージ済みの変更点は以下のとおり。

### 新機能(feat)

- doctor で Agent CLI の有無をチェックし Config の選択肢を絞り込む (#320)
- note 編集で Shift+矢印の範囲選択と Del 削除を追加 (#319)
- sakana.ai(codex 互換 CLI)を追加 (#317)
- 切替で右ペインのプレビューを淡色にし、選択対象が左だと示す (#315)
- モードはしごの下に空行を挟みヘッダーと本体を分ける (#311)
- 在席に「+ new」タブを選択中だけ表示する (#309)
- 切替(Switch)でも Ctrl-E でセッションメモを開く (#310)
- note を右ペイン右上に表示し ESC で閉じる (#307)
- Ctrl-T を在席の「+ new」タブに着地させ Esc で元のペインに戻す (#306)
- 在席(Focus)にペインのタブを表示する (#305)
- Gemini に会話再開(-r latest)と初期プロンプト(-i)を配線 (#300)
- usagi feature コマンドで Agent CLI 機能の星取表を表示 (#304)

### 修正(fix)

- コードレビュー指摘の修正(セキュリティ・堅牢性・UX) (#318)
- 在席・切替で Ctrl-E が実機端末でもメモを開くように修正 (#314)
- Open Project で最近開いたワークスペースを上に表示 (#308)
- 切替の note でセッション識別子が見えるように修正 (#302)
- 没入から開いたメモ編集中もアタッチ端末を背後に描く (#303)
- Windows でリリースビルドが通らない端末入力読み取りを修正 (#301)

### リファクタ・ドキュメント

- home のオーバーレイ群を Option の集合から enum に変える (#316)
- 共通ヘルパの重複を集約し分類ロジックを domain へ寄せる (#312)
- 切替のキー表とコメントの `h` 表記を実装に合わせる (#313)

## テスト・確認方法

- version 変更のみのため `release-build-check.yml` が 4 プラットフォーム(Linux / macOS
amd64・arm64 / Windows)でリリースビルドを検証する。
- 各機能・修正はマージ済み PR で個別にテスト・確認済み。

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

1 participant