Skip to content

refactor(mcp): issue/memory の filter Args を flatten で一本化する#329

Merged
kkyosuke merged 1 commit into
mainfrom
refactor/mcp-cli-json-ssot
Jun 24, 2026
Merged

refactor(mcp): issue/memory の filter Args を flatten で一本化する#329
kkyosuke merged 1 commit into
mainfrom
refactor/mcp-cli-json-ssot

Conversation

@kkyosuke

Copy link
Copy Markdown
Owner

目的

issue #46 / #60 の残件を解消する。

補足: #46 / #60 が指摘していた多くの重複は、レビュー修正の過程で既に解消済みでした。

  • parse_args / to_pretty の 3 コピー → presentation/mcp/mod.rs に各 1 本へ集約済み。
  • issue/memory の JSON 出力整形の二系統 → usecaseIssueView / ListedIssueView(memory も同様)を CLI/MCP 双方が serde_json で消費する SSoT 化済み。
  • stdio serve ループの重複(cli/mcp.rscli/llm_mcp.rs)→ McpService trait+共通 serve ヘルパに統合済み。

本 PR は唯一残っていた filter Args の二重定義を仕上げる。

変更内容

MCP の list / search が同じ filter フィールド集合を別々の Args 構造体で二重定義し、filter(self)filter(&self)(clone 込み)の非対称も抱えていた。search#[serde(flatten)] で filter Args を取り込む形に変え、filter フィールドと IssueFilter / MemoryFilter への変換を 1 箇所に統一する。

  • issue: ListArgsFilterArgs に改名し、SearchArgs{ query, #[serde(flatten)] filter: FilterArgs }
  • memory: SearchArgs{ query, #[serde(flatten)] filter: FilterArgs }
  • search ハンドラは destructure して借用/ムーブの非対称を解消。

テスト・確認方法

  • cargo fmt / cargo clippy --all-targets -- -D warnings / cargo test 全て通過。
  • MCP の issue/memory の list/search の入出力は従来どおり(flatten により JSON 受理形も不変)。カバレッジ 100% 維持。

Closes #46
Closes #60

🤖 Generated with Claude Code

MCP の list / search が同じ filter フィールド集合を別々の Args 構造体で
二重定義し、`filter(self)` と `filter(&self)`(clone 込み)の非対称も
抱えていた。search を `#[serde(flatten)]` で filter Args を取り込む形に
変え、filter フィールドとその IssueFilter / MemoryFilter への変換を
1 箇所に統一する。

- issue: ListArgs を FilterArgs に改名し、SearchArgs は
  `{ query, #[serde(flatten)] filter: FilterArgs }` に。
- memory: SearchArgs を `{ query, #[serde(flatten)] filter: FilterArgs }` に。
- search ハンドラは destructure して借用/ムーブの非対称を解消。

なお #46 / #60 が指摘していた他の重複(parse_args / to_pretty の 3 コピー、
issue/memory の JSON 出力整形の二系統、stdio serve ループの重複)は、
レビュー修正の過程で既に解消済み(parse_args / to_pretty は
presentation/mcp/mod.rs に集約、JSON 出力は usecase の IssueView /
ListedIssueView を CLI/MCP 双方が消費、serve は McpService + 共通
serve ヘルパに統合)。本 PR はその残件を仕上げる。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

📊 Test Coverage

🚀 いまのカバレッジ (Lines): 100.00% — この調子でいこう!

🎉✨ パーフェクト!全ファイル Lines カバレッジ 100% を達成しました 🏆🐰

@kkyosuke kkyosuke merged commit 64ed943 into main Jun 24, 2026
3 checks passed
@kkyosuke kkyosuke deleted the refactor/mcp-cli-json-ssot branch June 24, 2026 23:22
@kkyosuke kkyosuke mentioned this pull request Jun 25, 2026
kkyosuke added a commit that referenced this pull request Jun 25, 2026
## 目的

`1.2.0` → `1.2.1` のリリース。`Cargo.toml` の version を上げ、マージ時に
`auto-release.yml` がタグ `v1.2.1` とリリースを自動生成する。

## 変更内容

- `Cargo.toml` / `Cargo.lock` の version を `1.2.0` → `1.2.1` に更新。

### このリリースに含まれる変更(v1.2.0 以降)

- fix: コードレビュー指摘の修正(堅牢性・前方互換・セキュリティ) (#333)
- feat(tui): 在席で agent を指定して起動できるようにする (#334)
- refactor(session): 表示ラベル解決を presentation へ寄せ、new の Mode キーを統合する (#332)
- refactor(infra,usecase): version envelope と設定セッターのボイラープレートを削減する (#330)
- refactor(mcp): issue/memory の filter Args を flatten で一本化する (#329)
- refactor(agent): program 名を AgentCli::command に一本化する (#328)
- feat(tui): コマンド引数(サブコマンド・オプション)も Tab 補完する (#331)
- refactor(tui): widgets から rabbit アセットを分離する (#323)
- fix: コードレビュー指摘の修正(並行性・前方互換・堅牢性) (#327)
- feat(error-log): 静かに握りつぶされる本物の失敗をログに記録 (#325)
- fix: アップデート告知と更新後メッセージの文言を変更 (#324)

## テスト・確認方法

- version のみの変更。`release-build-check.yml` が 4 プラットフォームのリリースビルドを検証する。
- マージ後、`auto-release.yml` → `release.yml` でタグ `v1.2.1` と GitHub Release
が自動生成される。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

1 participant