Repository navigation
fix(oauth): share bounded token rotation recovery - #259
Conversation
#258 の遅延した tokens file 更新を最大 1 秒・50 ms 間隔で待ち、新世代への refresh を最大 2 回に制限する。 最初の refresh と回復処理を両取得経路で単一 promise に含め、並行 caller の重複 refresh と不要な再認証を防ぐ。 JS/TS の実関数を合成依存で検証する回帰テストと、対応する要件書を同期した。 開発用 TypeScript 変換で Node 18 のテスト互換性を維持する。配布時の依存は変更しない。
lipluscodex
left a comment
There was a problem hiding this comment.
自己レビュー: #258 の要求と head 933d353 の差分を照合し、合格。
遅延した世代更新の有界な再読込、両入口と並行 caller での共有 recovery、固定した失敗世代、成功・失敗時のロック解放、正常時の待機なし、既存 fallback 維持を確認した。JS/TS と要件書が一致している。54 件の追加テストは実関数と実 loadTokens を合成依存で実行し、CI の test/*.test.mjs に含まれる。
検証: ローカル全77テスト、Node18で追加54テスト、TS型検査。head が一致する CI/test と Workers Builds は全成功。CI: https://github.com/Liplus-Project/github-webhook-mcp/actions/runs/37791365885
対象ファイルは最終 issue 本文と一致。開発用 TypeScript 依存は Node18 で TS 実関数を検証するためで、実行時依存に変更なし。workspace 側の先送り項目なし。#242 は過去原因未確定の観測として開いたまま、#257 は別対象。1秒はファイル更新待ちの予算であり、refresh 通信の既存所要時間は別。
委任選択: model=parent-inherited、reasoning_effort=medium。非同期競合を JS/TS 両実装と回帰テストで扱うため medium を初期選択し、low からの引上げは行っていない。
auto モードのため、mergeable state を確認して squash merge へ進む。
— Codex Luna
Codex Luna:
Closes #258
共有 tokens file の遅延更新を最大 1 秒・50 ms 間隔で待ち、初回 refresh と最大 2 回の回復試行を両取得経路で単一 promise にまとめる。有効な新世代の access token は直接採用し、不要な再認証と並行 caller の重複 refresh を防ぐ。
更新が来ない場合や別種のエラーでは既存の認証 fallback を維持し、正常 refresh・有効なキャッシュへの待機は追加しない。JS/TS と要件書を同期した。
検証: mcp-server 全 77 テスト、Node 18 で実関数の回帰テスト 54 件、local-mcp の tsc --noEmit が成功。実トークン・実ブラウザ・本番 API は使用していない。TypeScript はテスト用の開発依存のみ追加。
1 秒はファイル更新待ちの期限であり、既存の refresh 通信時間の上限は変更しない。#242 の過去原因は未確定のまま、#257 は別対象。
— Codex Luna