Skip to content

feat: add assistant chat to Home page with global CLI sessions (#649)#656

Merged
Kewton merged 1 commit intodevelopfrom
feature/649-worktree
Apr 14, 2026
Merged

feat: add assistant chat to Home page with global CLI sessions (#649)#656
Kewton merged 1 commit intodevelopfrom
feature/649-worktree

Conversation

@Kewton
Copy link
Copy Markdown
Owner

@Kewton Kewton commented Apr 14, 2026

Summary

Home 画面にアシスタントチャット UI を追加し、特定の worktree に紐づかない汎用的なグローバル CLI セッション(インストール済み全 CLI ツール対応)を利用可能にします。

Closes #649

Changes

Added

  • src/lib/session/global-session-constants.ts — グローバルセッション定数(GLOBAL_SESSION_WORKTREE_ID = '__global__'
  • src/types/assistant.ts — アシスタント API 型定義
  • src/lib/polling/global-session-poller.ts — グローバルセッション専用ポーリング(DB チェックなし)
  • src/lib/assistant/context-builder.ts — デフォルトコンテキスト生成(CLI 使い方 + リポジトリ情報)
  • src/app/api/assistant/start/route.ts — POST: セッション開始(cliToolId 検証・DB 操作なし)
  • src/app/api/assistant/terminal/route.ts — POST: メッセージ送信
  • src/app/api/assistant/current-output/route.ts — GET: ターミナル出力取得
  • src/app/api/assistant/session/route.ts — DELETE: セッション停止
  • src/app/api/assistant/tools/route.ts — GET: インストール済み CLI ツール一覧
  • src/lib/api/assistant-api.ts — クライアント API(startSession / sendCommand / getCurrentOutput / stopSession / getInstalledTools)
  • src/components/home/AssistantChatPanel.tsx — メインパネル(折りたたみ可能・最大 50vh・ポーリング)
  • src/components/home/AssistantMessageInput.tsx — 送信専用入力(スラッシュコマンド/画像添付なし)

Changed

  • src/lib/session-cleanup.tscleanupGlobalSessions() 追加(mcbd-{tool}-__global__ パターン検出・クリーンアップ)
  • src/lib/session/worktree-status-helper.ts__global__ セッションをサイドバーから除外
  • src/app/page.tsxAssistantChatPanel を Session Overview 上部に組み込み
  • CLAUDE.md — 新規モジュール一覧追記

Architecture Notes

  • DB 操作なし: Phase 1 では chat_messages / session_states の FOREIGN KEY 制約を回避し、DB 操作を一切行わない
  • セッション命名: 既存の BaseCLITool.getSessionName('__global__') を再利用し mcbd-{tool}-__global__ 形式
  • 認証: /api/assistant/*AUTH_EXCLUDED_PATHS に追加せず、認証ミドルウェアで保護
  • ポーリング: 既存 response-checker.ts の DB チェック問題を回避するため専用 pollGlobalSession() を実装

Test Results

Unit Tests

Test Files: 334 passed
Tests:      6319 passed | 7 skipped

Lint & Type Check

  • ESLint: 0 errors
  • TypeScript: 0 errors

Build

  • Next.js build: ✅ Success

Checklist

  • Unit tests pass (6319/6319)
  • Lint check passes (0 errors)
  • Type check passes (0 errors)
  • Build succeeds
  • No DB operations in /api/assistant/* routes
  • /api/assistant/* not in AUTH_EXCLUDED_PATHS
  • Global sessions excluded from worktree sidebar
  • Dark mode support
  • Mobile responsive layout

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

…ector UX

- Add GET /api/assistant/tools endpoint returning installed CLI tools
- Add AssistantToolInfo type and getInstalledTools() to assistantApi
- Update AssistantChatPanel to fetch installed tools on mount
- Show non-installed tools as disabled with '(not installed)' label
- Update CLAUDE.md with new modules (Issue #649)
- Add dev-reports for iteration-1 (refactor, progress)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@Kewton Kewton merged commit bd6bbb6 into develop Apr 14, 2026
5 checks passed
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