Skip to content

test: Phase 5 E2E統合テスト (#66)#73

Merged
Kewton merged 8 commits into
developfrom
feature/issue-66-e2e-tests
Mar 21, 2026
Merged

test: Phase 5 E2E統合テスト (#66)#73
Kewton merged 8 commits into
developfrom
feature/issue-66-e2e-tests

Conversation

@Kewton
Copy link
Copy Markdown
Owner

@Kewton Kewton commented Mar 21, 2026

Summary

  • Semantic Search・Hybrid・Rerankの統合テスト追加

Closes #66
🤖 Generated with Claude Code

Kewton and others added 8 commits March 22, 2026 01:03
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。
Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。

- --rerank フラグでCross-Encoderによる再順位付けを有効化
- --rerank-top で候補数を指定(CLI > config.toml > デフォルト20)
- RerankProvider トレイト + OllamaRerankProvider 実装
- Graceful Degradation(接続不可時は元結果返却+警告)
- 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字)
- --symbol, --related, --semantic との排他制約

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…2e-tests

# Conflicts:
#	src/cli/search.rs
#	src/main.rs
#	src/output/human.rs
@Kewton Kewton merged commit 42892dc into develop Mar 21, 2026
2 of 3 checks passed
@Kewton Kewton deleted the feature/issue-66-e2e-tests branch March 21, 2026 22:33
Kewton added a commit that referenced this pull request Mar 22, 2026
…65 #66) (#74)

* feat(cli): searchスニペット表示行数・文字数のCLIオプション追加 (#44) (#67)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61) (#68)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(indexer): Embeddingストレージ追加 (#62) (#69)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: Semantic Search実装 (#63) (#70)

* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: Hybrid Retrieval実装 (#64) (#71)

* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Hybrid Retrieval実装 (#64)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: Reranking実装 (#65) (#72)

* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Hybrid Retrieval実装 (#64)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Reranking実装 (#65)

ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。
Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。

- --rerank フラグでCross-Encoderによる再順位付けを有効化
- --rerank-top で候補数を指定(CLI > config.toml > デフォルト20)
- RerankProvider トレイト + OllamaRerankProvider 実装
- Graceful Degradation(接続不可時は元結果返却+警告)
- 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字)
- --symbol, --related, --semantic との排他制約

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: Phase 5 E2E統合テスト (#66) (#73)

* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Hybrid Retrieval実装 (#64)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Reranking実装 (#65)

ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。
Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。

- --rerank フラグでCross-Encoderによる再順位付けを有効化
- --rerank-top で候補数を指定(CLI > config.toml > デフォルト20)
- RerankProvider トレイト + OllamaRerankProvider 実装
- Graceful Degradation(接続不可時は元結果返却+警告)
- 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字)
- --symbol, --related, --semantic との排他制約

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: Phase 5 E2E統合テスト追加 (#66)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: cargo fmtによるフォーマット修正

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: Phase 4/5 UAT結果・オーケストレーション記録追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Kewton added a commit that referenced this pull request Mar 22, 2026
* feat(cli): searchスニペット表示行数・文字数のCLIオプション追加 (#44) (#67)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61) (#68)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(indexer): Embeddingストレージ追加 (#62) (#69)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: Semantic Search実装 (#63) (#70)

* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: Hybrid Retrieval実装 (#64) (#71)

* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Hybrid Retrieval実装 (#64)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: Reranking実装 (#65) (#72)

* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Hybrid Retrieval実装 (#64)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Reranking実装 (#65)

ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。
Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。

- --rerank フラグでCross-Encoderによる再順位付けを有効化
- --rerank-top で候補数を指定(CLI > config.toml > デフォルト20)
- RerankProvider トレイト + OllamaRerankProvider 実装
- Graceful Degradation(接続不可時は元結果返却+警告)
- 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字)
- --symbol, --related, --semantic との排他制約

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: Phase 5 E2E統合テスト (#66) (#73)

* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Hybrid Retrieval実装 (#64)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Reranking実装 (#65)

ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。
Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。

- --rerank フラグでCross-Encoderによる再順位付けを有効化
- --rerank-top で候補数を指定(CLI > config.toml > デフォルト20)
- RerankProvider トレイト + OllamaRerankProvider 実装
- Graceful Degradation(接続不可時は元結果返却+警告)
- 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字)
- --symbol, --related, --semantic との排他制約

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: Phase 5 E2E統合テスト追加 (#66)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: cargo fmtによるフォーマット修正

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: Phase 4/5 UAT結果・オーケストレーション記録追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: チーム共有設定ファイル実装 (#76) (#81)

* feat(config): チーム共有設定ファイル実装 (#76)

チームで共有可能な commandindex.toml をリポジトリルートに配置し、
インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。

主な変更:
- config モジュール新規作成(src/config/mod.rs)
- 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト
- フィールドレベルマージによる設定統合
- config show / config path CLIサブコマンド追加
- 既存 embedding::Config を config::load_config() に移行
- 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション
- 旧 .commandindex/config.toml の deprecated fallback 対応

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(config): Codexレビュー指摘対応 - 環境変数api_key表示と設定エラー警告 (#76)

- config show で環境変数 COMMANDINDEX_OPENAI_API_KEY も考慮してマスク表示
- main.rs の設定エラー時に警告メッセージを stderr に出力(握り潰し防止)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): statusコマンド拡張(--detail/--coverage/--format json) (#79) (#82)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: インデックス共有モード実装 (#77) (#83)

* feat(config): チーム共有設定ファイル実装 (#76)

チームで共有可能な commandindex.toml をリポジトリルートに配置し、
インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。

主な変更:
- config モジュール新規作成(src/config/mod.rs)
- 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト
- フィールドレベルマージによる設定統合
- config show / config path CLIサブコマンド追加
- 既存 embedding::Config を config::load_config() に移行
- 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション
- 旧 .commandindex/config.toml の deprecated fallback 対応

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): インデックス共有モード実装 (#77)

export/import サブコマンドと status --verify オプションを追加。
CI/CDパイプラインでインデックスを事前生成し、チーム共有可能に。

- commandindex export: tar.gz形式でインデックスをエクスポート
- commandindex import: tar.gzからインデックスをインポート(--force対応)
- commandindex status --verify: インデックス整合性チェック
- セキュリティ: パストラバーサル防止、シンボリックリンク拒否、圧縮爆弾対策
- 一時ディレクトリへの展開後にアトミックスワップ(データ保護)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: マルチリポジトリ横断検索実装 (#78) (#84)

* feat(config): チーム共有設定ファイル実装 (#76)

チームで共有可能な commandindex.toml をリポジトリルートに配置し、
インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。

主な変更:
- config モジュール新規作成(src/config/mod.rs)
- 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト
- フィールドレベルマージによる設定統合
- config show / config path CLIサブコマンド追加
- 既存 embedding::Config を config::load_config() に移行
- 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション
- 旧 .commandindex/config.toml の deprecated fallback 対応

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): マルチリポジトリ横断検索実装 (#78)

ワークスペース設定ファイルによる複数リポジトリの横断検索機能を実装。
--workspace/--repo CLIオプション、SearchContext導入、rrf_merge_multiple
汎用化、WorkspaceSearchResult compositionパターンを採用。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: Phase 6 E2E統合テスト (#80) (#85)

* feat(cli): statusコマンド拡張(--detail/--coverage/--format json) (#79)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(config): チーム共有設定ファイル実装 (#76)

チームで共有可能な commandindex.toml をリポジトリルートに配置し、
インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。

主な変更:
- config モジュール新規作成(src/config/mod.rs)
- 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト
- フィールドレベルマージによる設定統合
- config show / config path CLIサブコマンド追加
- 既存 embedding::Config を config::load_config() に移行
- 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション
- 旧 .commandindex/config.toml の deprecated fallback 対応

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(config): Codexレビュー指摘対応 - 環境変数api_key表示と設定エラー警告 (#76)

- config show で環境変数 COMMANDINDEX_OPENAI_API_KEY も考慮してマスク表示
- main.rs の設定エラー時に警告メッセージを stderr に出力(握り潰し防止)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): インデックス共有モード実装 (#77)

export/import サブコマンドと status --verify オプションを追加。
CI/CDパイプラインでインデックスを事前生成し、チーム共有可能に。

- commandindex export: tar.gz形式でインデックスをエクスポート
- commandindex import: tar.gzからインデックスをインポート(--force対応)
- commandindex status --verify: インデックス整合性チェック
- セキュリティ: パストラバーサル防止、シンボリックリンク拒否、圧縮爆弾対策
- 一時ディレクトリへの展開後にアトミックスワップ(データ保護)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: Phase 6 E2E統合テスト追加 (#80)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: cargo fmtによるフォーマット修正

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: Phase 6 UAT結果・オーケストレーション記録追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Kewton added a commit that referenced this pull request Mar 23, 2026
* feat(cli): searchスニペット表示行数・文字数のCLIオプション追加 (#44) (#67)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61) (#68)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(indexer): Embeddingストレージ追加 (#62) (#69)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: Semantic Search実装 (#63) (#70)

* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: Hybrid Retrieval実装 (#64) (#71)

* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Hybrid Retrieval実装 (#64)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: Reranking実装 (#65) (#72)

* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Hybrid Retrieval実装 (#64)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Reranking実装 (#65)

ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。
Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。

- --rerank フラグでCross-Encoderによる再順位付けを有効化
- --rerank-top で候補数を指定(CLI > config.toml > デフォルト20)
- RerankProvider トレイト + OllamaRerankProvider 実装
- Graceful Degradation(接続不可時は元結果返却+警告)
- 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字)
- --symbol, --related, --semantic との排他制約

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: Phase 5 E2E統合テスト (#66) (#73)

* feat(indexer): Embeddingストレージ追加 (#62)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(embedding): Embedding生成基盤追加 (#61)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Semantic Search実装 (#63)

`commandindex search --semantic <query>` オプションを追加し、
Embeddingベースの意味検索機能を実装。

- CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他)
- run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力
- enrich_with_metadata(): file_pathグルーピング+section_heading照合
- apply_semantic_filters(): tag/path/typeポストフィルタ
- SemanticSearchResult構造体+human/json/path出力対応
- SearchErrorにEmbedding/NoEmbeddingsバリアント追加
- SymbolStoreにcount_embeddings()追加
- matches_file_type() pub(crate)化でDRY
- CLIテスト5件追加(排他制御+受付)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Hybrid Retrieval実装 (#64)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): Reranking実装 (#65)

ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。
Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。

- --rerank フラグでCross-Encoderによる再順位付けを有効化
- --rerank-top で候補数を指定(CLI > config.toml > デフォルト20)
- RerankProvider トレイト + OllamaRerankProvider 実装
- Graceful Degradation(接続不可時は元結果返却+警告)
- 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字)
- --symbol, --related, --semantic との排他制約

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: Phase 5 E2E統合テスト追加 (#66)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: cargo fmtによるフォーマット修正

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: Phase 4/5 UAT結果・オーケストレーション記録追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: チーム共有設定ファイル実装 (#76) (#81)

* feat(config): チーム共有設定ファイル実装 (#76)

チームで共有可能な commandindex.toml をリポジトリルートに配置し、
インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。

主な変更:
- config モジュール新規作成(src/config/mod.rs)
- 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト
- フィールドレベルマージによる設定統合
- config show / config path CLIサブコマンド追加
- 既存 embedding::Config を config::load_config() に移行
- 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション
- 旧 .commandindex/config.toml の deprecated fallback 対応

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(config): Codexレビュー指摘対応 - 環境変数api_key表示と設定エラー警告 (#76)

- config show で環境変数 COMMANDINDEX_OPENAI_API_KEY も考慮してマスク表示
- main.rs の設定エラー時に警告メッセージを stderr に出力(握り潰し防止)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): statusコマンド拡張(--detail/--coverage/--format json) (#79) (#82)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: インデックス共有モード実装 (#77) (#83)

* feat(config): チーム共有設定ファイル実装 (#76)

チームで共有可能な commandindex.toml をリポジトリルートに配置し、
インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。

主な変更:
- config モジュール新規作成(src/config/mod.rs)
- 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト
- フィールドレベルマージによる設定統合
- config show / config path CLIサブコマンド追加
- 既存 embedding::Config を config::load_config() に移行
- 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション
- 旧 .commandindex/config.toml の deprecated fallback 対応

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): インデックス共有モード実装 (#77)

export/import サブコマンドと status --verify オプションを追加。
CI/CDパイプラインでインデックスを事前生成し、チーム共有可能に。

- commandindex export: tar.gz形式でインデックスをエクスポート
- commandindex import: tar.gzからインデックスをインポート(--force対応)
- commandindex status --verify: インデックス整合性チェック
- セキュリティ: パストラバーサル防止、シンボリックリンク拒否、圧縮爆弾対策
- 一時ディレクトリへの展開後にアトミックスワップ(データ保護)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: マルチリポジトリ横断検索実装 (#78) (#84)

* feat(config): チーム共有設定ファイル実装 (#76)

チームで共有可能な commandindex.toml をリポジトリルートに配置し、
インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。

主な変更:
- config モジュール新規作成(src/config/mod.rs)
- 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト
- フィールドレベルマージによる設定統合
- config show / config path CLIサブコマンド追加
- 既存 embedding::Config を config::load_config() に移行
- 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション
- 旧 .commandindex/config.toml の deprecated fallback 対応

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): マルチリポジトリ横断検索実装 (#78)

ワークスペース設定ファイルによる複数リポジトリの横断検索機能を実装。
--workspace/--repo CLIオプション、SearchContext導入、rrf_merge_multiple
汎用化、WorkspaceSearchResult compositionパターンを採用。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: Phase 6 E2E統合テスト (#80) (#85)

* feat(cli): statusコマンド拡張(--detail/--coverage/--format json) (#79)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(config): チーム共有設定ファイル実装 (#76)

チームで共有可能な commandindex.toml をリポジトリルートに配置し、
インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。

主な変更:
- config モジュール新規作成(src/config/mod.rs)
- 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト
- フィールドレベルマージによる設定統合
- config show / config path CLIサブコマンド追加
- 既存 embedding::Config を config::load_config() に移行
- 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション
- 旧 .commandindex/config.toml の deprecated fallback 対応

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(config): Codexレビュー指摘対応 - 環境変数api_key表示と設定エラー警告 (#76)

- config show で環境変数 COMMANDINDEX_OPENAI_API_KEY も考慮してマスク表示
- main.rs の設定エラー時に警告メッセージを stderr に出力(握り潰し防止)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): インデックス共有モード実装 (#77)

export/import サブコマンドと status --verify オプションを追加。
CI/CDパイプラインでインデックスを事前生成し、チーム共有可能に。

- commandindex export: tar.gz形式でインデックスをエクスポート
- commandindex import: tar.gzからインデックスをインポート(--force対応)
- commandindex status --verify: インデックス整合性チェック
- セキュリティ: パストラバーサル防止、シンボリックリンク拒否、圧縮爆弾対策
- 一時ディレクトリへの展開後にアトミックスワップ(データ保護)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: Phase 6 E2E統合テスト追加 (#80)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: cargo fmtによるフォーマット修正

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: Phase 6 UAT結果・オーケストレーション記録追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): --related 複数ファイル対応 (#87) (#95)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): diff サブコマンド実装 (#92) (#98)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): --index-path オプション実装 (#88) (#96)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(watch): add file change monitoring with auto-update (#93) (#94)

Add `commandindex watch` subcommand that monitors filesystem changes
and automatically runs incremental index updates with debouncing.

- notify crate for cross-platform FS event monitoring
- Debouncer with configurable interval and starvation prevention
- Extension filtering (md/ts/tsx/py) and .commandindex/ exclusion
- Graceful shutdown via ctrlc + AtomicBool
- Recoverable/fatal error classification for resilient operation
- Watcher error propagation and overflow-safe max_wait calculation
- 29 unit tests + 4 CLI parse tests, all existing tests unaffected

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): stdin パイプ入力対応 (#89) (#97)

- impact サブコマンド新規追加(stdin/引数からファイルリスト入力、関連ファイル集約分析)
- search --related-stdin オプション追加(stdin からの複数ファイル関連検索)
- cli/stdin.rs 共通ユーティリティ(TTY検出、パスバリデーション、正規化、重複排除)
- human/json/path 3形式の出力サポート
- エッジケース対応(TTYエラー、空stdin、不正パス warning)
- E2Eテスト・CLI排他テスト・出力フォーマットテスト追加

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: impact サブコマンド実装 (#90) (#99)

* feat(search): --related 複数ファイル対応 (#87)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): stdin パイプ入力対応 (#89)

- impact サブコマンド新規追加(stdin/引数からファイルリスト入力、関連ファイル集約分析)
- search --related-stdin オプション追加(stdin からの複数ファイル関連検索)
- cli/stdin.rs 共通ユーティリティ(TTY検出、パスバリデーション、正規化、重複排除)
- human/json/path 3形式の出力サポート
- エッジケース対応(TTYエラー、空stdin、不正パス warning)
- E2Eテスト・CLI排他テスト・出力フォーマットテスト追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): impact サブコマンド実装 (#90)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: --changed-since オプション実装 (#91) (#100)

* feat(search): --related 複数ファイル対応 (#87)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): stdin パイプ入力対応 (#89)

- impact サブコマンド新規追加(stdin/引数からファイルリスト入力、関連ファイル集約分析)
- search --related-stdin オプション追加(stdin からの複数ファイル関連検索)
- cli/stdin.rs 共通ユーティリティ(TTY検出、パスバリデーション、正規化、重複排除)
- human/json/path 3形式の出力サポート
- エッジケース対応(TTYエラー、空stdin、不正パス warning)
- E2Eテスト・CLI排他テスト・出力フォーマットテスト追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(cli): impact サブコマンド実装 (#90)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(search): --changed-since オプション実装 (#91)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(cli): impact/diff/changed-since/related-stdinのインデックスパス検出修正

impact, diff, --changed-since, --related-stdin がハードコードの
Path::new(".") を使用していたため、テスト環境やサブディレクトリから
実行した際にインデックスが見つからないバグを修正。

resolve_index_path() を使用して config/CLI/デフォルトの優先順位で
インデックスパスを解決するように統一。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: v0.1.0シナリオ分析・UAT結果・オーケストレーション記録追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (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