app server 0 162 1_ja - kkamegawa/vsextensionforcodex GitHub Wiki
拡張機能の 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 として残します。設定した方式と確認できた状態は分けて表示します。
- contract 基準(#199): 0.162.1 を検証してインストールし、schema キャッシュを生成する。target/regression、既知差分、
config/readを更新する。 - MXC(#200):
WindowsSandboxBackendPreference、ContractVersions.Current23 → 24、設定の永続化、起動 override、config/readによる診断、sandbox UI、Fake App Server シナリオ。 - goal origin と OAuth(#201): すべてのユーザー経路での origin、フォールバック付きの
loginId照合、あり・なし・不一致・先行・接続切替後の Fake シナリオ。 - 受信側(#202):
partial_answer、不透明な skill path、supportsIndependentSpeedModes、エラー・系譜・sub-agent の受信テスト。 - 検証と文書(#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 検証だけでは完了としない。