app server 0 162 1_ja - kkamegawa/vsextensionforcodex GitHub Wiki

Codex App Server 0.162.1 対応と MXC バックエンド選択

English

概要

拡張機能の codex app-server 連携を 0.159.1 contract から Codex CLI 0.162.1 に更新し、ローカル App Server の Windows sandbox バックエンドとして MXC を明示的に選択できるようにします。リモート App Server が旧版のまま動作している可能性があるため、0.159.1 を regression 対象として維持します。

追跡

種別 Issue
親 Issue #198
子 Issue #199: contract 基準
子 Issue #200: MXC バックエンド設定
子 Issue #201: goal origin と MCP OAuth loginId
子 Issue #202: 受信側ペイロード変更
子 Issue #203: 統合検証と文書

関連する完了済み作業: Issue #149、Issue #156。

背景

現行の app-server-contract.json は target 0.159.1、regression 0.155.1 です。Codex CLI 0.162.1 では App Server protocol に次の変更があります。goal の origin、MCP OAuth の loginId、MessagePhase.partial_answer、skill path 型の変更、CodexErrorInfo の拡張、turn の系譜、MXC と管理ポリシーの整合強化です。MXC 自体は 0.159.1 にも存在し、0.162.1 では明示指定と自動選択の両方が管理ポリシーにより厳密に従うようになりました。

設計

# レビュー指摘 決定
R1 #149・#156 は CLOSED 新しい親 Issue と子 Issue を作成し、#149・#156 を参照する
R2 元の差分ファイルがこのマシンに存在しない schemas/0.162.1/ を再生成し、compare-schemas.ps1 で差分を再現する
R3 旧サーバーとの互換性が未定義 0.159.1 サーバーが origin・loginId を無視・欠落させても動作することを検証する。regression は 0.159.1
R4 origin は 4 経路から送信され、schema 上は任意項目(「省略時はユーザー承認とみなさない」) Set/Edit、Pause/Resume、Clear、Goal Stop はすべて origin: "user" を送る。thread/goal/updated は origin を持たない
R5 MCP OAuth 完了はサーバー名だけで照合している 応答の loginId を保持し、完全一致した場合だけ完了とする。loginId が無い場合だけサーバー名照合にフォールバックする
R6 message phase は未対応。turn 完了は turn/completed で判定 upstream は途中回答・commentary・最終回答を、それぞれ独自のテキストを持つ別 item として送るため、ライブ表示と履歴で各 1 回表示される。Phase の契約フィールドは不要。テストで確認する
R7 skill path は識別子としてのみ使用 NormalizeSkillPath の絶対パス要件を外す。空・長さ・制御文字の検査は維持する
R8 CodexErrorInfo は既に寛容に読み取っている テストのみ追加する
R9 代理・委譲の経路も sub-agent DTO も存在しない parentTurnId/rootTurnId は送信しない。受信テストのみ
R10 supportsIndependentSpeedModes はモデルではなく configRequirements/read の項目 拡張は管理要件による速度制限を適用しないため、ADR-018 に記録し、コードは変更しない
R11 現在 -c override を渡していない。.cmd/.bat は cmd /d /s /c を経由 0.162.1 で -c override が有効なことを確認した。両方の起動経路で features.prefer_mxc=true または windows.sandbox=mxc(クォート不要の TOML 文字列)を渡す
R12 管理ポリシー(allowedWindowsSandboxImplementations、network.allowLocalBinding)は config/read ではなく configRequirements/read にある 両方を使う。config/read で実効値を、configRequirements/read でポリシーを読む。読めない場合は「不明」と表示する

MXC の選択肢は「Codex 設定に従う」「MXC 優先」(features.prefer_mxc=true)「MXC 必須」(windows.sandbox="mxc")です。ローカル stdio のみに適用し、次回のローカル App Server 起動で反映します。拡張機能は管理ポリシーを緩めず、失敗したコマンドを legacy backend で再実行しません。windowsSandbox/setupStart(elevated/unelevated)は legacy setup として残します。設定した方式と確認できた状態は分けて表示します。

実装フェーズ

  1. contract 基準(#199): 0.162.1 を検証してインストールし、schema キャッシュを生成する。target/regression、既知差分、config/read を更新する。
  2. MXC(#200): WindowsSandboxBackendPreference、ContractVersions.Current 23 → 24、設定の永続化、起動 override、config/read による診断、sandbox UI、Fake App Server シナリオ。
  3. goal origin と OAuth(#201): すべてのユーザー経路での origin、フォールバック付きの loginId 照合、あり・なし・不一致・先行・接続切替後の Fake シナリオ。
  4. 受信側(#202): partial_answer、不透明な skill path、supportsIndependentSpeedModes、エラー・系譜・sub-agent の受信テスト。
  5. 検証と文書(#203): ビルド、テスト、両バージョンでの smoke、VSIX 検査、実機での MXC 受入、Visual Studio のスクリーンショット、英日の README・セットアップガイド・設計・計画・ADR-018・作業記録。

検証

  • schema 比較と contract surface のスクリプトが成功し、0.162.1 と 0.159.1 の smoke が成功する。
  • Core/UI テストで、origin の全経路、loginId の規則、途中回答の二重表示がないこと、未知の CodexErrorInfo、相対・レガシーの skill path、MXC 起動引数(直接起動と cmd 経由)、リモート profile に override が付かないことを確認する。
  • VSIX 内容検査が成功し、実機での MXC 受入(対応・非対応環境、ポリシー拒否、filesystem、ネットワークと loopback、PowerShell、キャンセル、再起動)と Visual Studio のスクリーンショット(Light、Dark、High Contrast、狭い幅、キーボード)を記録する。schema 検証だけでは完了としない。
⚠️ **GitHub.com Fallback** ⚠️