Skip to content

flow

ツール呼び出しの順序を制御するルールのビルダーを作成します。「ツール A を呼んだ後にツール B を呼んではいけない」という制約を定義できます。

シグネチャ

ts
const builder = flow(from);

パラメーター

パラメーター説明
fromstring | RegExp先行ツールのパターン (必須)

メソッド

メソッド戻り値説明
.to(pattern)FlowBuilder禁止する後続ツールのパターン (必須)
.window(n)FlowBuilder直近 N 件の履歴のみチェック
.block(message?)Rule違反時にブロック (severity: "error")
.warn(message?)Rule違反を警告 (severity: "warn")
.log(message?)Rule違反をログ記録 (severity: "info")

WARNING

.to() を呼ばずにターミナルメソッドを呼ぶとエラーになります。

戻り値

FlowBuilder.to() を呼んだ後、ターミナルメソッドで Rule を返します。

使用例

基本

ts
import { flow } from "open-mcp-guardrails";

flow("get_website").to("send_email").block();

カスタムメッセージ

ts
flow("get_website").to("send_email")
  .block("Web データをメール送信できません");

正規表現で複数ツールを指定

ts
flow(/fetch|curl/).to(/write|send/).block();

ウィンドウ指定

直近 N 件の履歴のみチェックします:

ts
flow("read_database").to("send_slack_message")
  .window(10)
  .warn("DB データの Slack 送信を検出しました");

JSON 設定

guardrails.json での設定例:

json
{
  "type": "flow",
  "action": "block",
  "from": "get_website",
  "to": "send_email"
}
json
{
  "type": "flow",
  "action": "block",
  "from": "get_website",
  "to": "send_email",
  "message": "Web データをメール送信できません"
}
json
{
  "type": "flow",
  "action": "block",
  "from": "/fetch|curl/",
  "to": "/write|send/"
}
json
{
  "type": "flow",
  "action": "warn",
  "from": "read_database",
  "to": "send_slack_message",
  "window": 10,
  "message": "DB データの Slack 送信を検出しました"
}

fromto で正規表現を使う場合は /pattern/flags 形式で指定します。

関連