Skip to content

feat(tui): 1 セッション 1 agent に制限し既存 agent タブへ移動する#291

Merged
kkyosuke merged 1 commit into
mainfrom
agent
Jun 22, 2026
Merged

feat(tui): 1 セッション 1 agent に制限し既存 agent タブへ移動する#291
kkyosuke merged 1 commit into
mainfrom
agent

Conversation

@kkyosuke

Copy link
Copy Markdown
Owner

目的

同一セッション(worktree)内に agent ペインを複数作れてしまっていた。複数 agent があると次の問題が起きる:

  • サイドバーのバッジ・デスクトップ通知は最初の agent ペインの bell しか追えない(refresh_watched.find(PaneKind::Agent) で先頭の agent だけを監視)。
  • agent の phase 状態は worktree パス単位の単一ファイル(agent_state_store)に記録されるため、2 つの agent が同じキーに書き込み、互いの状態を上書きする。

設計上「1 セッション = agent 1 つ + terminal 複数」が前提なので、agent を 1 セッション 1 つに制限する。

変更内容

  • TerminalPoolhas_agent_pane / activate_agent を追加。
  • 没入の Ctrl-G: 既存 agent があればそのタブへ移動、無ければ追加。
  • 在席の agent(Menu の a・Prompt・統括の typed agent): いずれも既存 agent があれば新規追加せずそのタブへ移動。
  • 既存 agent を再利用するときは fresh spawn 扱いにせず、session_prompt のキュー済みプロンプトを消費しない(fresh_agent_spawn を補正)。
  • terminal は従来どおり何枚でも追加可能(制限は agent のみ)。
  • ドキュメント(document/design/05-home.md / document/03-commands/02-tui.md)を「agent は 1 セッション 1 つ/Ctrl-Gagent は既存タブへ移動」に更新。

テスト・確認方法

  • cargo fmt --check / cargo clippy --all-targets -- -D warnings / cargo test(1507 passed)すべて通過。
  • 変更した実装 2 ファイル(tui/home/mod.rs / tui/home/terminal_pool.rs)はカバレッジ除外対象(scripts/coverage.shCOVERAGE_IGNORE)のため新規テストは不要。

🤖 Generated with Claude Code

同一セッション内に agent ペインを複数作れてしまい、サイドバーのバッジ・
通知が最初の agent しか追えず、phase 状態も worktree 単位の共有キーで
衝突していた。agent は 1 セッション 1 つに制限する。

- TerminalPool に has_agent_pane / activate_agent を追加。
- 没入の Ctrl-G: 既存 agent があればそのタブへ移動、無ければ追加。
- 在席の agent コマンド(Menu/`a`・Prompt・統括の typed agent)も同様に、
  既存 agent があれば新規追加せずそのタブへ移動。
- 既存 agent 再利用時は fresh spawn 扱いにせず、queued prompt を消費しない。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

📊 Test Coverage

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

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

@kkyosuke kkyosuke merged commit 5dbf478 into main Jun 22, 2026
4 checks passed
@kkyosuke kkyosuke deleted the agent branch June 22, 2026 22:33
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