Skip to content

Latest commit

 

History

History
190 lines (134 loc) · 17.4 KB

File metadata and controls

190 lines (134 loc) · 17.4 KB

CHANGELOG

v1.0.1 - 2025-08-20

🐛 バグ修正

  • ストリーミング応答時のパニック: --stream オプション使用時に発生していた「panic: close of closed channel」エラーを修正しました。sync.Onceを使用して responseChan が一度だけクローズされるようにしました。

v1.0.0 - 2025-08-12

✨ 機能

  • 設定ファイルパスオプション: デフォルトの場所を上書きする、設定ファイルへのパスを指定するためのグローバルな --config (-c) フラグを導入しました。
  • 設定検証を伴うプロファイルチェックコマンドの強化: llm-cli profile check コマンドが、プロバイダー固有の設定検証を実行するようになりました。
    • 新しい llm.ConfigValidator インターフェースを導入し、各LLMプロバイダーが実装しています。
    • 各プロバイダーの ValidateConfig() メソッドは、必須設定(例: modelapi-keyaws-regionproject-idcredentials-file)とその有効性をチェックします。
    • check コマンドは詳細な検証エラーを報告するようになり、ユーザーが設定ミスを早期に特定し修正するのに役立ちます。

♻️ リファクタリング

  • クレデンシャルファイルパスの解決: config.json ファイルの場所に対する相対パスで credentials-file パスを解決し、~(チルダ)をユーザーのホームディレクトリに展開するロジックを実装しました。これにより、現在の作業ディレクトリに関係なく正しいパス解決が保証されます。
  • プロバイダー設定検証インターフェース: llm.ConfigValidator インターフェースを定義し、すべてのLLMプロバイダー(ollamaopenaiopenai2bedrockvertexaivertexai2mock)で ValidateConfig() メソッドを実装し、設定検証ロジックを一元化および標準化しました。

v0.0.12 - 2025-08-08

✨ 機能

  • 高度なOpenAI互換プロバイダー (openai2): OpenAI互換API(特にLM Studio)向けに、動的で柔軟なモデル解決機能を持つ新しい openai2 プロバイダーを導入しました。
    • model 設定に、優先順位を指定するカンマ区切りのリスト(例: "my-model,auto")を使用できます。
    • プロバイダーはサーバーの /v1/models エンドポイントをクエリし、優先順位リストに一致する最初の利用可能なモデルを使用します。これにより、プロファイルを頻繁に編集する必要がなくなり、ワークフローが簡素化されます。

♻️ リファクタリング

  • プロバイダーのパッケージ分離: internal/llm パッケージを、各プロバイダーが自己完結したサブパッケージ(例: internal/llm/openai)に配置されるように再構築しました。この大規模なリファクタリングにより、厳格なモジュールの独立性が確保され、保守性が大幅に向上し、堅牢なユニットテストへの道が開かれました。

v0.0.11 - 2025-08-08

✨ 機能

  • Vertex AI プロバイダーの強化 (vertexai2): Vertex AI SDKがネイティブでシステムプロンプトをサポートしていない問題に対する、より堅牢なワークアラウンドを提供する新しい vertexai2 プロバイダーを追加しました。このプロバイダーは、チャット履歴の最初のターンとしてシステムプロンプトを注入することで会話のコンテキストを事前設定し、より一貫したモデルの振る舞いを実現します。

v0.0.10 - 2025-08-05

⬆️ 依存関係の更新

  • パフォーマンスとセキュリティを向上させるため、様々なGoモジュールを最新バージョンに更新しました。

🗑️ 削除

  • Zsh補完スクリプトのインストール: 環境固有の問題により、make install 時のZsh補完スクリプトの自動インストールを削除しました。ユーザーは llm-cli completion zsh を使用して手動でスクリプトを生成できます。

v0.0.9 - 2025-08-03

✨ 機能

  • OpenAI APIキーファイル対応: credentials-file で指定されたJSONファイルからOpenAI APIキーを読み込む機能を追加しました。
    • JSONファイルには openai_api_key フィールドにAPIキーが含まれている必要があります。
    • credentials-file はプロファイルに直接設定された api_key よりも優先されます。
  • プロファイルチェックコマンドの強化: llm-cli profile check コマンドが、プロファイルで指定されたクレデンシャルファイルの存在を検証するようになりました。
    • 指定されたクレデンシャルファイルが存在しない、または解決できない場合に警告を表示します。

🐛 バグ修正

  • プロファイルチェックロジックの修正: llm-cli profile check コマンドが、標準のデフォルト値と既に一致している場合でも「limits」設定の更新を不必要に促す問題を修正しました。
    • コマンドは、「limits」がゼロ値であるか、標準のデフォルト値と意味的に異なる場合にのみ更新を促すようになりました。
  • ビルド修正: cmd/root.go の未使用インポートを解決し、ビルド時の govulncheck エラーを修正しました。

📝 ドキュメント

  • READMEの更新: ~ (チルダ) パス表記を明確にし、OpenAI APIキーファイル対応の使用例を README.md および README.ja.md に追加しました。

♻️ リファクタリング

  • エラーハンドリング: main.go および cmd/root.go でエラーハンドリングを一元化し、一貫したエラー処理と終了コードを実現しました。

v0.0.8 - 2025-08-03

✨ 機能

  • プロファイルチェックコマンド: 設定プロファイルの検証と移行を行う llm-cli profile check コマンドを追加しました。
    • 特に「limits」のような新しく導入された設定について、すべてのプロファイルの一貫性をチェックします。
    • デフォルトまたは未設定の「limits」設定を持つプロファイルを、標準のデフォルト値に更新するかどうかをユーザーに確認します。
    • 非対話型操作のための --confirm または -y フラグを含みます。
    • 変更を保存する前に、config.json ファイルのタイムスタンプ付きバックアップを ~/.config/llm-cli/backups/ ディレクトリに作成し、データの安全性を確保します。
    • profile show コマンドを拡張し、「limits」情報を表示するようにしました。

🐛 バグ修正

  • DoS防御機能の強化: DoS防御とUTF-8の安全性に関する残りの問題を修正しました。
    • readAndProcessStream を修正し、「warn」モードであっても MaxPromptSizeBytes の制限に達した時点で入力の読み込みを停止するようにしました。これにより、大きなファイルが完全にメモリにロードされるのを防ぎます。
    • truncateStringByBytes をUTF-8対応に更新し、サイズ制限のための文字列切り詰めがマルチバイト文字を破損させないようにしました。
  • 設定読み込みの一貫性: 設定ファイルをロードする際に、Limits 構造体が明示的に設定ファイルに存在しない場合でも、常にデフォルト値で初期化されるようにしました。これにより、すべてのプロファイルで一貫した動作が保証されます。

v0.0.7 - 2025-08-03

✨ 機能

  • サイズ制限によるDoS防御: 偶発的なリソース枯渇を防ぐため、設定可能な入力および出力サイズ制限を実装しました。
    • config.json のプロファイルに新しい limits オブジェクトを追加しました。
    • prompt コマンドは、これらの制限をチェックし、超過時の動作 (stop または warn) を設定できるようになりました。
    • add コマンドは、新しいプロファイルに対してフラグ (--limits-max-prompt-size-bytes など) を介して制限を設定できるようになりました。
    • set コマンドは、ドット表記 (limits.on_input_exceeded など) を使用して制限を設定できるようになりました。
    • list コマンドは、各プロファイルの設定された制限を表示するようになりました。
  • スピナーによるUX改善: --stream モードを使用しない場合に、長時間実行される操作中に視覚的なフィードバックを提供するため、prompt コマンドにスピナーを追加しました。スピナーは対話型ターミナルでのみ表示されます。

🐛 バグ修正

  • CLIの動作: ランタイムエラー(APIエラーなど)発生時に自動的に使用方法の表示を抑制し、よりクリーンなエラー出力を提供するようにしました。

♻️ リファクタリング

  • プロファイルコマンドのテスト容易性向上: profile サブコマンド (add, set, use, remove) をリファクタリングし、os.Exit を呼び出す代わりにエラーを返すようにしました。これにより、テストが可能になり、テストの信頼性が向上しました。

v0.0.6 - 2025-08-02

✨ 機能

  • 脆弱性チェックの統合: Makefilegovulncheck を追加し、ビルドプロセスに統合することで、既知の脆弱性を自動的にスキャンするようにしました。
  • macOS アドホック署名: ビルドマシン以外のマシンでも実行できるように、Makefile で macOS ユニバーサルバイナリにアドホック署名を実装しました。

🐛 バグ修正

  • ビルド修正: cmd/list.goos パッケージのインポート文で引用符が欠落していた構文エラーを修正し、継続的な「missing import path」ビルドエラーを解決しました。

🔒 セキュリティ

  • 設定ファイルのパーミッション強化: ~/.config/llm-cli/config.json のファイルパーミッションをより厳格なもの (0644 から 0600 へ) に、その親ディレクトリのパーミッションも同様に強化 (0755 から 0700 へ) し、APIキーなどの機密情報のセキュリティを向上させました。

v0.0.5 - 2025-08-02

✨ Features

  • Google Cloud Vertex AI プロバイダーのサポート: Vertex AI との対話に対応しました。
  • profile add コマンドの機能拡張: profile add コマンドで、プロバイダー、モデル、エンドポイント、APIキー、AWS認証情報、GCPプロジェクトID、ロケーション、クレデンシャルファイルパスなどのパラメータを一括して指定できるようになりました。

♻️ Refactor

  • Vertex AI SDK の移行: google.golang.org/genai SDK の最新バージョンに移行しました。サービスアカウント認証の修正、Client オブジェクトの正しい利用、ストリーミングイテレータの適切な処理を含みます。
  • クレデンシャルファイルパスの実行時展開: credentials_file のパス展開を、設定時ではなく実行時に行うように変更しました。これにより、動的なホームディレクトリ環境でも柔軟に対応できるようになりました。

📝 Documentation

  • 開発経緯の更新: docs/development_logs/dev_log-2025-08-02.md にVertex AI SDK移行の詳細な経緯とSDKの現状に関する記述を追加しました。
  • 関連ドキュメントの更新: README.ja.md および README.en.md を、Vertex AI プロバイダーの追加と profile add コマンドの機能拡張、システムプロンプトの扱いについて更新しました。
  • プロバイダー開発ガイドの修正: DEVELOPING_PROVIDERS.ja.md および DEVELOPING_PROVIDERS.en.md から、特定のプロバイダー実装に関する記述を削除しました。
  • 変更履歴の更新: CHANGELOG.ja.md および CHANGELOG.en.md を更新しました。

♻️ Refactor

  • コード監査と品質改善: コード全体の監査を実施し、潜在的な不具合や脆弱性を修正しました。profile editのコマンドインジェクション対策、設定パス管理の一元化、エラーメッセージの改善など、堅牢性と保守性を向上させました。

v0.0.4 - 2025-08-01

🐛 バグ修正

  • APIエラーハンドリングの修正: ストリーミングモードでAPIエラーが発生した際に、エラーを検知できずに正常終了してしまう問題を修正しました。非同期処理の競合状態を解消し、エラーハンドリングをより堅牢にしました。

v0.0.3 - 2025-08-01

🚨 Breaking Changes

  • コマンド名とフラグの変更: ask コマンドが prompt に変更されました。また、--prompt フラグは --user-prompt にリネームされ、--prompt-file--user-prompt-file にリネームされました。既存のスクリプトやワークフローを更新する必要があります。

✨ 機能

  • コマンド名とフラグのリファクタリング: ask コマンドを prompt に変更し、--prompt フラグを --user-prompt にリネームしました。また、--user-prompt (-p), --system-prompt (-P), --user-prompt-file (-f), --system-prompt-file (-F) の省略形を追加しました。

📝 Documentation

  • 開発ログと開発計画の追加: プロジェクトの経緯と今後の計画を記録するため、docs/development_logs/ を作成しました。
  • 開発ルールの更新: GEMINI.md に開発ルール(絶対パスの使用、根本原因の修正、ドキュメント更新、コミット前のコミット、コード品質とセキュリティ、コメントの原則)を追加しました。

v0.0.2 - 2025-08-01

✨ Features

  • Amazon Bedrock Novaモデルのサポート: amazon.nova-lite-v1:0 などのNovaモデルとの対話に対応しました。

♻️ Refactor

  • Bedrockプロバイダーのリファクタリング: Bedrockプロバイダーの内部実装を、NovaモデルのMessages API仕様に厳密に合わせて再設計しました。
    • リクエスト/レスポンス構造体 (novaMessageContent, novaMessage, novaSystemPrompt, novaMessagesAPIRequest, novaCombinedAPIResponse, novaMessagesAPIStreamChunk) を更新。
    • プロンプトおよび推論パラメータのハンドリングをNova APIに合わせて調整。
    • ストリーミング応答のパースロジックを修正。
  • プロバイダー選択ロジックの改善: cmd/ask.go で、bedrock プロバイダーが選択された際に、モデルIDのプレフィックス (amazon.nova) に基づいて NovaBedrockProvider を動的に選択するように変更しました。

🐛 Bug Fixes

  • プロンプトバリデーションの修正: cmd/ask.go でプロンプトのバリデーションを一元的に行うように修正し、internal/llm/bedrock_nova.go から冗長なバリデーションを削除しました。これにより、--prompt または --prompt-file、あるいは標準入力からのプロンプトが必須となりました。

📝 Documentation

  • ドキュメントの更新: README.md および BUILD.md を、新しいBedrockのセットアップ手順とビルドプロセスの変更に合わせて更新しました。
  • Makefileの改善: make all コマンドがクロスコンパイルも実行するように修正し、ビルド出力ディレクトリの整理を行いました。

v0.0.1 - 2025-07-31

✨ Features

  • LLMとの対話機能:
    • OllamaおよびLM Studio (OpenAI互換API) との対話に対応。
    • コマンドライン引数、ファイル、標準入力からのプロンプト入力に対応。
    • ストリーミング応答表示 (--stream フラグ) に対応。
  • プロファイル管理機能:
    • 複数のLLM設定をプロファイルとして管理 (profile list, profile use, profile add, profile set, profile remove, profile edit)。
  • ビルドシステム:
    • Goモジュールの初期化とCobra CLIフレームワークの導入。
    • Makefile によるビルド、テスト、クロスコンパイル (macOS Universal, Linux, Windows) に対応。
    • ビルド成果物をプラットフォーム別ディレクトリに整理。

📝 Documentation

  • README.md の作成と機能説明の追加。
  • BUILD.md の作成とビルド手順の詳細化。
  • README.md にGeminiによる開発支援とMITライセンスの明記。
  • BUILD.md および README.md にコードレビューで指摘された改善点を反映。