Skip to content

feat(agent): sakana.ai(codex 互換 CLI)を追加#317

Merged
kkyosuke merged 1 commit into
mainfrom
fugu
Jun 23, 2026
Merged

feat(agent): sakana.ai(codex 互換 CLI)を追加#317
kkyosuke merged 1 commit into
mainfrom
fugu

Conversation

@kkyosuke

Copy link
Copy Markdown
Owner

目的

OpenAI Codex 互換の CLI(起動コマンド codex-fugu)を usagi の Agent CLI として使えるようにする。設定画面・usagi feature 表ではユーザー向け表示名を sakana.ai とする。

変更内容

  • domain (settings.rs): AgentCli::CodexFugu を追加。command()codex-fugu、serde 保存値は codex_fugu
  • infrastructure (agent/codex.rs, agent/mod.rs): CodexAgent を起動プログラム名と rollout 保存先でパラメータ化し、fugu()codex-fugu / ~/.codex-fugu)として Codex 実装一式(-c 設定上書き・ライフサイクルフック・resume --last・forget)を再利用。agent_for に分岐を追加。
  • feature (agent_feature.rs): Codex と同一の全統合機能に対応。
  • presentation (tui/config/..., cli/feature.rs, cli/config.rs): Config 画面の選択肢・usagi feature 列名を sakana.ai に。グローバル設定・ワークスペース個別上書きの両方で選択可(同一の AGENT_CLIS を循環)。
  • docs: README.md / 02-architecture.md / 03-commands/01-cli.md / 02-tui.md / 05-settings.md / design/04-config.md を更新。

内部識別子(enum CodexFugu / 起動コマンド codex-fugu / 保存値 codex_fugu)はそのまま、ユーザー向け表示名のみ sakana.ai

テスト・確認方法

  • cargo fmt / cargo clippy --all-targets -- -D warnings / cargo test(1619 件)すべてパス。
  • 新規テスト: codex-fugu の起動コマンド生成・専用 rollout 保存先からの再開・serde 往復・feature サポート・Config 循環順序を追加。

🤖 Generated with Claude Code

OpenAI Codex 互換の `codex-fugu` を起動する Agent CLI を追加する。
設定画面・feature 表ではユーザー向け表示名を `sakana.ai` とする。

変更内容:
- domain: `AgentCli::CodexFugu` を追加(command()=`codex-fugu`、保存値 `codex_fugu`)
- infra: `CodexAgent` を起動プログラム名と rollout 保存先でパラメータ化し、
  `fugu()`(`codex-fugu` / `~/.codex-fugu`)として Codex 実装を再利用
- feature: Codex と同一の全統合機能に対応
- presentation: Config 画面・`usagi feature` の表示名を `sakana.ai` に。
  グローバル設定・ワークスペース上書きの両方で選択可
- docs: 関連ドキュメントを更新

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

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 223093f into main Jun 23, 2026
4 checks passed
@kkyosuke kkyosuke deleted the fugu branch June 23, 2026 22:46
kkyosuke added a commit that referenced this pull request Jun 23, 2026
## 目的

- `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::ALL` と `AgentCli::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](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@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>
kkyosuke added a commit that referenced this pull request Jun 24, 2026
## 目的

issue #47 / #58 の残件を解消する。

> **補足**: #47 が指摘していた「アダプタの `launch_command` が
`AgentCli::launch_command` への素通し」という二重間接と、#58 が指摘していた domain
への起動コマンド生成ロジックの混入(`launch_command` / `mcp_config_json` /
`claude_hooks_settings` / `json_escape` / `SESSION_WORKTREE_PROMPT` /
`LOCAL_LLM_PROMPT`)は、**sakana.ai(codex 互換 CLI)追加 (#317)
の際に既にアダプタ層へ退避済み**でした。現状の `domain/settings.rs` は `AgentCli`
の方針データ(`AgentWiring`)のみを保持し、`serde_json` / `shell-words`
に依存しない純データ層になっています。本 PR はその仕上げです。

## 変更内容

- 各アダプタの `program()` が domain の `AgentCli::command()`
とは別にプログラム名(`"claude"` / `"codex"` / `"codex-fugu"` /
`"gemini"`)をリテラル再定義していたのを解消。
  - `ClaudeAgent::program` → `AgentCli::Claude.command()`
  - `GeminiAgent::program` → `AgentCli::Gemini.command()`
- `CodexAgent::new` / `fugu` のプログラム名 → `AgentCli::Codex.command()` /
`AgentCli::CodexFugu.command()`
- プログラム名の正本(SSoT)を domain の `AgentCli::command()` 1 箇所に統一。

## テスト・確認方法

- `cargo fmt` / `cargo clippy --all-targets -- -D warnings` / `cargo
test` 全て通過。
- 既存の agent / settings テストで、各 CLI の起動コマンド(MCP・フック注入を含む)が従来どおり生成されることを確認。

Closes #47
Closes #58

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 <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