Skip to content

fix: meta.request.command を実行した CLI コマンド名でラベルする#13

Merged
daikiojm merged 1 commit into
mainfrom
claude/lucid-cray-kn16nu
Jul 14, 2026
Merged

fix: meta.request.command を実行した CLI コマンド名でラベルする#13
daikiojm merged 1 commit into
mainfrom
claude/lucid-cray-kn16nu

Conversation

@tjackiet

Copy link
Copy Markdown
Collaborator

withRequestContext がハンドラ実装ファイル名から command を導出していたため、 実装ファイルとコマンド名が一致しない登録でラベルがズレていた:

  • trade-history: --all 分岐の dispatcher が trade-history-all.ts に同居して いるため「trade-history-all」と表示されていた(実際の API 呼び出しは 単一ページの GET /user/spot/trade_history)
  • tickers-jpy: tickers.ts の tickersJpy を呼ぶため「tickers」と表示されていた

router が解決したコマンド名を RuntimeContext.command で handler() まで通し、 ラベルの単一ソースにする。ファイル名由来の導出は ctx なしの直接呼び出し
(テスト等)向けフォールバックとして残す。

Claude-Session: https://claude.ai/code/session_013A4pzw6Qda8ho6wSrXUTMX

概要

チェックリスト

  • 目的 / 変更概要を記載した
  • テストを追加・更新した
  • npx vitest run が green
  • npx tsc --noEmit が green
  • npx biome check cli/ が green
  • chaos 規約(cli/__tests__/chaos/conventions/)・1 ファイル 100 行目安を満たす
  • シークレット(API キー / secret 等)を含めていない(trade 変更時は .claude/rules/trading-safety.md を遵守)
  • 必要ならドキュメントを更新した

withRequestContext がハンドラ実装ファイル名から command を導出していたため、
実装ファイルとコマンド名が一致しない登録でラベルがズレていた:

- trade-history: --all 分岐の dispatcher が trade-history-all.ts に同居して
  いるため「trade-history-all」と表示されていた(実際の API 呼び出しは
  単一ページの GET /user/spot/trade_history)
- tickers-jpy: tickers.ts の tickersJpy を呼ぶため「tickers」と表示されていた

router が解決したコマンド名を RuntimeContext.command で handler() まで通し、
ラベルの単一ソースにする。ファイル名由来の導出は ctx なしの直接呼び出し
(テスト等)向けフォールバックとして残す。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013A4pzw6Qda8ho6wSrXUTMX
@tjackiet

Copy link
Copy Markdown
Collaborator Author

@daikiojm レビューをお願いします 🙏(お手すきのタイミングで大丈夫です)

この PR について

CLI 利用者からの報告を受けて調査・修正した軽微なバグフィックスです。

報告された事象

bitbank trade-history を実行すると、出力メタ情報の meta.request.command が実行コマンドと異なる trade-history-all と表示される。結果データ自体は正しく、実害は表示ラベルの食い違いのみ

原因

withRequestContextcli/commands/request-context.ts)がコマンド名をハンドラ実装ファイル名から導出していたため。trade-history--all 分岐の dispatcher が trade-history-all.ts に同居している(循環 import 回避のため)ので、ファイル名とコマンド名がズレていました。調査の過程で、同じ原因により tickers-jpytickers と誤表示されることを発見し、併せて修正しています。

修正内容(5 ファイル、+57/-5)

  • router が解決した CLI コマンド名を RuntimeContext.command として handler() まで伝搬し、ラベルの単一ソースに変更
  • ファイル名由来の導出は、ctx なしの直接呼び出し(テスト等)向けフォールバックとして残置
  • 回帰テスト 2 件を追加(trade-history / tickers-jpy のラベル検証)

検証

  • npm test 全 1345 件パス、typecheck / biome クリーン
  • fetch をモックした実 CLI の E2E で、trade-history / trade-history --all / trade-history-all / tickers-jpy の全パターンで「ユーザーが実行したコマンド名どおり」のラベルになることを確認

レビューポイント

  • RuntimeContext へのフィールド追加(credentials 用だったコンテキストにコマンド名を載せる設計)が許容範囲か
  • フォールバック(ファイル名由来)を残す判断で良いか

なお本修正は semver 的には patch 相当のため、マージ後は次のリリースタイミングで npm version patchdocs/dev/release.md の手順)に乗せる想定です。

@daikiojm daikiojm self-requested a review July 14, 2026 00:32
@daikiojm daikiojm merged commit b96bb33 into main Jul 14, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants