fix: レンジ指定で tool-cache を GitHub 解決より優先する#30
Conversation
version.ts に純粋関数 resolveFromCache を追加し、main.ts が tc.findAllVersions の結果を渡す。 レンジ + check-latest=false で合致キャッシュがあれば GitHub 解決をスキップし、GitHub 障害/レート 制限に強くする(FR-7/NFR-3/G1)。latest・exact・check-latest=true は従来どおりネットワーク解決。 Codex review 指摘1。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
📝 WalkthroughWalkthrough
Changesキャッシュ優先バージョン解決
Sequence Diagram(s)sequenceDiagram
participant run as run()
participant tc as tc.findAllVersions
participant rfc as resolveFromCache
participant rv as resolveVersion (withRetry)
run->>tc: findAllVersions(TOOL_NAME, arch)
tc-->>run: cachedVersions[]
run->>rfc: resolveFromCache(cachedVersions, versionSpec, checkLatest)
alt キャッシュで解決成功
rfc-->>run: resolvedVersion (string)
Note over run: "skipped network resolution" ログ
else キャッシュで未解決
rfc-->>run: undefined
run->>rv: withRetry(() => resolveVersion(...))
rv-->>run: resolvedVersion (string)
Note over run: "Resolved go-task version" ログ
end
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #30 +/- ##
==========================================
+ Coverage 65.62% 65.88% +0.25%
==========================================
Files 9 9
Lines 160 170 +10
Branches 44 50 +6
==========================================
+ Hits 105 112 +7
- Misses 48 51 +3
Partials 7 7 🚀 New features to boost your workflow:
|
概要
versionがレンジ(3.x等)かつcheck-latest=falseのとき、これまでtc.findより先にresolveVersion()で GitHub を叩いていた。合致版がキャッシュ済みでも GitHub 障害/レート制限で失敗しうる、かつ文書化されたcheck-latest=false(キャッシュ優先)の意味に反していた(Codex review 指摘1 / 要求仕様書 §6.1・NFR-3・G1)。変更
src/version.ts: 純粋関数resolveFromCache(cachedVersions, input, checkLatest)を追加。レンジ +check-latest=falseのとき合致する最大キャッシュ版を返し、それ以外(latest/*/exact/check-latest=true)はundefined(=従来どおりネットワーク解決)。src/main.ts:tc.findAllVersions()の結果をresolveFromCacheに渡し、合致キャッシュがあれば GitHub 解決をスキップ。無ければ従来のresolveVersion()にフォールバック。tests/version.test.ts:resolveFromCacheの回帰テスト(キャッシュ優先 / フォールバック /check-latest/latest・*・空 / exact)。dist/再ビルド。設計はプロジェクトの「
version.ts=純粋ロジック、IO はmain.ts」に沿い、tool-cache をモックせず単体テスト可能。テスト
npm run allgreen(47 tests)Closes #7
🤖 Generated with Claude Code
Summary by cubic
Prefer cached versions for range specs when
check-latest=false, skipping GitHub resolution to improve reliability and match documented cache-first behavior. This avoids failures during GitHub outages or rate limits when a matching version is already cached.resolveFromCache(cachedVersions, input, checkLatest)to return the highest cached version for ranges whencheck-latest=false; otherwise returnsundefined.src/main.tsto try cache first and only call GitHub when needed.latest,*, exact,check-latest=true).Written for commit f4561c8. Summary will update on new commits.