Skip to content

feat(room): control account sessions and support self restart through MCP #415

Closed

Description

@lipluscodex

Codex Luna

目的

Pullceptのルーム参加AIが、設定済みアカウントのセッション開始・終了・再起動をMCP経由で依頼できるようにする。自分自身の再起動でも、終了した呼び出し元に依存せずPullceptが再起動を完遂し、結果を確認できるようにする。

前提

  • マスターが2026-10-15のルームで実装を指示。担当はLuna。
  • 既存の画面は開始を src/main.ts:5059 の start_session、終了を src/main.ts:4471 の kill_pty に接続している。Tauri登録は src-tauri/src/lib.rs:50,80。
  • src-tauri/src/session.rs:1150 以降にアカウント・話題・resumeを扱う開始処理がある。新たな起動系ではこの処理を共有する。
  • 現在このルームで公開されているMCPツールは発言・履歴・使用量で、起動終了ツールは公開されていない。

要求・制約

  • 設定済みの起動可能アカウントと、話題・稼働セッションを識別して操作できる。人間adminアカウントの起動を拒否する既存制約を維持する。
  • マスターの追加指示(2026-10-15 00:24)により、認証済み参加AIは他の席に対しても開始・終了・再起動を依頼できる。自己操作限定やEsc中断限定にはしない。誰がどの席を操作したか、結果/失敗理由をルームに記録する。人間の画面操作は引き続き使用できる。
  • 状態一覧/照会と開始・終了・再起動のMCPインターフェースを提供し、ルームの認証済み参加者からアプリ側へ依頼を運ぶ。任意コマンド実行APIにはしない。
  • 終了/再起動は対象の現行セッション識別子を確認し、古い依頼で新しいセッションを終了しない。重複依頼で多重起動しない。
  • 自分自身の再起動はアプリ側で依頼を受け付け、結果状態を残してから終了・起動を実行する。呼び出し元のMCPプロセスが終了しても継続し、失敗理由も確認できる。アプリ終了や通信断時の扱いを明記する。
  • 再起動は既存の会話再開処理を使用する。再開不能を黙って新規会話へ置換しない。新規会話は明示して開始できる。
  • 操作後に新しい席がルームへ接続したかを確認できるようにし、プロセス起動とルーム接続を同一の成功として扱わない。Li+版/フック読込は本人の起動後確認が必要であり、再起動成功だけで反映済みとは報告しない。
  • 既存画面のセッション表示・端末・終了イベントと整合させ、エラーを観測できる形にする。
  • 版固定やLi+自動更新、比較採点の仕組み自体は今回実装しない。今回の機能がその土台となる。
  • meaningfulなテストで認証/対象違い、重複、自己再起動の呼び出し元消失、起動失敗、resume維持を検証し、要件・利用方法を同じPRで更新する。

対象

ルームMCPサイドカー、ルーム通信/認証、Tauriのセッション/PTY管理、必要な画面状態同期、関連テストおよび docs/0-requirements.md と利用ドキュメント。具体的ファイルは実装調査で確定する。

— Codex Luna

Activity

  1. added
    enhancement新機能・改善要望
    ready本文が実装開始できる形まで収束している状態。ただし更新は継続可能
    on Oct 14, 2026
  2. self-assigned this
    on Oct 14, 2026
  3. added
    waitingExternal dependency wait (CI / dependent issue / environment)
    and removed
    in-progress着手中、実装または検証が進行中
    on Oct 14, 2026
  4. lipluscodex commented on Oct 14, 2026

    @lipluscodex
    MemberAuthor

    Codex Luna

    PR #416 の最終 commit の CI 完了待ちです。起動 capability の接続照合、同一 ID の重複排除、厳格な再開と画面同期を実装し、ローカルで mcp-config 266 pass、sidecar 79 pass / 5既存 skip、build/typecheck/Rust check を確認しました。ライブアプリ・参加セッションは変更していません。

    — Codex Luna

  5. added
    review-pending実装フェーズ終了、orchestration (review / merge / close) 待ち
    and removed
    waitingExternal dependency wait (CI / dependent issue / environment)
    on Oct 14, 2026
  6. lipluscodex commented on Oct 14, 2026

    @lipluscodex
    MemberAuthor

    Codex Luna

    マスターから2026-10-15 01:23 JSTに稼働環境の更新指示を受けました。稼働用 D:/Users/hal/Code/pullcept のclean main 982489c を、マージ済みPR #416の f212b0ccc50796c29c57f5e565a320d33e23a32d にfast-forwardし、開発アプリを再起動します。

    現在のCodex実行プロセスも旧アプリの子孫であるため、旧アプリ外のWMI側プロセスを親とするヘルパーを準備・起動プローブ済みです。ヘルパーはPID生成時刻/実行パスを照合して旧dev系だけを停止し、更新、新しい起動系譜/HTTP200/新しい実行ファイルと保存済み話題・会話再開IDを照合します。ユーザー設定・credentialsは編集しません。

    独立ヘルパー: D:/Users/hal/Codex_Luna/.artifacts/pullcept-416-runtime-update/launch-helper.ps1(本体 restart.ps1)。結果は同ディレクトリの status.json と各ログに保存し、ヘルパー自身がこのissueに成功/失敗を追記します。このコメント時点ではライブ停止前です。各席はアプリ再起動後に再接続が必要です。

    — Codex Luna

  7. lipluscodex commented on Oct 14, 2026

    @lipluscodex
    MemberAuthor

    Codex Luna: マスターの「更新ヨロ~」に基づき、Pullcept の実行環境を PR #416 の f212b0c に更新し、開発アプリを再起動しました。

    • 実行元: D:/Users/hal/Code/pullcept(main、f212b0ccc50796c29c57f5e565a320d33e23a32d)
    • 新しい Pullcept PID: 12976、Vite http://localhost:1420 は HTTP 200。新規ビルドの実行ファイル変更を確認しました。
    • 保存済み topic/native conversation IDs の一致を確認。ユーザー設定ファイルの一致: True。
    • 既存の席は再接続・再起動が必要です。席の自動復帰や各席の動作確認は完了条件に含めていません。
    • 実行記録: D:/Users/hal/Codex_Luna/.artifacts/pullcept-416-runtime-update/status.json(stdout/stderr・operations.log も同じディレクトリ)。

    — Codex Luna

  8. lipluscodex commented on Oct 15, 2026

    @lipluscodex
    MemberAuthor

    Codex Luna

    2026-10-15 18:29-18:32 JST、マスターの「進めて~」に基づきPR #416の席操作を実席で検証しました。対象はLay、話題IDは 4b6aadb8-6e8d-41ac-b999-e2c9486c78cc、会話IDは 3670e135-4d48-469f-a369-a206c2f4be1b。

    • 自己再起動 lay-selfrestart-20261015-1:依頼者Lay、旧PTY 215999e4-e289-4d48-bf69-b48b62e5523e → 新PTY 561a7937-1435-465c-9808-1cdeb2db1584。Lunaが操作照会のprocess_running/room_connected=trueと、一覧のresumed_from一致を確認。Lay本人が前の会話を保持して復帰したと報告。
    • 外部終了 lin-stop-lay-20261015-1:依頼者Lin、対象PTY 561a7937-1435-465c-9808-1cdeb2db1584。Lunaが結果stopped/error=nullを確認。停止直後に一覧からLayが消えたことはLinが観測して報告。これはPullceptの席/PTY状態の検証であり、OS上の全子プロセス消滅の検証ではない。
    • 外部開始 lin-start-lay-20261015-1:依頼者Lin、mode=resume、新PTY 2eecaaf4-1396-48b0-80ca-acd2e1fc3449。Lunaがprocess_running/room_connected=trueと一覧のresumed_from一致を確認。Lay本人も前の会話を保持して復帰したと報告。

    未解決の観測:Layは両resumeでSessionStartの出力を文脈内に確認できなかった(UserPromptSubmit出力はある)。フック未実行とは断定しない。Li+更新反映の確認とは別の成功軸で、起動経路・フック条件を調査中。

    マスターから自動通知が重複して見えるとの指摘。ソースでは受付と結果で同一の長い形式を2回投稿している。外部終了はaccepted_at 09:31:30.594Z、updated_at 09:31:30.603Z で9ms差。現時点では通知仕様を変更していない。

    — Codex Luna

  9. lipluscodex commented on Oct 15, 2026

    @lipluscodex
    MemberAuthor

    Codex Luna

    追加の実席診断(2026-10-15 18:40 JST)で、SessionStart自体の正常実行を確認しました。

    • Claude Code 2.1.300、helpで --debug-file 対応を確認。Layだけに診断オプションを一時追加し、一度だけrestartしました。
    • 操作 luna-debug-lay-resume-20261015-1。新PTY de96ba3b-7971-4003-be67-24ff268d7877、process_running/room_connected=true、error=null。会話ID 3670e135-4d48-469f-a369-a206c2f4be1b を保持して本人も復帰を報告。
    • ローカル診断ログ D:/Users/hal/Codex_Luna/.artifacts/pullcept-416-resume-debug/lay-resume.log:373 に、09:40:04.250Zの SessionStart:resume、期待するon-session-start.sh、status 0、3170msを記録。374行でstdoutをplain textとして処理、375行で成功とLi+出力(cold-start anchor、対象build、言語契約等)を確認。生ログはアップロードしません。
    • 一方、Layは今回もSessionStart出力をモデル文脈内に認識できず、既存会話JSONLのSessionStart attachmentも増えていないと報告。実行成功の証拠と、文脈取り込み/記録の証拠は分けます。「フックが未発火」とする見方は今回のログで棄却できますが、取り込み/記録側の原因は未特定です。
    • 起動設定はfinallyで元のバイト列へ戻し、親でも元のSHA256との一致を確認しました。ソース・hooksの変更はありません。

    UIとMCPは同じstart_session_with_policyとruntime_launch_argsへ収束し、MCP経路だけがSessionStartを抑止する差は今回のソース調査で見つかっていません。resume時にlast-cold-start-emit.jsonが更新されないことはスクリプトの正常な分岐であり、未実行の根拠にはなりません。

    参考: Claude Code公式hook reference は --resume のSessionStart対象と診断ログの読み方を説明しています。今回の結論は実機ログを根拠とし、現在の公式記述だけで手元バージョンの実際の挙動を断定していません。

    — Codex Luna

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancement新機能・改善要望ready本文が実装開始できる形まで収束している状態。ただし更新は継続可能review-pending実装フェーズ終了、orchestration (review / merge / close) 待ち

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions