> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fim.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 変更履歴

> FIM Oneの全ての注目すべき変更。

このプロジェクトの全ての注目すべき変更はここに記載されています。

形式は[Keep a Changelog](https://keepachangelog.com/)に従っています。バージョンは[ロードマップ](/roadmap)のマイルストーンに対応しています。

## \[未リリース]

### 修正

* **リフレッシュトークンローテーションが以前のトークンを実際に無効化するようになりました。** JWT の `exp` は秒単位の精度のみであるため、同じユーザーに対して同じ秒内に発行された2つのリフレッシュトークンは同じようにエンコードされていました——ローテーション時に保存されたハッシュが同じ値で上書きされ、盗まれたリフレッシュトークンは永遠に更新され続けることができました。各リフレッシュトークンは一意の `jti` を持つようになったため、ローテーションされたトークンは異なり、古いトークンはすぐに機能しなくなります。

* **別のエージェントまたはワークフローを通じてエージェントに到達した場合、承認ゲートが保持されるようになりました。** チャットで確認を求める機密コネクタ呼び出しは、以前は `call_agent` 経由で委譲されたり、ワークフロー `AGENT` ノードでラップされたりすると、チェックなしで実行されていました——これらのパスはエージェントをまったくフックなしで開始していました。現在は両方ともエージェント独自のゲートを実行し、そのエージェントの確認設定を使用し、フックが読み込めない場合は実行を拒否します。

* **`SMTP_SSL` のタイプミスが SMTP パスワードをクリアテキストで静かに送信しなくなりました。** 以前は `ssl` または `tls` 以外の値（例えば `SMTP_SSL=true`）は警告なしに暗号化されていない接続にフォールスルーしていました。システムメールとメール通知の両方で同様です。認識されない値は現在完全に拒否され、暗号化されていない配信は `SMTP_SSL=none` として明示的にリクエストする必要があり、送信するたびに警告がログに記録されます。

### 削除

* **README Star History チャートとそのリフレッシュワークフロー。** GitHub が stargazers API を制限した後（2026年7月）、自社所有のチャートを維持するには、有効期限が切れて定期ジョブが失敗し続ける長期間有効な管理者 PAT が必要でした。チャート、SVG アセット、ジェネレータスクリプト、および `Star History` GitHub Actions ワークフローは削除されました。

* **アップグレード時に組織に共有されていた Knowledge bases は取り消されます。** v0.8.9 の例外措置により、すでに公開されている KB がサブスクライバーにアクセス可能に保たれていましたが、これは廃止されました。すべての共有 KB は個人用に戻され、サブスクリプションが削除され、残された非公開化アクションとサブスクライバー向けの KB バッジが消えます。Knowledge base は現在、共有 Agent を通じてのみ他のユーザーに到達でき、実行時に所有者のコンテンツを委譲します。

## \[v0.8.9] - 2026-07-08

### 追加

* **スキルとワークフローはオプションモジュールになり、デフォルトではオフです。** 新規インストールはコア機能（チャット、エージェント、ナレッジベース、コネクタ）のみで起動し、管理者が Admin → Settings → Modules からスキルやワークフローを有効にできます。モジュールがオフの間、ナビゲーションとそのページ、API、マーケットエントリ、トリガーは非表示になります。何も削除されず、オンに戻すとすべてが復元されます。

* **DAG の再計画は完了した作業をやり直さず、中断された実行は中断した箇所から再開します。** プランの修正が必要な場合、既に完了したステップはその結果とともに新しいプランに引き継がれ、残りの作業だけが再計画・実行されます。ステップの進捗もリアルタイムでチェックポイントされるため、実行中に中断された場合（クラッシュ、デプロイ、接続切断）、同じリクエストを再試行すると完了したステップから再開され、最初からやり直されません。

* **遅いツールはエージェントをブロックせずにバックグラウンドで実行できるようになりました。** サンドボックス化されたコード実行（Python/Shell/Node）は `run_in_background` オプションを提供します。エージェントはタスク ID をすぐに取得し、他のステップで作業を続け、ツールが完了するとその結果を通知として受け取ります。エージェントがタスクがまだ実行中に完了しようとすると、それらを待機（制限付き）して結果を組み込んでから回答します。

* **会話履歴は圧縮前にスナップショットされ、予算によって切り詰められたツール結果はワークスペースに保存されます。** 長い会話の圧縮が履歴をサマリーに置き換える前に、完全なトランスクリプトが JSONL ファイルとしてコンバーセーションワークスペースに書き込まれます。同様に、集計トークン予算によって切り詰められたツール結果は完全な形でワークスペースに保存され、ポインタが残されます。どちらの場合もエージェント（およびあなた）は元のデータを読み戻すことができ、失われることはありません。

* **モデルが出力制限に達してもアンサーが途中で終わらなくなりました。** プロバイダーの出力トークン上限によって応答が切り詰められた場合、エージェントは自動的にモデルに中断した箇所から再開するよう要求し（最大 3 ラウンド）、セグメントを 1 つのシームレスな回答に結合します。推論ループと流式最終回答の両方で機能します。

* **LLM 呼び出しはプロバイダーの過負荷（HTTP 529）とゲートウェイタイムアウト（504）で再試行され、`Retry-After` を遵守します。** 以前は Anthropic からの 529 はフォールバックモデルが設定されていない限り即座に失敗していましたが、今は 429/5xx のように バックオフして再試行し、`Retry-After` ヘッダーが存在する場合はプロバイダーが指定した時間だけ正確に待機します。

* **エージェントは複数ステップのタスク中に表示されるプランを保持するようになりました。** ReAct エージェントは `update_plan` ツールを取得して、プランを TODO チェックリストとして書き込み、進捗に応じて更新できます。プランが複数のツール呼び出しの間に古くなった場合、完全なチェックリストがリマインダーとして再注入されます。長いタスクでもコンテキスト圧縮後に目標を維持できます。デフォルトでオン（`REACT_PLAN_TOOL_ENABLED`）。DAG サブステップとツールなしエージェントはスキップします。

* **エージェントは会話中にワークフローを実行できるようになりました。** あなたが所有または購読している、アクティブで人間の承認が不要なワークフローは、エージェントに `run_workflow` ツールとして提供されます。通常のチャットとエージェント選択時の両方で使用でき、タスクは決定論的で反復可能なサブプロセスをワークフローに引き渡し、その出力を取得できます。このような実行はワークフローの実行履歴に記録され、そのトークン使用量はワークフロー所有者のクォータに計上されます（所有者が既にクォータを超えている場合は実行が拒否されます）。Human Intervention ステップを含むワークフローはトリガーのみのままです（ワークフローページまたはその API キーから）。長時間ブロックされる可能性があるためです。

* **2 つの新しいワークフロースターターテンプレート：Connector Action と MCP Tool Call。** 「テンプレートから作成」ギャラリーはコネクタと MCP ノードを紹介するようになりました。外部システムまたは MCP ツールを呼び出し、結果を LLM でサマリーします。作成後に特定のコネクタ/サーバーを選択します。

### Changed

* **ナレッジベースは共有不可になりました。** ナレッジベースを組織またはマーケットプレイスに公開する機能が削除されました。ナレッジベースは共有エージェントにバインドされることでのみ他のユーザーに到達し、実行時に所有者のコンテンツを委譲します。既に公開されているナレッジベースは現在のサブスクライバーにアクセス可能なままで、メニューから個人用に戻すことができます。
* **コネクターと MCP サーバーはデフォルトで所有者の認証情報を共有しなくなりました（破壊的変更）。** 「所有者の認証情報へのフォールバックを許可」はオプトインになりました。新しいコネクター/MCP サーバーはこの設定がオフで作成され、既存のものもすべてオフに切り替わりました。共有コネクターまたは MCP サーバーの使用に所有者のトークンに依存していたサブスクライバーは、独自の認証情報を追加するか、所有者がそのリソースのフォールバックを再度有効にする必要があります。所有者は設定に関係なく常に独自の認証情報を使用できます。その結果、フォールバックがオフで認証情報がないコネクターは、MCP サーバーと同じように、エージェントのツールセットから非表示になります（呼び出し時に失敗するのではなく）。
* **新しいエージェントはデフォルトで ReAct 実行になります。** Auto モードはリクエストごとに 1 回の追加の高速モデル分類呼び出しを費やして ReAct と DAG を決定していました。新しいエージェント（および組み込み/マーケットプレイステンプレート）は ReAct がデフォルトになり、メッセージごとのレイテンシとコストが削減されます。Auto と DAG はエージェントごとに選択可能なままで、既存のエージェントは現在のモードを保持します。
* **AI エージェント作成は弱い高速モデルから復旧します。** 自然言語の指示からエージェントを構築または改善する場合、高速モデルで実行されます。有効な設定を生成できない場合、リクエストはエラーになる前に強力な汎用モデルで 1 回再試行されるため、弱すぎる高速モデルはユーザーに失敗として表示されなくなります。

### 削除

* **ビジュアルワークフロービルダーを9つのコアノードタイプに削減しました。** 環境変数、HTTPリクエスト、コード実行、イテレータ/ループ、サブワークフロー、テンプレート/リスト/変換ヘルパー、パラメータ/質問抽出器、分類器など、ほとんど使用されない16個のユーティリティおよび制御フローノードを削除しました。これにより、ビルダーは智能体、連接器、MCP サーバー、ナレッジベースのオーケストレーションに集中できるようになります。副作用として、共有ワークフローに埋め込まれたシークレットが不要になりました。現在は参照のグラフのみとなり、参照される各リソースは実行時にユーザーごとのアクセス制御を適用します。削除されたノードで構築された既存のワークフローは、残りのセットで再構築する必要があります。

### セキュリティ

* **APIキースコープがユーザーオブジェクトに付与されるのではなく、リクエストごとに保持されるようになりました。** これにより、キャッシュされたユーザーまたはアイデンティティマップで共有されたユーザーが別の認証コンテキストのスコープセットを継承する可能性があるという潜在的なスコープ混同パスが解決されます。
* **生成されたJWTシークレットを保持する自動作成の`.env`は、所有者のみ(0600)の権限で書き込まれるようになりました。** 既存の`.env`ファイルは権限が保持されます。
* **パスワードハッシュコストは`FIM_BCRYPT_COST`で調整可能になりました**(デフォルト12、bcryptの4～31の範囲に制限)。オペレーターはハードウェアとセキュリティ強化のバランスを取ることができます。
* **データベースコネクターは共有できなくなり、その生SQL ツールは所有者のみになりました。** データベースコネクターを組織またはグローバルに公開することは拒否されるようになり、任意SQLデータベースツールは、所有者認証情報フォールバック設定に関わらず、コネクターの所有者にのみ提供され、購読者には提供されません。以前は、共有データベースコネクターは所有者の(通常は高い権限を持つ)データベースアカウント上の制限されていないSQLを購読者に公開していました。ユーザーごとのスコープ付きデータベースアクセスは、将来の宣言的アクションレイヤーを通じて復帰します。
* **Webhookおよびcronでトリガーされるワークフローは、所有者のトークンクォータに対してカウントされるようになりました。** 公開APIキーまたはスケジュールでトリガーされる無人ワークフロー実行は、以前はトークン使用量をチェックまたは記録せずにLLMおよびエージェントステップを実行していました。これはクォータを完全にバイパスする計測されていない無料LLMパスでした。このような実行は、所有者のクォータに対して事前にゲートされるようになり(公開トリガーは拒否され、スケジュール実行は所有者がすでにクォータを超えている場合はスキップされます)、トークン使用量は実行ごとに記録され、チャットと同じ月間クォータに対してカウントされます。
* **Feishu承認カードは誰が承認できるかを強制するようになりました。** カードクリックは、クリッカーのFeishuアカウントがFIM Oneユーザーにリンクされており、そのユーザーがエージェントの承認者スコープ設定(イニシエーター、エージェント所有者、または組織メンバー)の下で実際に承認を許可されている場合にのみ受け入れられます。これはポータル内承認がすでに適用していたのと同じルールです。以前は、Feishuグループ内の誰もが保留中のアクションを承認または拒否でき、決定はアイデンティティなしで記録されていました。
* **Feishuチャネルは暗号化キーが必要になり、有効な署名のないコールバックは拒否されます。** 暗号化キーが設定されていない場合、コールバック署名検証は失敗に終わります(以前は署名なしのコールバックを受け入れていたため、チャネルのコールバックURLを知っている誰もが承認を偽造できました)。Feishuが暗号化を有効にしたときに送信する暗号化されたイベントエンベロープが復号化されるようになりました。新しいまたは編集されたFeishuチャネルは暗号化キーを提供する必要があります。
* **承認リクエストは意図しないチャネルにルーティングされなくなりました。** エージェントが明示的に設定された承認チャネルを持たない場合、保留中の承認はエージェントの完了通知チャネルに、またはそれが失敗した場合は組織の最初のチャネルにプッシュされる可能性がありました。これは機密アクションカードを承認者として選択されたことのないグループに表示していました。承認は現在、エージェントの明示的に設定された承認チャネルにのみ送信され、そうでない場合はポータル内承認にフォールバックします。
* **共有MCPサーバーとナレッジベースは、バインド時だけでなく、実行時にアクセスが再チェックされます。** ワークフローMCPステップ、エージェントのバインドされたMCPサーバー、またはエージェントのバインドされたナレッジベースは、実行するたびに現在のサブスクリプション状態に対して検証されるようになりました。そのため、組織を離れることによって取り消されたアクセスは、古いバインディングを通じて残るのではなく、すぐに有効になります。

### 修正

* **OAuth ログイン時に GitHub/Google/Discord/Feishu が遅い場合、ライブラリのデフォルトタイムアウトでハングするのではなく、「プロバイダーがタイムアウトしました」という明確なメッセージで素早く失敗するようになりました。** 汎用的なエラーメッセージの代わりに、わかりやすいエラーが表示されます。
* **HTML 成果物のスタイル変更を求められた場合、エージェントが不要な画像を生成しなくなり、実際にワークスペースに書き込まずにファイルが作成されたと主張することもなくなりました。** 画像生成はラスター画像に明確にスコープされ、ファイル成果物はツール呼び出しで書き込む必要があります。チャットにコンテンツを貼り付けるだけでは「ファイルを生成した」とは見なされません。
* **生成された HTML ページは、汎用的な紫グラデーションの外観ではなく、デフォルトで Claude にインスパイアされた温かみのあるパレットを使用するようになりました。** スタイルを指定しない場合、エージェントは温かみのあるミニマルなベースラインを使用します。指定されたスタイルは常に優先されます。
* **ツールが多い長い会話は、履歴がコンパクト化されても破損しなくなりました。** コンテキストコンパクト化により、ツール呼び出しとその結果の間の保持ウィンドウが切断される可能性があり、LLM プロバイダーが拒否するメッセージシーケンス（HTTP 400）が生成されていました。これはコンパクト化が最も必要な長い実行で発生していました。コンパクタは、各ツール呼び出しとその結果を保持側で一緒に保つようになりました。
* **バックグラウンドツール結果がステップストリームと DAG エビデンスに表示されるようになりました。** バックグラウンドで実行されたツールは、その実際の出力をエージェントの内部通知メッセージ内でのみ配信していました。UI のステップタイムラインと DAG 回答検証エビデンスには、ディスパッチプレースホルダーのみが表示されていました。ドレインされた結果は、実際のツール名の下で通常のツール完了イベントとして発行されるようになりました。
* **重複するステップ ID を持つ稀なプランナー出力が、DAG ターン全体を破損しなくなりました。** 重複する ID は以前「循環依存」エラーとして誤診断されていました。現在は決定論的に名前が変更され、計画が進行します。
* **複数の ReAct ループの正確性修正。** 空の出力を返すツールは、ワークスペースが有効な場合、「出力なしで完了」という注記を保持していました。DAG ステップが満たせない依存関係によってブロックされた場合、UI がハングするのではなく、適切な終了イベントが発行されるようになりました。ネイティブツール呼び出しがないモデルの場合、フォールバック回答合成はツール呼び出しだけでなくツール結果を確認するようになりました。
* **会話ワークスペースが実際にチャットに接続されるようになりました。** 大きなツール結果が回復可能になり、サイレントに失われることがなくなりました。エージェント層のワークスペース復旧パス（`workspace://` ポインタを使用した大出力オフロード、予算切り詰めツール結果の完全コピー救済、コンパクト化前のトランスクリプトスナップショット）は存在していましたが、チャットエンドポイントはワークスペースを作成しなかったため、実行されていませんでした。ツール結果予算が枯渇すると、モデルはデータを読み戻す方法がない空の観測を受け取り、推測から回答していました。ReAct と DAG ステップエージェントは、会話ごとのワークスペースを取得するようになりました。会話を削除すると、そのワークスペースファイルと残されたクラッシュ再開チェックポイントがクリーンアップされます。
* **再開された DAG 実行は、長いステップ出力の終わりを失わなくなりました。** クラッシュ再開チェックポイントに保存されたステップエビデンスは、サイズキャップで先頭のみが切断され、出力の終わりに存在するものはサイレントに削除されていました。これは結論、チェックサム、最終行が存在する場所です。キャップされたエビデンスは、先頭と末尾の両方を明示的な省略マーカー付きで保持するようになりました。
* **エージェントが Python を通じて独自のメモを出力することで「機能する」ことはなくなりました。** ツール呼び出しごとに 1 つの包括的なスクリプトを作成することを推奨する効率ガイダンスは、実際にコード実行が必要なタスクにスコープされるようになりました。知識の質問、比較、モデルが直接生成できる分析は、無意味なサンドボックススクリプトを通じてルーティングされるのではなく、直接回答されます。
* **ワークフロー内のエージェントステップは、プロンプトだけでなく完全なエージェントを実行するようになりました。** ワークフローの Agent ノードは、以前はエージェントの指示のみで汎用モデルとデフォルトツールセットで実行されていました。エージェントのコネクタ、ナレッジベース、MCP サーバー、設定されたモデルはサイレントに削除されていました。チャットで実行されるのと同じように、すべてのバインドされたリソースとモデルを使用してエージェントを実行するようになりました。そのエージェントがワークフロー所有者に表示されている場合のみです。
* **組織を離れる（または削除される）と、その共有アクセスが取り消されるようになりました。** その組織を通じてのみ到達できるリソースは登録解除され、保存した per-user コネクタ/MCP 認証情報は削除されます。そのため、それらのリソースを使用したり、離脱後に所有者の認証情報にフォールバックしたりすることはできなくなります。Market 経由で登録したリソースは影響を受けません。
* **アカウントを削除すると、すべてが一貫して削除されるようになりました。** 管理者の「ユーザーを削除」と自分で行う「アカウントを削除」パスは以前は異なっていました。各パスは異なるオンディスクファイルセットをクリーンアップしていました（両方ともファイルパスを誤って計算していたため、各パスはいくつかをサイレントに見逃していました）。管理者パスは API キー、ログイン履歴、評価データ、呼び出しログ、登録を残していました。両方は 1 つのルーチンを通じて実行され、すべてのレコードとファイルを削除するようになりました。削除は、外部キーを強制するデータベースで失敗しなくなります。
* **組織をまだ所有しているユーザーは削除できなくなりました。** リクエストは、所有権を譲渡する（または組織を削除する）ことを最初に行うという明確なメッセージで拒否されるようになりました。不明確に失敗したり、組織を孤立させたりすることはなくなります。
* **エージェントを削除しても、過去の会話は破損しなくなりました。** エージェントを参照した会話は履歴レコードとして保持され、削除をブロックするのではなく、エージェントリンクがクリアされるだけになります。
* **確認が必要なコネクタアクションは、ワークフロー内で無人で実行できなくなりました。** 確認が必要としてフラグが立てられたコネクタアクションは、以前は承認ゲートがサイレントにバイパスされた状態でワークフロー内で実行されていました。ステップは、その前に Human Intervention ノード（ワークフロー固有の承認ゲート）を配置するか、確認が不要なアクションを使用するというメッセージで閉じた状態で失敗するようになりました。
* **ワークフローステップは所有者の MCP 認証情報を借用しなくなりました。** ワークフローの MCP サーバーが所有者認証情報フォールバックを無効にしていた場合、所有者以外がそのワークフローを実行すると、停止されるのではなく、所有者のサーバー認証情報にサイレントにフォールバックしていました。ステップは、チャットパスと一致する、独自の認証情報を設定するという明確なメッセージで失敗するようになりました。
* **ワークフローから行われたコネクタ呼び出しは、監査ログに記録されるようになりました。** ワークフロー内で実行されたコネクタアクションは、コネクタ呼び出しログにエントリを残していませんでした（チャットで開始された呼び出しのみが記録されていました）。ワークフロー呼び出しは同じ監査証跡を書き込むようになりました。
* **登録されたコネクタ、ナレッジベース、または MCP サーバーをエージェントにアタッチできるようになりました。** バインディングは以前、リソースを*所有*する必要がありました。そのため、正当に登録したコネクタ（組織共有または Market インストール）は「所有していない」として拒否されていました。バインディングは、アプリの残りの部分が使用するのと同じ可視性ルールに従うようになりました。所有または登録したものはすべてバインド可能です。
* **ワークフローステップは、実際にアクセスできるコネクタのみを呼び出すことができるようになりました。** ワークフローのコネクタステップは、そのコネクタが存在する限り、参照する任意のコネクタを実行していました。ランナーの可視性（所有または登録）を強制するようになりました。共有ワークフローは、アクセス権がないコネクタに ID で参照するだけで到達することはできなくなります。
* **ナレッジベース検索は、所有しているもののみでなく、登録したナレッジベースに対して機能するようになりました。** KB のデータは所有者のストレージの下に存在しますが、ワークフローナレッジベースステップ（およびエージェントなしのナレッジベースチャット）は以前、呼び出し元自身のストレージの下を検索していました。そのため、共有されている KB を検索すると、サイレントに何も返されていませんでした。所有者は KB 自体から解決され、検索はアクセスチェック（所有者または登録者）されるようになりました。共有 KB は結果を返し、表示できない KB は混乱した空のヒットではなく何も返さなくなります。
* **バックグラウンドジョブがランダムに消えなくなりました。** ドキュメント取り込み、Webhook 配信、評価実行、応答後通知は、ランタイムが弱く参照するだけの fire-and-forget タスクとして起動されていたため、負荷がかかると途中でガベージコレクションされ、サイレントに停止する可能性がありました。完了まで保持され、失敗がログに記録されるようになりました。確実に完了します。
* **大きなファイルアップロードは、他のリクエストをスタールさせなくなりました。** アップロードされた PDF/DOCX からのテキスト抽出は、メインイベントループで同期的に実行され、大きなファイルが解析されている間、すべての同時リクエストを一時的にフリーズしていました。抽出はワーカースレッドにオフロードされるようになりました。
* **マルチステップ（DAG）回答は、ソースを誤って表現しなくなりました。** 計画の研究ステップがページを取得して要約した場合、その要約のみが先に進みました。そのため、11 個の項目をリストするソースが最終回答に 6 個として表示される可能性があり、項目の重大度が誤ってラベル付けされる可能性があり、目標評価ステップは元のソースを見たことがないため、それをキャッチできませんでした。各ステップは、その生のツール出力を信頼できるソースエビデンスとして保持するようになりました。最終合成と評価者がそれに対して回答をチェックするため、合計、列挙、属性はソースが実際に言ったことと一致します（一致しない場合、名前付きの矛盾で信頼度が低下します）。
* **ワークフロー LLM ノードは、意味しなかったモデルコントロールを表示しなくなりました。** ハードコードされたモデルドロップダウンがあり、その選択は実

## \[v0.8.8] - 2026-06-22

### 変更内容

* **エージェントがミスをより明確に認識するようになりました。** ツール結果がエージェントが述べたことと矛盾する場合、過度に謝罪したり、自己批判で返信を埋め尽くしたりすることなく、同じターンで認識して修正します。

### セキュリティ

* **IPv4マップIPv6アドレスを経由したSSRFバイパスをブロック。** ホストがIPv4マップIPv6リテラル（例：`http://[::ffff:169.254.169.254]/`）であるURLがプライベートIP ブロックリストを通過し、デュアルスタックホスト上のクラウドインスタンスメタデータを含む内部サービスにアクセスできていました。これらのアドレスはアンラップされてIPv4ブロックリストに対してチェックされるようになり、すべてのSSRF保護パス（ウェブフェッチ、HTTPツール、コネクタ、RAGインポーター）でギャップが解決されました。
* **MCP SSE / Streamable-HTTPサーバーURLがSSRF検証対象に。** 認証済みユーザーがMCPサーバーを内部アドレスに指定し、サーバーがテストまたは接続されたときにリクエストをトリガーできていました。サーバーURLは作成/更新時と接続時に検証されるようになりました。
* **Docker Compose PostgreSQL認証情報が`POSTGRES_USER` / `POSTGRES_PASSWORD` / `POSTGRES_DB`でオーバーライド可能に。** 以前はハードコードされていた`fim:fim`デフォルトが単一ソース化され（接続文字列は同じ変数から派生）、データベース公開前に変更するよう警告付きで文書化されたため、オペレーターが誤ってデフォルト管理者認証情報を配布することがなくなりました。

### 修正

* **LLM アクセスが静止期間後に失敗しなくなりました。** 共有 HTTP コネクションプールはスタートアップ時に一度インストールされ、すべてのモデル呼び出しで再利用されていました。システムがアイドル状態になると、基盤となるクライアントがアプリの下から閉じられる可能性があり、その後すべての LLM 呼び出しがコネクションエラーで失敗し、サービスが再起動されるまで復旧しませんでした。プールは各呼び出しの前に再検証され、透過的に再作成されるようになったため、サービスは再起動なしで自動的に復旧します。
* **チャットでメッセージを送信する際、スタールの代わりに即座にストリーミングされるようになりました。** 以前は、送信するたびに回答が開始される前に会話履歴の完全な再読み込みでブロックされていたため、長いチャットは一瞬フリーズしたように感じられ、毎ターン全体のトランスクリプトを再取得していました。完了したターンは背景でhistoryに折り込まれるようになったため、送信は即座にストリーミングされ、冗長な再読み込みをスキップします。
* **拡張思考が新しい Anthropic モデル（Opus 4.6+、Sonnet 4.6、Fable 5）で動作するようになりました。** これらのモデルは古い固定予算の思考パラメータを削除しました——Opus 4.7/4.8 と Fable 5 は 400 で拒否します——そのため、推論努力を設定するとエラーが発生するか、何もしませんでした。これらのモデルに対して適応的思考プロトコルを送信し、受け入れなくなったサンプリングパラメータをドロップするようになったため、推論努力が正しく有効になります。適応的思考を使用しているが、汎用 OpenAI 互換プロキシ経由で接続されているモデル（思考を有効にできない場所）は、静かに失敗する代わりに明確な警告をログに記録するようになりました——Anthropic プロバイダーとして設定して思考を有効にしてください。
* **強制ログアウトが PostgreSQL で正しくタイムスタンプを比較するようになりました。** セッション無効化チェックは、保存された無効化時間が素朴な UTC であると想定し、それを強制していました。これにより、PostgreSQL が返す可能性のあるタイムゾーン対応の非 UTC 値に対する比較が静かに破損していました。タイムスタンプは上書きではなく変換によって UTC に正規化されるようになったため、失効したトークンはすべてのバックエンドで確実に拒否されます。
* **実行フックがクラッシュ時に閉じた状態で失敗するようになりました。** 例外を発生させた `PRE_TOOL_USE` フック（例：承認ゲート）は以前 `allow=True` を返していたため、ブロックされたツール呼び出しは進行していました——クラッシュしたゲートは静かにバイパスになっていました。PRE フックはエラー時にデフォルトで拒否するようになりました。非実行フック（レート制限、ロガー）は新しい `fail_open` フラグ経由で古い fail-open 動作を保持します。
* **エージェント回答が推論の結論をドロップしなくなりました。** 推論モデルが既に最終回答を生成していた場合、パイプラインは 2 番目の損失のある合成呼び出しを行い、モデル自身の結論を破棄する可能性がありました——推論の詳細は、会話が圧縮されたり、コンテキスト制限から保護されたり、マルチステップ計画を通じてルーティングされたりするときにさらに失われました。ループは本物の最終回答を逐語的にストリーミングするようになり、推論は圧縮、コンテキスト再構築、サブエージェントステップを通じて実行されるため、表示される回答は、薄められた言い換えではなく、思考の完全なチェーンを反映します。

## \[v0.8.7] - 2026-06-10

### セキュリティ

* **二要素認証のバイパスを修正しました。** API と chat/SSE 認証は、正規のアクセストークン（SSE ストリーミングは短命のチケットも受け入れます）を必須にしました。2FA 一時トークン、リフレッシュトークン、バインド/SSE チケット——すべて同じキーで署名されています——は認証に再利用できなくなったため、盗まれたパスワードだけでは二要素認証をスキップできなくなりました。
* **OAuth ログインは、未検証のメールアドレスで既存アカウントに自動リンクされなくなりました。** サードパーティアカウントは、プロバイダーがメールアドレスを検証済みとしてマークした場合にのみ、ローカルアカウントとメールアドレスでマッチングされるため、攻撃者が管理する未検証のアドレスを使用した乗っ取りが防止されます。

### 追加

* **`file_ops.apply_patch` — V4A形式のdiffパッチをファイルに適用。** エージェントが行ベースのハンクとファジーホワイトスペースマッチングを使用した複数行編集を実行できます。既存の`find_replace`を補完し、完全な部分文字列マッチが脆弱な場合に対応します。
* **入出力検証のためのコンテンツガードレール。** 新しい`core/agent/guardrail`レイヤーが既存のツール権限ゲートとセキュリティチェックと並行して（置き換えではなく）実行されます。入力ガードレール（デフォルト：ジェイルブレイクフレーズ検出器）はLLM呼び出しの前に実行され、トリガーされた場合はターンを中止してトークンを節約し、チャットに明確な「ブロック」通知を表示します。出力ガードレールは最終回答の後に実行されます。`FIM_GUARDRAILS_INPUT` / `FIM_GUARDRAILS_OUTPUT`環境変数で設定可能です。エージェント単位のUI設定は今後のリリースで提供予定です。

### Changed

* **`/settings?tab=billing` がフルウィドスで表示され、Settings タブの他の部分と視覚的に一貫性を持つようになりました。** `max-w-4xl` の幅制限と冗長な外側のスクロールコンテナを削除し、ページタイトルアイコンを削除しました。プラン / 使用状況 / サブスクリプション / プラン比較カードを、Usage タブと同じシンプルなボーダー付き div パターン（コンパクトなラベル + `tabular-nums` 数字）を使用するように書き直しました。以前のレイアウトは、Settings フレームに誤って挿入されたスタンドアロンページのように見えていました。

### 修复

* **Token 配额现在在您的账单日期重置，而不是每月 1 日。** 使用情况始终按日历月计算，无论您何时订阅，因此付费用户可能在 20 日被收费，却要等到 1 日才能获得新配额——在月底开始的订阅实际上会在几天后获得第二个完整配额。配额现在在每个订阅的月度周年纪念日重置（免费用户仍按日历月重置）。按年计费的计划现在每月正确补充，而不是每年一次。"计划与账单"选项卡、"使用情况"卡片和超配额对话框现在都在同一时间窗口内测量使用情况并显示重置日期，因此显示的"本期使用情况"与聊天实际停止您的时间点相匹配。
* **订阅续期现在推进账单周期。** 在自动续期时，显示的周期结束日期在 Stripe 已收费并推进订阅的情况下仍保持冻结在前一个周期——续期处理程序仅从发票负载中读取新周期，其中该信息不可靠。现在它从 Stripe 检索权威的周期边界，因此周期结束日期（和配额重置）在每次续期时向前移动。这也消除了一个潜在风险，即取消此类订阅可能会立即降级账户，而不是在真正的周期结束时。
* **原始工具调用协议不再泄露到智能体答案中。** 当模型即兴创作工具调用作为纯文本时（例如发出 `<tool_call>`/`<tool_response>` 块——当它尝试使用不可用的工具时很常见），该文本——包括其中的任何 base64/文件转储——可能会逐字出现在回复中。所有答案路径现在都会剥离此伪协议，解析器还会将 `{"name","arguments"}` 方言识别为真正的工具调用，而不是泄露它。
* **智能体轮次期间间歇性的 `APIConnectionError: Connection error` 突发。** 共享 HTTP 连接池为空闲的保活连接保留长达 30 秒；当上游中继或 NAT 无声地回收空闲连接时，下一个请求重用半死的套接字并失败。保活过期现在默认为短 5 秒（轮次内的热连接仍被重用），池可通过 `LLM_HTTP_MAX_CONNECTIONS` / `LLM_HTTP_MAX_KEEPALIVE` / `LLM_HTTP_KEEPALIVE_EXPIRY` 调整——设置 `LLM_HTTP_MAX_KEEPALIVE=0` 以在不可靠的上游后面完全禁用连接重用。
* **API 密钥使用统计（`total_requests`、`last_used_at`）现在在每个请求时持久化。** 以前增量是在请求的数据库会话中写入的，该会话仅由执行自己写入的端点提交——因此只读 API 密钥调用（仪表板、文件、模型、导出……）无声地回滚计数器。使用情况现在记录在独立的自提交会话上，与请求成功解耦。

## \[v0.8.6] - 2026-05-08

### 追加

* **Stripe 請求 — Pro プラン サブスクリプション。** `/settings?tab=billing` の新しい `Plan & Billing` タブに、現在のプラン、月次トークン使用量、期間リセット、および `Upgrade to Pro`（Stripe Checkout）または `Manage subscription`（Customer Portal）が表示されます。チェックアウト成功時に購入したプランを表示するコンフェッティモーダルが開き、リダイレクトパラメータは却下後にのみ削除されるため、更新時に再トリガーされません。クォータ強制は各ユーザーのプランを尊重します。キャンセルされたサブスクリプションは有料期間が終了するまで Pro に留まります。ストリーム中の 402 クォータダイアログは請求タブに移動します。管理者は Admin Panel → Billing でプランを管理し、サブスクリプションを参照できます。Pro は現在 Stripe **テストモード** 価格を使用しています。本番環境への切り替えは価格 ID を置き換えます。
* **管理者制御の請求機能フラグ。** Admin → System Settings の `Enable Stripe Billing` トグルは、ユーザー向け `/api/billing/*`、Stripe ウェブフック、管理者プラン/サブスクリプション CRUD、フロントエンド請求タブ + 管理者ナビゲーションを含む Stripe パイプライン全体をゲートします。オフの場合、すべて非表示または 503 になります。最初の有効化は Free + Pro をシードし、`default_plan_id` ポインタを設定し、`users.plan_id` をバックフィルします。その後のオン/オフは純粋なフラグ切り替えです。Stripe 認証情報のないプライベートデプロイメントはクリーンなままです。請求がオフの場合、クォータチェーンは管理者が設定した `Default Monthly Token Quota` にフォールバックします。
* **ユーザーごとの無制限クォータ + Registered 列。** 空のクォータフィールドはグローバルリミットを継承します。`0` は無制限を付与します。以前は両方が同じ状態に折りたたまれていました。ユーザーテーブルには Registered 列も追加されます。
* **非英語ドキュメント（`zh` / `ja` / `ko` / `de` / `fr`）は完全な API Reference および Channels Configuration セクションを表示するようになりました** — `Endpoints` グループと `Configuration > Channels` サブグループは以前は英語のみでした。

### Changed

* **`Plan & Billing` は Settings タブであり、スタンドアロンページではありません。** `/settings/billing` を `/settings?tab=billing` に戻し、ユーザーがプランを切り替える際に左ナビゲーションが表示されたままになるようにしました（GitHub / Linear / Notion と同じ）。スタンドアロンルートはリダイレクトされるため、古いブックマークと以前のデプロイの Stripe Checkout リターン URL は引き続き機能します。`Subscriptions` タブは `Marketplace` に名前変更され、プランサブスクリプションとの区別が明確になりました。
* **Free プランのクォータは admin Plans ページで読み取り専用です。** System Settings → Default Monthly Token Quota から取得され、そこでの編集は自動的に反映されます。バックエンドは Free プランの `monthly_token_quota` に対する PATCH を暗黙的に無視します。
* **トークンクォータは、課金ページ、プランカード、admin Plans テーブル全体で `5M` / `100K`** として表示されます（`5,000,000` の代わりに）。Admin INPUT フィールドは引き続き生の数値を受け入れます。
* **翻訳の権限がロケール別ファイルから単一の用語集にシフトしました。** ルールは [`scripts/translation-glossary.md`](https://github.com/fim-ai/fim-one/blob/master/scripts/translation-glossary.md) に存在し、すべての LLM 翻訳呼び出し（JSON、MDX、README）に読み込まれます。pre-commit フックは生成されたロケールファイルへの手動編集を無条件に拒否します。誤訳を修正するには、用語集を編集し、`--force` で再生成してください。
* **ライセンサーと準拠法。** FIM One Source Available License は現在 **FIM Labs Pte. Ltd.**（シンガポール）により付与されます。準拠法は中華人民共和国からシンガポールに移行し、紛争は SIAC 仲裁（シンガポール、仲裁人 1 名、英語）に移行します。新しいトップレベルの `NOTICE` ファイルは、R\&D 帰属、商標、およびサードパーティコンポーネントポリシーを記録します。許可された使用または制限条件に変更はありません。

### 修复

* **管理员对智能体、连接器、知识库和 MCP 服务器的批准/拒绝操作不再在 PostgreSQL 上失败。** 发布审核 `reviewed_at` 列现已支持时区，因此批准写入在 PG 上成功（该 bug 在 SQLite 开发数据库上不可见）。
* **OAuth 用户可以再次刷新会话。** OAuth 颁发的刷新令牌以刷新端点无法匹配的形式存储，导致访问令牌过期后需要重新登录；现在它以与其他路径相同的摘要形式存储。
* **浏览器标签页标题现在反映 `/settings` 和 `/admin` 中的活跃子标签页**（例如 `Settings · Billing — FIM One`），因此多个固定标签页可以区分。
* **使用情况页面在管理员设置默认令牌配额时不再报告"无限制"** — 它现在通过统一配额链解析（按用户覆盖 → 计划层级 → 系统默认值）。
* **智能体设置：绑定资源在进入时不再闪烁显示"(已删除)"。** 孤立徽章在库存获取稳定后才呈现。
* **Toast 通知现在遵循浅色/深色主题**，而不是硬编码为深色。
* **按智能体的使用情况分解不再为与已删除智能体关联的对话重复"直接聊天"行。**
* **自托管 `./deploy.sh` 不再因 `container name already in use` 而失败** — 在 `docker compose up` 前清理哈希前缀的僵尸容器和 DooD 沙箱子进程。
* **推送后不再出现冗余的 `chore(i18n): sync translations` 提交** — 预提交翻译钩子现在将 `.translation-cache.json` 与翻译文件一起暂存。
* **当需要确认的工具在未绑定智能体的会话中运行时，智能体聊天不再崩溃** — 当没有智能体可路由时，闸门优雅地退出。
* **在严格交替提供商（Claude）上重试不再因历史记录中来自已停止轮次的孤立用户消息而失败** — 相同角色的连续消息在分发前折叠为单个轮次。
* **演练场重试在流前窗口期间不再短暂显示两次查询。**
* **ReAct 智能体现在在操作员拒绝批准请求后确认并停止**，而不是重试改写的工具调用。
* **演练场"建议后续问题"返回并现在是按智能体选择加入**（默认关闭；智能体设置中新增 `Follow-up Suggestions` 切换）。

## \[v0.8.5] - 2026-04-23

### Added

* **貢献者向けi18n ワークフロー**: 貢献者は英語ソースファイルに触れるPRを送信するために `LLM_API_KEY` を設定する必要がなくなりました。ローカルのpre-commitの翻訳ステップがスキップされた場合（キーなし）、新しい `.github/workflows/i18n-sync.yml` ワークフローがPRマージ後に `master` で EN → ZH/JA/KO/DE/FR に翻訳し、自動コミットします。pre-commitフックは生成されたロケールファイルへの手動編集を拒否するようになりました（正当な翻訳修正のための `ALLOW_LOCALE_EDIT=1` オーバーライド付き）。これにより、英語ソースと翻訳出力の間の暗黙的なドリフトを防ぎます。

* **i18n CI フォールバック エンドツーエンド検証**: スモークテストプッシュ（英語のみ、ローカル翻訳フック スキップ）により、GitHub Actionsワークフローが変更されたソースを検出し、5つのロケールすべてに翻訳し、再帰を防ぐために `[skip ci]` を付けてmasterに自動コミットすることが確認されました。

* **Exa統合ドキュメントページ**: サイドバーに専用の統合セクションがあり、最初のクラスのExaページでは、完全なExa検索サーフェス（neural / fast / deep-reasoning / instant）、フィルタリング、コンテンツ取得、およびニュース監視、研究論文取得、深い推論エージェント向けの3つのチューニングされたプリセットをカバーしています。Exa統合ディレクトリのパートナー向けランディングページとして機能します。

* **信創（Xinchuang）データベースサポート**: Database Connectorは、PostgreSQL/MySQLと並んでKingbaseES（人大金仓）、HighGo（瀚高）、DM8（达梦）をリストするようになりました。KingbaseESとHighGoはPG互換で、追加の依存関係なしに `asyncpg` を再利用します。DM8は公式の `dmPython` ベンダーホイールを使用します。スタンドアロンの `scripts/test_xinchuang_dbs.py` により、オペレーターはCLIからライブ接続を検証できます。

* **Feishuチャネル + 確認闸門（IM経由）**: 新しい `Channel` リソースタイプ（組織スコープ、認証情報は保存時に暗号化）により、組織はFeishuアプリを接続して送信メッセージングを行うことができます。`requires_confirmation=True` でフラグが立てられたツールは、ポータルの確認ダイアログのみを表示するのではなく、設定されたFeishuグループに承認/却下のインタラクティブカードを送信するようになりました。グループの任意の認可されたメンバーがFeishuから直接承認または却下できます。Settings → Channels管理UI（リスト、ダーティ状態保護付きの作成/編集、コピー可能なコールバックURLを含む詳細、テスト送信）、CRUD API（`/api/channels`）、署名検証とURLチャレンジサポート付きのFeishuイベントコールバックエンドポイント（`/api/channels/{id}/callback`）をカバーします。v0.9 IM Channel Integration ロードマップアイテムの最初のステップで、2026-04-24ロードショーより前にリリースされます。

* **Agent Hook System（スケルトン）**: `src/fim_one/core/hooks/` の新しい `PreToolUseHook` / `PostToolUseHook` 抽象化により、決定論的ロジックがLLMループの外で実行できます。FeishuGateHookが最初の具体的な実装で、確認闸門フローに接続されています。完全なフックライフサイクル + ユーザー定義YAMLフックはv0.9スコープのままです。

* **Hook Systemは現在ReAct およびDAGランタイムで稼働中**: `model_config_json` で `hooks.class_hooks` を宣言するエージェントは、すべてのチャットセッションでそれらのフックがインスタンス化および登録されます。最初のコンシューマー — `FeishuGateHook` — は、エージェントが `requires_confirmation=True` でフラグが立てられたコネクタアクションを持つツールを呼び出すときに自動的に発火し、組織のFeishuグループに承認/却下カードをポストし、ツールをブロックし、判定に基づいて再開または中止します。以前は、フック抽象化が実装されていましたが、Webレイヤーの何もそれをライブチャットに接続していませんでした。

* **Channelsおよび Hook System アーキテクチャドキュメント**: 新しい `docs/architecture/hook-system.mdx` は3つのフックポイント、フックがLLMループの外で実行される理由、およびFeishuGateHookをエンドツーエンドで説明しています。既存のアーキテクチャページ（system-overview、organization、react-engine、philosophy）はそれにクロスリンクしています。READMEはMessaging Channelsをv0.8の最初のクラスの機能としてリストし、Application Layerダイアグラムには、Portal/API/iframeと並んでIM ターゲットが含まれます。

* **Hook Approval Playground**: Channelsの詳細シートに「Test Approval Flow」アクションが追加され、機密ツール呼び出しをシミュレートし、リンクされたFeishuグループに実際の確認カードをプッシュし、レビュアーの決定をライブでポーリングします。既存のプレビューボタンとは異なり、これは完全な本番パスを実行します（本物の `ConfirmationRequest` 行、実際のFeishuコールバック、ステータス遷移）。デモと本番前のリハーサルは、本番フックが使用するのと同じコードパスを使用します。

* **エージェント単位のタスク完了通知**: エージェントは、長時間実行されるReActまたはDAGタスクが完了したときに、組織のチャネル（現在Feishu）にサマリーカードをプッシュできるようになりました。Settings → Agent → Notificationsでエージェント単位で設定可能です。汎用送信通知パターンの最初のコンシューマーです。

* **設定可能な確認闸門 — インライン*または*チャネル**: すべてのエージェントは、Settings内に「Approval」セクションを持つようになりました。3つのルーティングモード（Auto / Inline only / Channel only）、承認者スコープセレクター（initiator / agent owner / anyone in the org）、「すべてのツール呼び出しに確認を要求」オーバーライド、および明示的な承認チャネルピッカーがあります。Autoモードは、リンクされたチャネルが存在する場合はそれを使用し、チャットストリーム内のインライン承認カードに適切にフォールバックします。したがって、チャネルを持たないエージェントは、サイレント失敗する代わりに実際の承認UXを取得します。新しい `POST /api/confirmations/{id}/respond` エンドポイントはFeishuウェブフックと単一の決定記録パスを共有するため、チャットでクリックされたか、Feishuグループでクリックされたかに関わらず、すべての承認は同じ `approver_user_id` および `decided_at` 監査フィールドをスタンプします。

### Changed

* Playground のローディングインジケーターが、8秒後に疑似的な最大幅で固まる見た目の悪いプログレスバーの代わりに、微妙なテキストシマーを使用するようになりました。既存の2つのシマー実装（`.shiny-text` と `.text-shimmer`）を、オプションのウォームプリセット付きの単一のテーマ対応プリミティブに統合しました。
* Connector カードに、connector が `allow_fallback` を無効にしている場合に「Private default」バッジ（ツールチップ付き）が表示されるようになり、所有者は一目で、どのコネクターがすべてのユーザーに独自の認証情報を用意させる必要があるかを判断できるようになりました。connector 設定フォームの Allow-Fallback トグルの下のヘルプテキストも、このフラグが他のユーザーとの共有のみをゲートすることを明確にしており、所有者は常に自分のデフォルト認証情報を使用できます。

### 修复

* 连接器所有者使用 `allow_fallback=false` 且仅有默认凭证（无按用户凭证）发起的连接器调用不再返回 401"需要身份验证"错误。所有者现已豁免于回退闸门——该标志仅控制*其他*用户是否可以借用所有者的默认凭证。之前所有者自己的智能体在无声地发送未认证请求，同样的问题也影响了工作流 `connector_action` 节点。
* 对话导出现在为自动路由的 DAG 对话显示正确的模式标签（"Planner"/"规划"），而不是始终显示"Standard"。
* 导出时间戳现在遵循用户配置的时区，而不是显示原始 UTC。
* 上传的文件内容不再泄露到导出的对话中；仅包含用户的消息文本。
* 当提供商为每个流式工具调用增量重复使用 `index=0` 时，并行工具调用不再发生碰撞；聚合器现在通过 id 或名称变化检测边界，并将后续增量重新映射到正确的槽位。
* 设置 → 通道现在反映当前用户的组织角色：成员（非管理员/所有者）看到禁用的"新建通道"按钮、隐藏的编辑/启用-禁用/删除操作、只读横幅和权限感知的空状态——而不是提交时失败并显示"需要组织管理员访问权限"的启用 CTA。
* 会话过期重定向现在保留查询字符串，因此用户在重新身份验证后会回到他们正在查看的确切标签/筛选器，而不是裸路径。
* Feishu 通道表单不再在与分层在对话框上方的聊天选择器交互时显示虚假的"放弃未保存的更改"提示。
* Feishu 通道设置提示在 UI 本身已是中文时不再重复中文标签（例如之前渲染为"事件与回调（事件与回调）"）。
* 架构管理器中的"全部标注"不再返回 500 内部服务器错误——完整标注后端路径存在未绑定变量错误，阻止了每次调用。
* 编辑数据库连接器现在在密码字段中显示 `********` 占位符，而不是三个项目符号掩码文本，使得留空字段以保留存储密码的意图显而易见。
* 更新连接器操作不再折叠详情面板——编辑的操作保持选中状态，以便用户可以继续迭代。
* AI 连接器编辑器现在区分成功、部分失败和完全失败，而不是对所有三种情况显示相同的"已完成"消息。失败原因内联显示，以便用户可以看到实际出错的地方。
* AI 连接器编辑器不再能够一次性无声地清除多个操作。批量删除（>2 个操作）现在需要用户指令中的显式破坏性关键字（"rebuild"、"全部重建"、"wipe" 等）；否则操作被拒绝并显示清晰的错误，保护 `requires_confirmation` / JMESPath 设置免受意外丢失。
* 门户聊天中的确认卡片现在显示请求是否被路由到通道（例如 Feishu）或内联处理，以及关于谁被允许批准的人类可读提示（发起者、智能体所有者或任何组织成员）。通道路由的请求还会生成内联待处理卡片，以便用户不会想知道通知是否真的被发送了。
* Feishu 批准卡片在第一次决定后变为只读：`/callback` webhook 返回替换卡片，其中批准/拒绝按钮被移除，标题着色为绿色（已批准）或红色（已拒绝），防止重复点击。来自过时 Feishu 客户端的仍然到达的重复点击会收到"此请求已被批准/拒绝。"提示和一份新的已决定卡片副本，以便过时的视图赶上。
* 恢复了通道行和详情表上的纯"发送测试消息"操作。批准演练场执行完整的钩子往返，但仅通知通道（未连接批准钩子）仍需要快速凭证/连接性健全性检查，纯测试发送涵盖了这一点。
* 对同一 Feishu 批准卡片的并发点击不再都能成功。`/callback` 处理器现在通过条件 `UPDATE ... WHERE status='pending'` 翻转 `ConfirmationRequest` 状态，并使用受影响的行数来决定哪个调用者"赢"；之前两个并行请求都可能读取 `pending` 并竞争写入，可能导致同一行上批准后拒绝。
* 待处理的批准请求现在在 `CHANNEL_CONFIRMATION_TTL_MINUTES`（默认 24 小时）后通过后台清理器自动过期。防止数天后的过时点击翻转已被拆除的智能体状态；对过期卡片的下一次点击会收到灰色"已过期"已决定卡片和"不再活跃"提示。
* 发送测试消息现在传递纯文本通知（无批准/拒绝按钮）并仅存在于通道详情表中——不在行下拉菜单中。不打算使用批准钩子的用户不会被"测试"消息上的交互按钮混淆。批准往返测试仍可通过批准演练场按钮获得。
* 通道详情表紧凑化："如何完成设置"现在是默认折叠的可折叠部分（因此对于已配置的通道不会主导表），外部填充减少了，使内容更靠近表边缘。
* Builder AI 不再将掩码（`****`）凭证报告为缺失——它现在将其识别为已配置并跳过虚假的"凭证缺失"指导。
* 演练场智能体列表现在显示所有可访问的智能体，而不仅仅是已发布的智能体，因此草稿智能体可以在不发布的情况下进行测试。
* 聊天图像上传不再在格式错误的 `data:` URL 上崩溃流——MIME 提取器现在安全地回退到 `application/octet-stream`，而不是在生成中途引发 IndexError。
* 演练场图像缩略图现在在卸载时通过 `AbortController` 取消在途获取，避免过时的 blob-URL 分配和快速导航期间浪费的带宽。

## \[v0.8.4] - 2026-04-17

### 追加

* 会話の復旧：中断されたターン後、合成された tool\_result 行が永続化され、クライアントは `POST /chat/resume` 経由で最後に確認したカーソルを使用して切断された SSE ストリームを再開できます。
* Playground は `/chat/resume` エンドポイントを使用して切断された SSE ストリームを自動的に再接続し、指数バックオフ（最大 3 回の試行）を適用します。復旧中に「Reconnecting…」インジケーターを表示します。
* プロンプトキャッシュの可観測性：`cache_read_input_tokens` と `cache_creation_input_tokens` が LLM レスポンスからキャプチャされ、`TurnProfiler` でターンごとに集計され、`turn_cache` サマリー行（読み取り/作成トークン + 推定節約量）としてログに記録され、チャットの `done_payload` の新しい `cache` フィールドに表示されます。Anthropic プロンプトキャッシュが実際にヒットしていることを検証でき、API リレーステーションがキャッシュ割引を適用しているかどうかの検出器としても機能します。

### 変更

* システムプロンプトは、Anthropicプロンプトキャッシング機能を備えたメモ化されたセクションレジストリを使用するようになりました。安定したプレフィックスにブレークポイントを設定することで、Claudeモデルのキャッシュされたプレフィックスに対するターンあたりのトークンコストが約60～80%削減されます。ReAct JSONモード、ネイティブ関数呼び出しモード、および合成は、キャッシュ対応プロバイダー（Claude、Bedrock Anthropic、Vertex Claude）に対して2つのシステムメッセージを発行し、その他すべてのプロバイダーに対しては単一の連結メッセージにフォールバックします。

### 修正

* 思考/推論トークンが複数ターンの会話全体で保持されるようになりました — Anthropic の `signature` フィールドが API 要件に従ってキャプチャおよび再生されます。
* プロバイダー対応の推論再生ポリシー：`reasoning_content`（DeepSeek-R1、Qwen QwQ、Gemini thinking、OpenAI o-series から）は、後続のターンで非 Anthropic プロバイダーに再生されなくなりました。以前は、このフィールドが `ChatMessage.to_openai_dict()` で無条件にシリアライズされていたため、プロバイダーのドキュメント（DeepSeek と Qwen は両方とも「メッセージ履歴に `reasoning_content` を送り返さないでください」と明示的に記載）に違反し、複数ターンの交換のたびに自動プレフィックス / KV キャッシュを静かに無効化していました。ポリシーは `core/prompt/reasoning.py` に一元化されています — Claude ファミリー（Bedrock および Vertex プロキシを含む）は、必要に応じてシグネチャ付きの思考ブロックを引き続き再生します。

## \[v0.8.3] - 2026-04-16

### 追加

* **`convert_to_markdown` 組み込みツール** — Microsoft の MarkItDown を使用して、任意のファイル、URL、YouTube リンク、またはデータ URI をクリーンな Markdown に変換する新しい汎用エージェントツール。PDF、Word（.docx）、Excel（.xlsx/.xls）、PowerPoint（.pptx）、HTML、JSON、CSV、XML、ZIP、EPUB、Outlook .msg、画像、音声（音声→テキスト）、YouTube トランスクリプトに対応。すべてのエージェントでデフォルトで利用可能 — `web_fetch` と同じレベル。ビジョン対応 LLM が設定されている場合、埋め込み画像とスキャン済み PDF ページは公式の `markitdown-ocr` プラグイン経由で自動的に OCR されます。以前はこの機能は背景の RAG 取り込みパイプライン内に隠されていました。エージェントはインタラクティブな会話パス上でこれを利用できるようになりました。

* **`markitdown-ocr` 経由のドキュメント OCR** — DOCX / XLSX / PPTX 内の埋め込み画像とスキャン済み PDF ページは、FIM One の残りの部分がルーティングするのと同じビジョン対応 LLM を使用して OCR されるようになりました。組み込みの `convert_to_markdown` ツールと RAG 取り込みパイプラインの両方に適用されるため、チャット時の変換とナレッジベース取り込みは同じ入力に対してバイト単位で同一の Markdown を生成します。

* **ドキュメント OCR 用のユニバーサルビジョンプロバイダーサポート** — 新しい `LiteLLMOpenAIShim` ダックタイプは、任意の FIM One `OpenAICompatibleLLM` を openai SDK の `.chat.completions.create(...)` API 形状でラップし、`litellm.completion()` 経由でディスパッチします。MarkItDown（openai SDK サーフェスをハードコードしている）は Anthropic Claude、Google Gemini、Azure、Bedrock、および LiteLLM がサポートするその他のプロバイダーを利用できるようになりました — FIM One 内のプロバイダー固有のアダプターコードは不要です。

* **ビジョン対応 RAG 取り込み** — Office ドキュメントとスキャン済み PDF のナレッジベースアップロードは、ワークスペースのデフォルトビジョン LLM（DB ファースト、ENV フォールバック）を解決し、取り込み中に OCR 用に MarkItDown に渡すようになりました。ゼロリグレッション：ビジョン対応モデルが利用できない場合、取り込みはサイレントにテキストのみモードにフォールバックします — 機能前の動作とまったく同じです。

* **拡張 MarkItDown フォーマットカバレッジ** — RAG は MarkItDown の音声トランスクリプションと Outlook エクストラ経由で `.pdf`、`.msg`（Outlook）、`.epub`、`.mp3`、`.wav`、`.m4a` をネイティブに取り込むようになりました。YouTube URL は `markitdown[youtube-transcription]` 経由で `convert_to_markdown` を通じてフローします。

* **`LLM_SUPPORTS_VISION` 環境変数** — ENV モードのドキュメント OCR フォールバック用のオプションのオプトアウト（`=false`）。デフォルト動作は楽観的（`true`）で、一般的な ENV セットアップ（`gpt-4o`、`claude-3-5-sonnet`、`gemini-1.5-pro/flash`）をカバーします。ENV で設定された `LLM_MODEL` がビジョンをサポートしない場合（例：`deepseek-v3`、`qwen-chat`、`llama-3.1`、`gpt-3.5-turbo`、`o1-mini`）のみ `false` に設定して、ドキュメントアップロードのたびに失敗するビジョン呼び出しをスキップします。管理者がキュレーションした ModelGroup がアクティブな場合は完全に無視されます — DB モードが利用可能な場合は常に真実のソースです。

* **ターンレベルプロファイラー** — 各 ReAct ターンは、フェーズレベルのタイミング（`memory_load`、`compact`、`tool_schema_build`、`llm_first_token`、`llm_total`、`tool_exec`）をターンごとに単一の構造化ログ行で記録するようになりました。`REACT_TURN_PROFILE_ENABLED` 経由でトグル可能（デフォルト：オン；ゼロオーバーヘッドのノーオプの場合は `false` に設定）。

* **構造化コンパクトワークカード** — 会話圧縮は、独自の 9 セクション Markdown 出力を型付き `WorkCard` に解析し、新しいコンパクトを前のものにマージするようになりました。これにより、長いセッション全体でのエラーと保留中のタスクは、複数の圧縮ラウンド全体で生き残り、最初からやり直して再要約されるのではなく保持されます。

### 変更

* **ユーザーごとのレート制限** — LLM層のレート制限機能が、プロセス全体で共有される単一のバケットではなく、ユーザーごとに個別のバケットを保持するようになりました。1人のノイズの多いユーザーが同じワーカー上の他のすべてのユーザーをスロットルするのを防ぎます。`LLM_RATE_LIMIT_PER_USER`で切り替え可能です（デフォルト：有効）。

### 修正

* **ダングリングtool\_use復旧** — ユーザーStop、SSE切断、クラッシュなどでツール実行中に中断されたConversationは、以前は`tool_use`ブロックを持つアシスタントメッセージと対応する`tool_result`がない状態のままになり、次のターンでLLM APIから不透明なHTTP 400エラーが発生していました。`DbMemory.get_messages()`は、読み取りパスでこれらのダングリングブロックを検出し、合成された`[interrupted]`tool\_resultで修復するようになりました。生のDBログは変更されません。
* **空のコンテンツを持つアシスタントメッセージとtool\_callsが削除されなくなった** — DbMemoryの読み込みパスフィルターは、以前は空のテキストコンテンツを持つアシスタント行を暗黙的に破棄していました。ネイティブ関数呼び出し中間体（テキストなしで`tool_calls`のみを持つ）が削除されていました。フィルターは、空のコンテンツと`tool_calls`がないの両方を要求するようになりました。

## \[v0.8.2] - 2026-04-10

### Added

* **Intelligent Document Processing (Vision-Aware)** — モデル機能に基づいた適応的なドキュメント処理。ターゲットLLMがビジョン機能をサポートしている場合（GPT-4o、Claude 3/4、Gemini）、PDFページは画像としてレンダリングされ、ビジョンコンテンツブロック経由で送信され、完全な視覚的忠実度を実現します。テキストのみのモデルはpdfplumberテキスト抽出にフォールバックします。ビジョンモードとテキストのみモードの2つのモード。`DOCUMENT_PROCESSING_MODE`、`DOCUMENT_VISION_DPI`、`DOCUMENT_VISION_MAX_PAGES`環境変数で設定可能。管理画面でモデルごとの`supports_vision`トグル。
* **Document vision pipeline** — チャットにアップロードされたDOCX、PPTX、PDFファイルに含まれる画像が抽出され、モデルでビジョンが有効な場合、LLMにビジョンコンテンツとして送信されます。
* **Multi-turn vision persistence** — アップロードされたドキュメントと画像からのビジョンコンテンツは会話ターン全体で保持され、モデルは会話全体を通じて視覚的コンテキストを保持します。
* **Smart PDF processing** — テキストが豊富なPDFページはテキストと埋め込み画像を別々に抽出し（トークンを節約）、スキャンまたは画像のみのページはフルページPNGとしてレンダリングされ、最大の忠実度を実現します。
* **Pre-built sandbox image** — `Dockerfile.sandbox`に一般的なデータサイエンスパッケージ（pdfplumber、Pillow、pandas等）が含まれており、`--network=none`コンテナでAIコード実行がすぐに機能します。
* **Resource Fork completion** — 5つのリソースタイプすべてがフォークをサポートするようになりました：Agent、Connector、Workflow、MCP Server、Skill。KB フォークは削除されました（本質的にユーザーローカル）。

### Changed

* **チャット応答の高速化** — SSE ストリームはエージェント完了直後に閉じられ、タイトル生成とフォローアップ提案は応答をブロックせずにバックグラウンドで実行されます。
* **より効率的なコンテキスト圧縮** — 会話圧縮は構造化された9セクション形式を使用し、長いセッション全体で重要な情報（元のリクエスト、エラー、保留中のタスク）をより良く保持します。
* **エージェントループの削減** — エージェントプロンプトにアンチループ命令を追加し、サイクル検出閾値を低下させて、重複する同一ツール呼び出しをより早く検出します。
* **リクエスト起動の高速化** — LLM設定ルックアップとドメイン分類が並行実行され、リクエストあたりのオーバーヘッドが400～1100ms削減されます。
* **空のツール処理の改善** — 出力を返さないツールは、空の「(no output)」ではなく説明的なメッセージを生成し、無駄な再試行を防ぎます。
* **古いツール結果の自動クリーンアップ** — 最新6件より古いツール結果は、コンテキスト圧縮前に自動的にクリアされ、会話を効率的に保ちます。
* **ツール結果の集計予算** — ツール結果の総トークン数はセッションあたり40Kに制限され、予算を超えた場合は新しい結果が切り詰められ、大規模なAPI応答によるコンテキスト肥大化を防ぎます。
* **コンテキストオーバーフロー自動復旧** — LLMがコンテキスト長オーバーフローのためにリクエストを拒否した場合、エージェントは会話全体をクラッシュさせるのではなく、自動的に50%に圧縮して再試行します。
* **キーワードベースのツール選択** — クエリが名前または説明キーワードで特定のツールに明らかにマッチする場合、エージェントはLLMベースのツール選択呼び出しをスキップし、200～500msを節約します。
* **LLM接続プーリング** — すべてのLLM APIコールは最適化されたキープアライブ設定を備えた単一の接続プールを共有し、セッション全体の接続オーバーヘッドが削減されます。
* **より効率的な完了チェック** — 長い詳細な応答（200トークン以上）の場合、回答後の検証ステップはスキップされ、不要なLLMラウンドトリップが排除されます。
* **プロバイダー障害時のモデルフォールバック** — プライマリモデルが利用不可（レート制限、過負荷、またはダウン）の場合、エージェントは失敗するのではなく自動的に高速モデルで再試行します。

### 修正

* **AIスマートボディの読み取り不可ファイルでの幻覚** — AIスマートボディがファイルを読み取れない場合（例：画像ベースのPDF）、以前は他の無関係なファイルを読み取り、そのコンテンツをターゲットファイルのものとして提示していました。システムプロンプトのファイル整合性ガードレールがこれを防ぐようになりました。
* **アップロード用ファイルIDインジェクション** — アップロードされたファイルにはメッセージコンテキストにUUID `file_id` が含まれるようになり、スマートボディは推測することなく `read_uploaded_file` で直接アクセスできます。
* **新しいモデル構造からのビジョントグル読み取り** — モデル設定の `supports_vision` フラグが ModelGroup/ModelProviderModel ORM構造から正しく読み取られていませんでした。修正されました。
* **読み取り不可ファイルの改善されたエラーメッセージ** — ファイルが読み取れない場合、ツールは一般的なエラーではなく、特定のガイダンス（ファイルタイプ、ビジョン提案）を返すようになりました。

## \[v0.8.1] - 2026-03-29

### 追加

* **タイムゾーン対応の管理者通知** — 管理者通知メールは、常にUTCを表示する代わりに、各受信者の設定されたタイムゾーンでイベント時刻を表示するようになりました。
* **段階的なデータベースツール開示** — 個別のテーブルごとのツールを置き換える、`list_tables`/`discover`/`query`サブコマンド付きの単一の`database`メタツール。`DATABASE_TOOL_MODE`環境変数で設定可能（デフォルト`progressive`、フォールバック`legacy`）。
* **オンデマンドツール読み込み** — 12個以上のツールが利用可能な場合、`request_tools`メタツールにより、エージェントは初期選択に限定されるのではなく、会話中に動的に追加ツールを読み込むことができます。
* **段階的なMCPツール開示** — 個別のサーバーごとのツールを置き換える、`discover`/`call`サブコマンド付きの単一の`mcp`メタツール。`MCP_TOOL_MODE`環境変数で設定可能（デフォルト`progressive`、フォールバック`legacy`）。
* **ターンごとのトークン予算サーキットブレーカー** — `REACT_MAX_TURN_TOKENS`環境変数は、暴走するエージェントループの緊急停止を提供します。デフォルト`0`（無制限）— 日次コスト管理にはユーザーごとの`token_quota`を使用してください。
* **モデルごとのネイティブ関数呼び出しトグル** — `tool_choice_enabled`設定（ENV + 管理者によるモデルごと）により、強制ツール選択を拒否するモデルはレベル1をスキップしてJSONモードに直接進むことができます。設定 → モデル → 詳細で設定可能。
* **DAG品質の全面改善** — 5つの改善：非高速ステップの汎用モデルへのデフォルトモデルアップグレード、計画時のスキル自動検出、法務/医療/金融ドメイン向けの引用検証者、設定可能な切り詰め乗数を備えた構造化コンテンツコンテキスト保持、ルーターでのドメイン分類とドメイン対応モデル選択。
* **ReActでのドメインモデルエスカレーション** — 専門ドメイン（法務/医療/金融）は、必須のウェブ検索と引用検証を伴う推論モデルに自動エスカレートします。
* **ファイル添付ダウンロード** — チャットメッセージ内のファイルカードはクリック可能になり、元のファイルをダウンロードできます。
* **管理者通知マスタースイッチ** — 管理者メール通知のグローバルオン/オフトグル（実行時SMTP検出付き）。SMTPが設定されていない場合は警告バナーを表示し、すべての通知コントロールを無効にします。
* **SMTP Reply-Toヘッダー** — 新しい`SMTP_REPLY_TO`環境変数により、返信を送信者とは異なるアドレスに送信できます。
* **リソースフォークフェーズ1（MCPサーバー + スキル）** — `POST /api/mcp-servers/{id}/fork`および`POST /api/skills/{id}/fork`エンドポイントは、`visibility=personal`と`forked_from`系統追跡を備えたユーザー所有のディープコピーを作成します。MCPサーバーフォークでは暗号化されたenv/ヘッダーがスキップされ、スキルフォークでは公開ステータスがスキップされます。Alembicマイグレーションは両方のテーブルに`forked_from`列を追加します。41個のテスト。
* **ワークフロー接続依存関係自動購読** — `DependencyAnalyzer._resolve_workflow`は、サイクル検出（訪問済みセット）を伴うサブワークフロー依存関係を再帰的に解決するようになりました。エージェントおよびサブワークフローノードは、依存関係マニフェストのコンテンツ依存関係として正しく追加されます。不足しているリソースは適切に処理されます（ログ警告、失敗なし）。19個のテスト。
* **プリビルトソリューションテンプレート（マーケットシードコンテンツ）** — 8つの業界別ソリューションテンプレートが初回ユーザー登録時にべき等的にブートストラップされます：財務監査、契約レビュー、データレポート、IT ヘルプデスク、HR オンボーディング、営業アシスタント、コンテンツライター、会議要約。各テンプレートは、中国語のSOP付きのエージェント + スキルをバンドルしています。マーケット組織に公開されます（`visibility=org`、`publish_status=approved`）ので、マーケットプレイスで即座に利用可能です。4個のテスト。
* **ReActサイクル検出** — 繰り返される同一のツール呼び出しの決定論的検出。同じ引数での3回連続の呼び出し後に警告を挿入し、エージェントが失敗したツールでループするのを防ぎます。`REACT_CYCLE_DETECTION_THRESHOLD`で設定可能。
* **ReAct完了チェックリスト** — ツールが使用された場合に最終回答を受け入れる前の1回限りの検証プロンプト。時期尚早または不完全な応答を削減します。エージェントインスタンスごとにトグル可能。

### Changed

* **完了チェックリスト最小ツール閾値** — チェックリストはエージェントが3回以上のツール呼び出しを行った場合にのみ実行されるようになりました（`REACT_COMPLETION_CHECK_MIN_TOOLS`で設定可能）。シンプルな1～2ツールタスクは不要なレイテンシを避けるため検証をスキップします。
* **動的システムプロンプト予算配分** — コンテキスト予算計算から固定の`SYSTEM_PROMPT_RESERVE`（4Kトークン）を削除しました。ContextGuardはシステムプロンプトを動的に考慮し、各イテレーションで約4Kの追加利用可能コンテキストを提供します。
* **一元化されたツール切り詰め** — すべてのツールタイプが共有モジュールへの切り詰めを委譲するようになりました。デフォルトは`TOOL_OUTPUT_MAX_CHARS`、`TOOL_OUTPUT_MAX_ITEMS`、`TOOL_OUTPUT_MAX_BYTES`環境変数で設定可能です。
* **ドメイン検出の分離** — ドメイン分類は各エンドポイントで独立して実行され、自動ルーティングにバンドルされなくなりました。ドメインSOP指示は、Webサーチを強制するのではなくガイドするようにソフト化されました。
* **`AUTO_ROUTING`環境変数を削除** — 自動エンドポイントは常にクエリを分類します。

### 修正

* **重複メッセージ送信** — チャット入力は同期ガードを使用して、急速なクリックで同じメッセージが複数回送信されるのを防ぐようになりました。
* **構造化出力デグラデーションチェーン** — 3レベルのフォールバック（ネイティブ FC → JSON モード → プレーンテキスト）が全レベルを正しく通過するようになりました。
* **`json_mode_enabled` DB値が無視される** — Admin経由で設定されたモデルは、環境変数に常にフォールバックするのではなく、モデルごとの設定を正しく使用するようになりました。
* **DAG計画失敗メッセージ** — 生のパイプラインエラーの代わりに、ユーザーフレンドリーな二言語メッセージを表示するようになりました。
* **MCP サーバーオーナーの allow\_fallback バイパス** — サーバーオーナーは `allow_fallback=False` によってブロックされなくなりました。

## \[v0.8] - 2026-03-20

### 追加

* **Marketplace再設計 Phase 1 — Solutions + Components** — 2層Market モデル（Solutions: Agent/Skill/Workflow; Components: Connector/MCP Server）とスコープセレクタ（Global Market / org）。KB は Market スコープから削除。統一されたサブスクリプションモデル。
* **Smart file content injection + `read_uploaded_file` tool** — 小さいアップロード（32K文字未満）は自動的に LLM コンテキストにインライン化；大きいファイルはメタデータ + tool ヒント。ページネーションと正規表現検索を備えたデュアルモード読み取りツール。`GET /api/files/{file_id}/content` エンドポイント。
* **Workflow Blueprint System** — マルチステップ自動化用のビジュアルワークフローエディタ：25ノードタイプ（Start、End、LLM、ConditionBranch、QuestionClassifier、Agent、KnowledgeRetrieval、Connector、HTTPRequest、VariableAssign、TemplateTransform、CodeExecution、Iterator、Loop、VariableAggregator、ParameterExtractor、ListOperation、Transform、DocumentExtractor、QuestionUnderstanding、HumanIntervention、SubWorkflow、ENV など）、React Flow v12 エディタ（ドラッグ&ドロップパレット、自動レイアウト）、SSE リアルタイム実行、変数補間、条件/分類器ブランチング、ノード単位のエラー戦略、ノード単位のタイムアウト、インポート/エクスポート/複製、差分ビューア付きバージョン履歴、14個の組み込みテンプレート、306テスト。
* **Workflow Triggers** — タイムゾーン対応の Cron スケジューリング；ユーザー認証なしで外部実行用の公開 API キー（`wf_` プレフィックス）；バッチ実行（最大100入力セット、設定可能な並列処理）。
* **Workflow Operations** — リアルタイム実行ログビューア、変数スナップショット付きトレースビューア、キャンバス上の実行リプレイオーバーレイ、実行履歴エクスポート、日次トレンドとパーセンタイル付き分析ダッシュボード、ノード単位の統計パネル、お気に入り/ピン留め、インライン検証バッジ、キャンバスノード検索（`Cmd+F`）、キーボードショートカット、グリッドスナップ。
* **Workflow Admin + Templates** — すべてのワークフロー用の管理タブ、管理者 CRUD と5つのシードテンプレート付き `WorkflowTemplate` モデル、org レベルのレビューゲーティング付きパブリッシュフロー、外部参照用のインポート競合リゾルバー。
* **Agent Skill System** — オンデマンドスキル読み込み：CRUD/パブリッシュ/レビュー機能付き `Skill` モデル、段階的開示用の `read_skill(name)` ツール（約80%のトークン削減）、エージェント単位の `compact_instructions` でカスタム ContextGuard 圧縮。フルスキル UI（リストページ、エディタ、エージェントスキルセレクタ）。
* **ConnectorMetaTool（段階的開示 Phase 1-2）** — 単一のメタツールがアクション単位のツールに置き換わり。システムプロンプトは軽量スタブ（約30トークン/コネクタ）を受け取り；エージェントはオンデマンドで `discover`/`execute` を呼び出し。後方互換性用の `CONNECTOR_TOOL_MODE` フィーチャーフラグ。
* **Connector インポート/エクスポート/フォーク** — JSON エクスポート経由でコネクタテンプレートを共有、フォーク経由でクローンとカスタマイズ。バックエンドはエクスポート時に認証情報をサニタイズ。
* **Connector 認証情報暗号化 + ユーザー単位のオーバーライド** — Fernet 暗号化付き `connector_credentials` テーブル、`allow_fallback` フラグ、`GET/PUT/DELETE /my-credentials` エンドポイント。
* **Publish レビュー UI** — 承認/却下ワークフロー付き org レベルのレビューシステム、リソースカード上のステータスバッジ、パブリッシュダイアログ内のレビュー通知、却下されたリソースの再送信。
* **Semantic schema annotations** — `description` と `pii` フラグ付き16個の定義済みセマンティックタグ（コネクタフィールド用）、LLM ツール説明に表示。
* **Agent mid-loop self-reflection** — ReAct で6イテレーション毎に注入されるゴールチェックプロンプト（長いチェーンでのドリフト防止）。
* **Shadow Market org + リソースサブスクリプション** — プルベースのリソース共有：marketplace 経由で発見されたリソースを明示的にサブスクライブ。参照/サブスクライブ/サブスクライブ解除用の Market API。
* **Agent 自動発見 + サブエージェントバインディング** — `discoverable` フラグ + `sub_agent_ids` ホワイトリスト + 1レベルの委譲用 `CallAgentTool`。
* **MCP server 認証情報 + ユーザー単位のオーバーライド** — 認証情報フォールバック動作用の `allow_fallback` フラグ付き `mcp_server_credentials` テーブル。
* **Connector/KB トグル** — 両方のリソースタイプ用の一時停止/再開エンドポイント。
* **スタンドアロン KB 会話** — エージェントバインディングなしで直接 KB チャット用の会話上の `kb_ids` フィールド。
* **レビューログ監査タブ** — システムログ/レビューログトグルと org/リソース単位でフィルタリング可能なレビュー履歴付き管理者監査ページ。
* **Agent directive in synthesis** — `agent_directive` パラメータは最終回答がエージェントのコア目的を尊重することを保証。

### 変更

* **サブスクリプションベースの可視性モデル** — 3段階から2段階（自分 → 購読済み）に簡略化。自動移行により既存のアクセスが保持されます。
* **ツールキャッシュホワイトリスト** — ブラックリストを廃止し、ツールの明示的な `cacheable` プロパティに置き換え。11個の読み取り専用ツールがキャッシュ可能としてマーク。
* **DAG エグゼキューター カスケード失敗** — 失敗したステップが依存関係のある処理をカスケードブロックし、推移的に伝播。
* **DAG プランナーの改善** — プランナーのツール説明、全ラウンドにわたる完全な再計画履歴、14個のエンジン定数を環境変数としてパラメータ化。
* **stream\_answer 観測値の切り詰め** — 2000文字から8000文字に増加（`REACT_TOOL_OBS_TRUNCATION` で設定可能）。
* **エビデンス信頼度 UI** — 琥珀色の警告カード、ホバーポップオーバー付き `[N]` 引用バッジ、並行比較表示の競合警告バナー。
* **ワークフロー バージョン変更サマリー** — バージョン保存時にブループリント差分から自動生成される人間が読める形式のサマリー。
* **ワークフロー実行保持期間のクリーンアップ** — 設定可能な期間/数制限を備えたバックグラウンドクリーンアップタスク。環境変数：`WORKFLOW_RUN_MAX_AGE_DAYS`、`WORKFLOW_RUN_MAX_PER_WORKFLOW`。
* **コネクター サーキットブレーカー** — 3状態マシン（closed/open/half-open）、コネクターごとの障害追跡、監視エンドポイント。
* **elkjs を軽量 BFS 自動レイアウトに置き換え** — `/workflows/[id]` バンドルが 473 kB から 43 kB に削減。

### 修正

* **ワークフロー評価名前空間のフラット化** — ConditionBranchおよびVariableAssignにおける短い変数名解決を修正しました。
* **`is_active`トグル時の再レビューなし** — `is_active`をトグルしても、`publish_status`が`approved`から`pending_review`に戻らなくなりました。
* **条件分岐のカスケードスキップ** — スキップされたノードが発信エッジを正しく非アクティブ化するようになりました。
* **依存関係アナライザー** — `skill_ids`解決とケース非依存ノードタイプマッチングを修正しました。

### 削除

* `is_global`フィールドとすべてのグローバル可視性概念を削除——Market org + サブスクリプションに置き換え。
* グローバルエージェント/MCPサーバー管理エンドポイントを削除。

## \[v0.7.5] - 2026-03-12

### 追加

* **フリーモード切り替え** — 会話中にAuto/React/DAGモード間を切り替え可能。`metadata.mode`経由のターンごとのモード追跡。
* **3つのモデルロール** — General、Fast、Reasoningティア向けの独立した環境設定。Fastモデルはメインモデル設定を継承しなくなりました。
* **DAGエンジン改善** — `StepOutput`構造化データ、非同期ロックスタンピード防止機能付きツールキャッシュ、再試行機能付きステップごとのLLM検証（`DAG_STEP_VERIFICATION`）、高速LLM分類経由の自動ルーティング（`AUTO_ROUTING`）。
* **コネクタ認証情報暗号化** — 認証トークンを`connector_credentials`テーブルに抽出し、`CREDENTIAL_ENCRYPTION_KEY`経由のFernet暗号化を実装。ユーザーごとの認証情報オーバーライドエンドポイント。`allow_fallback`フラグ。
* **ModelConfig APIキー保存時暗号化** — 透過的な書き込み時暗号化/読み込み時復号化と後方互換性のあるプレーンテキスト検出。

### Changed

* **スケルトンスクリーン** — すべてのリスト/グリッドページは、ロード中にスピナーの代わりにレイアウト対応のスケルトンを表示します。

### 修正

* 高速モデルがメインモデルから設定を継承しなくなりました。
* SSEルーティングイベントフィールド名がバックエンドと一致するようになりました。

## \[v0.7.4] - 2026-03-12

### 追加

* **Evaluation Center** — テストデータセット管理、LLM採点による並列評価実行、ケースごとの合格/不合格/レイテンシ/トークン結果ビューアと自動ポーリング機能。
* **Admin: モデルごとの `json_mode_enabled` フラグ** — AWS Bedrock プリフィル問題を防ぐ明示的なトグル。ENV モデルは `LLM_JSON_MODE_ENABLED` で制御。
* **SSE Protocol v2** — `delta_reasoning`、`usage` フィールドを備えたリアルタイムストリーミング、`done`/`suggestions`/`title`/`end` イベントの分割。
* **AI Builder 拡張** — 7つの新しいビルダーツール、`is_builder` フラグ、ビルダープロンプト自動更新、SSRF ガード。コネクタ管理用の完全な ReAct エージェントダイアログ。
* **デュアルデータベース対応** — SQLite（ゼロコンフィグ）+ PostgreSQL（本番環境）。Docker Compose が PG をヘルスチェック付きで自動プロビジョニング。
* **拡張思考/推論** — OpenAI o-series、Gemini 2.5+、Claude 向けの `LLM_REASONING_EFFORT` と `LLM_REASONING_BUDGET_TOKENS`。
* **Admin: ツール無効化** — ツールごとの有効/無効トグル。無効なツールは実行時にチャットからフィルタリング。
* **設定: Organizations タブ** — 設定から直接、組織の作成、参加、管理とメンバーロール管理が可能。
* **Docker Compose デプロイメント** — 単一イメージ、名前付きボリューム、スタンドアロン Next.js 出力。
* **エクスポート: PDF 形式** — 会話を PDF ドキュメントとしてエクスポート可能。
* **マルチワーカー対応** — `WORKERS=N` 環境変数、ワーカー間リレー用の Redis インタラプトブローカー。

### Changed

* **LLM layer: LiteLLM** — 汎用プロバイダサポートのため、直接的な `AsyncOpenAI` クライアントを置き換えました。
* **構造化出力の段階的低下** — 3段階の抽出（Native FC → JSON Mode → プレーンテキスト + regex）で `structured_llm_call()` を統一しました。
* **スマートリレールーティング** — サードパーティリレープラットフォームのURLパターンからAPIプロトコルを自動検出します。

### 修正

* Docker サンドボックス (DooD) ボリュームマウントパスの翻訳。
* セキュリティ: サンドボックス AST ダンダー検証、MCP stdio デフォルト、SSRF DNS リバインディング、シェルメタ文字回避、コネクタテンプレートインジェクション。
* 管理ダッシュボード統計情報が PostgreSQL でクラッシュする問題。
* Docker: i18n ファイル検出、スタートアップレース条件、カスタムポート用 OAuth 自動検出。
* エクスポート: CJK 用 RFC 5987 ファイル名。

## \[v0.7.3] - 2026-03-06

### 追加

* **グローバルMCPサーバー** — 管理者がプロビジョニングし、すべてのチャットセッションで読み込まれます。
* **構造化監査ログ** — 構造化列を備えた `write_audit()` ヘルパー。

### 修正

* 招待コードの `registration_enabled` フィールドのレガシー互換性。

## \[v0.7.2] - 2026-03-06

### 追加

* **招待制登録** — 3つのモード（オープン/招待/無効）と招待コードのCRUD機能。
* **ストレージ管理** — ユーザーごとのディスク使用量、クリア、孤立ファイルのクリーンアップ。
* **ユーザーごとの強制ログアウト** — 管理者トークンの失効。
* **会話のモデレーション** — 管理者による全会話のリスト表示/削除。

## \[v0.7.1] - 2026-03-06

### 追加

* **API ヘルスダッシュボード** — システム統計、コネクタメトリクス、トークン使用量チャート。
* **JWT 認証** — トークンベースの SSE 認証、会話所有権。
* **Admin API** — エージェント管理、ユーザーごとのトークンクォータ（429 エンフォースメント）。

## \[v0.7] - 2026-03-06

### 追加

* **Admin Platform** — ユーザー管理、ロール切り替え、パスワードリセット、アカウント有効化/無効化。
* **First-run setup wizard** — ガイド付き管理者アカウント作成。
* **Personal Center** — ユーザーごとのグローバル指示、言語設定。

## \[v0.6.5] - 2026-03-05

### 追加

* **ユーティリティツール** — `email_send`、`json_transform`、`template_render`、`text_utils`。
* **コネクタレスポンスフィルタリング** — `CONNECTOR_RESPONSE_MAX_CHARS` と `CONNECTOR_RESPONSE_MAX_ITEMS`。
* **埋め込みモデルオプション** — Jina、OpenAI、およびカスタムプロバイダー。

## \[v0.6] - 2026-03-01

### 追加

* **Connector Platform** — Full CRUD、ConnectorToolAdapter、ユーザーごとの認証情報暗号化、確認ゲート、サーキットブレーカー、監査ログ。
* **MCP integration** — プロトコル経由のツール自動検出、プロセス分離。

## \[v0.5] - 2026-02-28

### 追加

* **完全なRAGパイプライン** — Jinaエンベディング + LanceDB + FTS + RRF + リランカー。
* **根拠のある生成** — エビデンスアンカー付き引用、矛盾検出、信頼度スコア。
* **KB ドキュメント管理** — チャンクレベルのCRUD、検索、リトライ、スキーママイグレーション。
* **ContextGuard + ピン留めメッセージ** — トークン予算マネージャー。
* **DAG 再計画** — 最大3ラウンド；メモリ用LLM Compact。

## \[v0.4] - 2026-02-25

### 追加

* **マルチターン会話** — DbMemory永続化、スマートな切り詰め。
* **ツールステップ折りたたみUI** — ツール呼び出しの折りたたみ/展開。
* **HTTPリクエスト + シェル実行ツール**。
* **エージェント管理** — 作成、設定、バインドされたモデル/ツールで公開。
* **JWT認証**。

## \[v0.3] - 2026-02-25

### 追加

* **Web ツール** — `web_search`（Jina/Tavily/Brave）、`web_fetch`。
* **ファイル操作 + MCP クライアント**。
* **DAG ビジュアライゼーション** — ライブステータス付きのインタラクティブフロー グラフ。
* **Docker でのコード実行** — `--network=none`、メモリ制限、タイムアウト。

## \[v0.2] - 2026-02-24

### 追加機能

* **リトライと レート制限** — 指数バックオフ。
* **使用状況追跡** — リクエストごとのトークン/コスト計算。
* **ネイティブ関数呼び出し** — 直接モデルツール選択。
* **マルチモデル対応** — DAG ステップ用の `FAST_LLM_MODEL`。
* **メモリシステム** — ウィンドウ、サマリー、Db メモリ。
* **FastAPI バックエンド** — `/api/execute`、`/api/stream`（SSE）。

## \[v0.1] - 2026-02-22

### 追加

* **ReActAgent** — Reason → Act → Observe ループ。
* **DAGPlanner** — LLM生成の依存グラフ、並行実行、結果検証。
* **Tools** — 計算機、Python実行。
* **Portal UI** — Next.jsによるストリーミング、ダーク/ライトテーマ、KaTeX。
