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

# 実行とテスト

> Jinba ToolboxコンソールでSandbox環境内のツール実行、実行結果の確認、実行履歴の閲覧を行う

Jinba Toolboxは、すべてのツールを分離されたSandboxコンテナ内で実行します。エディタからインタラクティブにツールをテストしたり、組織の完全な実行履歴を確認したりできます。

## ツールエディタからのテスト

ツールエディタには、ライブSandboxに対してツールを実行するための組み込み**テストパネル**があります。

<Steps>
  <Step title="テスト入力を入力">
    テストパネル（エディタの下部セクション）に、ツールの入力スキーマに一致するJSONオブジェクトを入力または貼り付けます。例：

    ```json theme={null}
    {
      "name": "Alice",
      "greeting": "Hi"
    }
    ```
  </Step>

  <Step title="ツールを実行">
    **Run**ボタンをクリックするか、`Cmd/Ctrl + Enter`を押します。ToolSetで設定された言語、パッケージ、環境変数を使用してSandbox内でツールが実行されます。
  </Step>

  <Step title="結果を確認">
    テストパネルは自動的に**Output**タブに切り替わり、以下が表示されます：

    * **Output** -- 成功時に`run`関数が返したJSONオブジェクト。
    * **Error** -- ツールが失敗した場合のエラー名とメッセージ。
    * **Logs** -- 実行中にキャプチャされた`stdout`と`stderr`の出力。
  </Step>
</Steps>

<Note>
  エディタからのテストは、公開済みバージョンではなく現在の**ドラフト**コードを使用します。これにより、公開前に素早く反復できます。
</Note>

### テスト実行の流れ

Runをクリックすると、バックグラウンドで以下の処理が行われます：

1. コンソールがドラフトコードと入力JSONをAPIの`/test`エンドポイントに送信します。
2. APIがToolSetで設定されたプロバイダー（E2BまたはDaytona）を使用してSandboxインスタンスを起動します。
3. ToolSetで定義されたパッケージがSandboxにインストールされます。
4. 環境変数がSandboxプロセスに注入されます。
5. 提供された入力でコードが実行されます。
6. Sandboxが戻り値、stdout、stderr、およびエラーをキャプチャします。
7. 結果がコンソールに送信され、テストパネルに表示されます。

## 実行履歴

エディタ、REST API、MCPコールのいずれから実行されたかに関わらず、すべてのツール実行は**Run**レコードを生成します。実行履歴ページは、組織内のすべての実行を一元的に確認するためのビューを提供します。

### 実行の閲覧

組織のサイドバーで**Runs**に移動して実行履歴を確認します。

実行リストには以下が表示されます：

| カラム          | 説明                                              |
| ------------ | ----------------------------------------------- |
| **Tool**     | 実行されたツールのSlug                                   |
| **Status**   | 現在の状態：`success`、`failed`、`running`、または`pending` |
| **Duration** | ミリ秒単位の実行時間                                      |
| **Date**     | 実行が作成された日時                                      |

実行は作成日時の新しい順にソートされます。

### ステータスインジケーター

各実行には、実行ライフサイクルのどの段階にあるかを示すステータスがあります：

<CardGroup cols={2}>
  <Card title="Pending" icon="clock">
    実行が作成されましたが、Sandboxがまだ実行を開始していません。
  </Card>

  <Card title="Running" icon="spinner">
    ツールがSandbox内で現在実行中です。
  </Card>

  <Card title="Success" icon="circle-check">
    ツールが正常に完了し、出力を返しました。
  </Card>

  <Card title="Failed" icon="circle-xmark">
    実行中にツールでエラーが発生しました。
  </Card>
</CardGroup>

### 実行詳細ページ

リスト内の任意の実行をクリックすると、詳細ページが開きます。詳細ビューには以下が表示されます：

**サマリーカード**

上部に表示される4カラムのサマリーで、Duration、Created、Started、Completedのタイムスタンプを表示します。

**タブ付きデータビュー**

* **Input** -- ツールに送信されたJSON入力。
* **Output / Error** -- 成功時はツールが返したJSON出力。失敗時はエラー名とメッセージ。
* **Logs** -- Sandboxプロセスからキャプチャされた`stdout`と`stderr`。このタブはログが存在する場合のみ表示されます。

### 呼び出し側とプロバイダー側のビュー

実行には2つの視点があります：

* **呼び出し側ビュー** -- 自分の組織がツールを実行した場合（自組織のツールでも他組織の公開ツールでも）、入力、出力、エラー、ログの完全な詳細を確認できます。
* **プロバイダー側ビュー** -- 他の組織が自分の公開ツールを実行した場合、実行のステータスとメタデータは確認できますが、入力、出力、ログは**確認できません**。これは呼び出し側のデータプライバシーを保護するためです。

プロバイダー側ビューでは、実行詳細は呼び出し側の組織のみが利用可能であることを示すメッセージが、呼び出し側の組織名とともに表示されます。

## API経由の実行

コンソール以外にも、プログラムからツールを実行できます：

<CardGroup cols={2}>
  <Card title="REST API" icon="server">
    `POST /v1/orgs/:orgId/toolsets/:slug/tools/:toolSlug/run` -- API経由で公開済みバージョンのツールを実行します。実行スコープを持つAPIキーが必要です。
  </Card>

  <Card title="MCP Endpoint" icon="link">
    `POST /v1/orgs/:orgId/toolsets/:slug/mcp` -- Model Context Protocol経由でツールを呼び出します。AIエージェントは標準のMCP JSON-RPCインターフェースを介してツールの発見と呼び出しが可能です。
  </Card>

  <Card title="公開ツールの実行" icon="globe">
    `POST /v1/public/:orgSlug/:toolsetSlug/run/:toolSlug` -- 任意の組織のAPIキーを使用して公開ツールを実行します。
  </Card>

  <Card title="SDK" icon="cube">
    `@jinba-toolbox/sdk`を使用して、TypeScriptアプリケーションからシンプルな関数呼び出しでツールを実行します。
  </Card>
</CardGroup>

すべての実行方法は、コンソールの実行履歴に表示されるRunレコードを生成します。

## 実行ライフサイクル

ツール実行の完全なライフサイクル：

<Steps>
  <Step title="Pending">
    APIが実行リクエストを受信し、ステータスが`pending`のRunレコードを作成します。
  </Step>

  <Step title="Sandboxの作成">
    設定されたプロバイダー（E2BまたはDaytona）を使用して、ToolSetの言語、パッケージ、環境変数を含むSandboxインスタンスが作成されます。
  </Step>

  <Step title="Running">
    検証済みの入力を使用して、Sandbox内でツールのコードが実行されます。ステータスが`running`に変更されます。
  </Step>

  <Step title="完了">
    Sandboxが出力（またはエラー）とキャプチャされたstdout/stderrログを返します。ステータスが`success`または`failed`に変更され、所要時間が記録されます。
  </Step>
</Steps>

## ベストプラクティス

* **さまざまな入力でテストする** -- 公開前に、テストパネルでエッジケース（空文字列、大きな数値、オプションフィールドの欠如）をカバーします。
* **デバッグにはログを確認する** -- ツールが失敗した場合、`stderr`ログにはスタックトレースやエラー詳細が含まれていることが多く、問題の特定に役立ちます。
* **実行履歴を監視する** -- Runsページを定期的に確認して、失敗パターンや想定外の実行時間を発見します。
* **失敗後にCopilotを活用する** -- テスト実行が失敗した後、AI Copilotはエラー出力にアクセスでき、修正を提案できます。
