課題 / 目的
OpenScreenのAI編集を、APIキーではなくユーザー自身のChatGPT/Codexサブスクリプション認証で利用できるようにする。OpenScreenから公式のcodex app-serverをバックグラウンド起動し、Codexアプリを別に開かなくても接続・編集できる体験を提供する。
利用者と成功状態
- 利用者: Codex CLIをインストール済み、または導入可能なOpenScreen利用者
- 成功状態: AI設定で「Codexで接続」を選び、必要な場合だけブラウザ認証を行った後、既存のチャット編集をCodex経由で実行できる
対象範囲
codexプロバイダーとcodex-app-server認証種別の追加
- Codex CLIの検出と
codex app-server --stdioのライフサイクル管理
- JSON-RPC初期化、
account/read、account/login/start、account/login/completed
- 認証URLを既定ブラウザで開く接続ボタンと接続状態表示
model/listによる利用可能モデル取得
- 既存のOpenScreen編集ツールをCodexの
dynamicToolsへ変換し、ツール呼び出し結果を既存ドキュメントへ適用
- アプリ終了時・切断時の子プロセス終了
- 英語・日本語を含む既存13ロケールの文言追加
- 単体・統合・UIテストとmacOSでの手動スモーク確認
対象外
- Codex認証ファイルやアクセストークンの直接読み取り・コピー・保存
- OpenAIのOAuth client IDをOpenScreenへ埋め込むこと
- Codex CLIの自動インストール
- GitHub Copilot連携
- WebSocket transport、リモートCodex、OpenScreen独自の認証サーバー
- merge、release、配布済みアプリの置換
完了条件
System Readiness Gate
- 永続化: 既存
llm-config.jsonにはプロバイダー・モデル選択のみ保存。認証情報はCodexが所有し、OpenScreenは保存しない
- データ正本: 動画プロジェクトは既存
AxcutDocument、会話は既存chat session、認証状態はcodex app-server account/read
- 認証: 必要。公式Codex CLIのChatGPTログインを
app-server経由で開始・確認する
- 認可: ローカル単一利用者。OpenScreen側のrole追加なし
- session: app-serverプロセスは必要時に遅延起動し、切断・終了時に停止
- secrets: OpenScreenはトークン値へ触れない
- answered / delegated / not-applicable: 必須項目は上記で確定
- unresolved: 0
- SYSTEM_READY: yes
- ユーザー最終確認: 2026-08-26「それで実装して」「公開forkの方がいい」
UI / Design Gate
- UI変更: あり
- モード: small-change
- 既存のProvider card / form / status pill / buttonをcanonical componentとして再利用
- 新しい画面・ナビゲーション・情報設計変更はないためFigmaを省略
- 必要state: CLI未検出 / 未ログイン / 認証中 / 接続済み / エラー
- unresolved: 0
- DESIGN_READY: yes
- 人間確認: 「Codexで接続」ボタンから必要時だけブラウザ認証する流れを2026-08-26に確認済み
実装計画
- Codex app-server clientとプロセス管理をテスト先行で追加する
- Provider registry、native bridge契約、サービスへCodex認証・モデル取得を追加する
- 既存Agent toolsをdynamic toolsへ接続し、chat serviceをCodex transportへ分岐する
- Provider settings UIと全ロケールを追加する
- 回帰・セキュリティ・実機スモークを実行する
- ナレッジログ、test-board、Draft PRを更新する
テスト / CI計画
- Unit: JSON-RPC framing、初期化、ログイン状態、認証完了、モデル一覧、終了処理
- Integration: fake app-server子プロセスを使った接続とdynamic tool round-trip
- UI: Codexカード、CLI未検出、接続中、接続済み、エラー表示
- Regression: 既存APIキープロバイダーのsnapshot/model/chat tests
- Security: auth file/tokenを読まないこと、URL scheme検証、子プロセス引数固定
- Manual E2E: macOS上で既存ログイン済みCodexを検出し、設定画面と1回の編集を確認。ログアウトや認証情報変更は行わない
Hard stops
- Draft PRは1件まで。merge / release / installは行わない
- Codex認証の変更・ログアウトは行わない
- 同じ原因で品質gateが2回失敗したら停止する
- 既存providerの互換性を壊す設計変更が必要なら停止して再確認する
ナレッジログ
- 2026-08-26: OpenScreenの既存設計文書が、ChatGPTサブスクリプションの正式な復帰経路として
codex app-serverを明記していることを確認した
- 2026-08-26: Codex CLI 0.149.1の生成TypeScript定義で
account/read、account/login/start、model/list、thread/start、turn/start、dynamicToolsを確認した
- 2026-08-26: Cursor Context ScoutはAPIキー未設定で利用できず、ローカル
rgと設計文書で関連箇所を特定した
Beads TODO
- Epic:
herdr-dyw
herdr-dyw.1 Codex app-serverクライアントの振る舞いをテストで定義する
herdr-dyw.2 Codex app-serverのプロセス管理とJSON-RPCクライアントを実装する
herdr-dyw.3 既存AI編集ツールをCodex dynamicToolsへ接続する
herdr-dyw.4 Codex接続UIとnative bridge契約を実装する
herdr-dyw.5 回帰・セキュリティ・実機スモークを検証する
herdr-dyw.6 ナレッジログとDraft PRを作成する
依存関係の追加はembedded Doltがstore is read-onlyを返したためIssueの実装計画を実行順の正本として継続する。Epicと子taskの作成自体は完了している。
課題 / 目的
OpenScreenのAI編集を、APIキーではなくユーザー自身のChatGPT/Codexサブスクリプション認証で利用できるようにする。OpenScreenから公式の
codex app-serverをバックグラウンド起動し、Codexアプリを別に開かなくても接続・編集できる体験を提供する。利用者と成功状態
対象範囲
codexプロバイダーとcodex-app-server認証種別の追加codex app-server --stdioのライフサイクル管理account/read、account/login/start、account/login/completedmodel/listによる利用可能モデル取得dynamicToolsへ変換し、ツール呼び出し結果を既存ドキュメントへ適用対象外
完了条件
account/login/startが返すURLをブラウザで開き、完了通知後に接続状態が更新されるSystem Readiness Gate
llm-config.jsonにはプロバイダー・モデル選択のみ保存。認証情報はCodexが所有し、OpenScreenは保存しないAxcutDocument、会話は既存chat session、認証状態はcodex app-server account/readapp-server経由で開始・確認するUI / Design Gate
実装計画
テスト / CI計画
Hard stops
ナレッジログ
codex app-serverを明記していることを確認したaccount/read、account/login/start、model/list、thread/start、turn/start、dynamicToolsを確認したrgと設計文書で関連箇所を特定したBeads TODO
herdr-dywherdr-dyw.1Codex app-serverクライアントの振る舞いをテストで定義するherdr-dyw.2Codex app-serverのプロセス管理とJSON-RPCクライアントを実装するherdr-dyw.3既存AI編集ツールをCodex dynamicToolsへ接続するherdr-dyw.4Codex接続UIとnative bridge契約を実装するherdr-dyw.5回帰・セキュリティ・実機スモークを検証するherdr-dyw.6ナレッジログとDraft PRを作成する依存関係の追加はembedded Doltが
store is read-onlyを返したためIssueの実装計画を実行順の正本として継続する。Epicと子taskの作成自体は完了している。