# EMQXエージェントをLinearに接続する

Linearコネクターを使用すると、EMQXエージェントが課題、プロジェクト、コメントの作成、検索、読み取り、更新を行えます。また、チーム、ユーザー、ラベル、ワークフローステートをプロジェクト自動化のコンテキストとして提供します。

## よくあるユースケース

- MQTTアラートやFleetsイベントから課題を作成する。
- チームまたはプロジェクトの課題を要約する。
- 自動チェック後に課題のステートを更新する。
- 課題に分析結果をコメントとして追加する。

チャットプロンプトの例：

```text
Use the engineering-linear connector to create an issue in the IoT team for the repeated disconnect alert. Include the device ID and the last five error messages.
```

## 前提条件

コネクターを追加する前に以下を準備してください：

- Linearアカウント。アカウントにワークスペースがない場合は、認証時に作成できます。
- Composioに対してLinearワークスペースの管理者権限、読み取り権限、書き込み権限を付与する許可。
- ワークフローで必要なチームおよびプロジェクトへのアクセス権。

## Linearコネクターの追加

1. 左側のナビゲーションメニューで**Connectors**をクリックします。
2. **Available**タブで**Linear**を見つけて**Add**をクリックします。
3. 説明的なコネクター名を入力します。
4. **Confirm**をクリックします。Linearの認証フローがダイアログで開きます。

Linearアカウントにすでにワークスペースがある場合は、[Composioの認証](#authorize-composio)に進んでください。ない場合は、認証を完了する前にワークスペースを作成してください。

### 必要に応じてLinearワークスペースを作成する

1. **Create a workspace**ページで、ワークスペースの**Name**を入力し、**URL**を確認または編集します。
2. **Region**リストから**United States**または**European Union**を選択します。
3. **Create workspace**をクリックします。
4. [任意] チームメンバーを招待するか、**Skip**をクリックします。
5. [任意] GitHubを連携するか、**Skip**をクリックします。
6. [任意] Slackを連携するか、**Skip**をクリックします。
7. 受信したい更新サブスクリプションを選択し、**Finish**をクリックします。

チームメンバー招待、GitHub連携、Slack連携、更新サブスクリプションはLinearのオンボーディングの一環であり、EMQXエージェントコネクターの認証には必須ではありません。

### Composioの認証

1. 認証ページで、接続するワークスペースをワークスペースリストから選択します。
2. Composioに要求されるアクセス権を確認します。認証により以下が付与されます：
   - ワークスペース設定およびメンバー管理の管理者権限
   - ワークスペースの読み取り権限
   - ワークスペースの書き込み権限
3. **Authorize**をクリックします。
4. 認証ダイアログが閉じてEMQXエージェントに戻るまで待ちます。
5. **Added**タブでコネクターのステータスが**Authorized**になっていることを確認します。

## 対応ツール

### リソースの作成および更新

| ツール | アクセス | 説明 |
|---|---|---|
| `LINEAR_CREATE_LINEAR_COMMENT` | 書き込み | Linear課題にコメントを作成します。 |
| `LINEAR_CREATE_LINEAR_ISSUE` | 書き込み | Linear課題を作成します。 |
| `LINEAR_CREATE_LINEAR_PROJECT` | 書き込み | Linearプロジェクトを作成します。 |
| `LINEAR_REMOVE_ISSUE_LABEL` | 書き込み | 課題からラベルを削除します。 |
| `LINEAR_RESOLVE_COMMENT` | 書き込み | Linearコメントを解決済みとしてマークします。 |
| `LINEAR_UPDATE_ISSUE` | 書き込み | Linear課題を更新します。 |
| `LINEAR_UPDATE_LINEAR_COMMENT` | 書き込み | Linearコメントを更新します。 |

### リソースの読み取りおよび検索

| ツール | アクセス | 説明 |
|---|---|---|
| `LINEAR_GET_COMMENT` | 読み取り | Linearコメントを取得します。 |
| `LINEAR_GET_CURRENT_USER` | 読み取り | 現在認証されているLinearユーザーを取得します。 |
| `LINEAR_GET_LINEAR_ISSUE` | 読み取り | Linear課題を取得します。 |
| `LINEAR_GET_LINEAR_PROJECT` | 読み取り | Linearプロジェクトを取得します。 |
| `LINEAR_LIST_COMMENTS` | 読み取り | Linearコメントの一覧を取得します。 |
| `LINEAR_LIST_ISSUES_BY_TEAM_ID` | 読み取り | チームの課題一覧を取得します。 |
| `LINEAR_LIST_LINEAR_ISSUES` | 読み取り | Linear課題の一覧を取得します。 |
| `LINEAR_LIST_LINEAR_LABELS` | 読み取り | Linearラベルの一覧を取得します。 |
| `LINEAR_LIST_LINEAR_PROJECTS` | 読み取り | Linearプロジェクトの一覧を取得します。 |
| `LINEAR_LIST_LINEAR_STATES` | 読み取り | Linearワークフローステートの一覧を取得します。 |
| `LINEAR_LIST_LINEAR_TEAMS` | 読み取り | Linearチームの一覧を取得します。 |
| `LINEAR_LIST_LINEAR_USERS` | 読み取り | Linearユーザーの一覧を取得します。 |
| `LINEAR_SEARCH_ISSUES` | 読み取り | Linear課題を検索します。 |

::: warning 重要なお知らせ
課題の更新、ラベルの削除、コメントの解決はプロジェクトの記録を変更します。書き込み操作を行う前に対象の課題、プロジェクト、チームを必ず確認してください。
:::

## チャットでのコネクター利用方法

1. チャット入力欄でコネクターアイコンをクリックします。
2. 認証済みの**Linear**コネクターを選択します。
3. プロンプトでエージェントが使用すべき外部リソースと操作を指定します。
4. 生成されたエージェント定義を確認し、必要なツールのみが含まれていることを確認します。

## 権限とデータアクセス

コネクターは認証されたLinearアカウントを使用します。ワークスペースのメンバーシップ、チームアクセス、Linearのロールにより、読み取りまたは変更可能な課題やプロジェクトが決まります。

チャットプロンプトやエージェントの指示に外部サービスの認証情報やアクセストークンを含めないでください。

## 制限事項

- Linear APIのクォータおよびワークスペースポリシーが適用されます。
- 課題の作成および更新には対象チームへのアクセス権が必要です。
- 利用可能なワークフローステートおよびラベルは選択したワークスペースとチームに依存します。

<!-- TODO: サービス固有の結果サイズ制限、ファイル制限、APIレート制限、プラン制限、非対応リソースタイプを確認すること。 -->

## トラブルシューティング

| 症状 | 対応策 |
|---|---|
| コネクターが**Unauthorized**のまま変わらない。 | 必要に応じてLinearワークスペースのセットアップを完了し、意図したワークスペースを選択して**Authorize**をクリックしてください。 |
| ツールが権限エラーを返す。 | 認証済みLinearアカウントが対象のワークスペース、チーム、プロジェクトにアクセスでき、必要な権限を付与できるか確認してください。必要に応じてコネクターを再認証してください。 |
| 必要なツールが利用できない。 | ツールがこのコネクターでサポートおよび承認されているか確認し、チャットで再度コネクターを選択してください。 |
| リクエストが断続的に拒否される。 | 外部サービスのステータス、APIクォータ、レート制限、アカウントプランを確認してください。 |

## 関連リンク

- [Connectors](../connectors.md)
- [Start a Chat](../chats.md)
- [Manage Agents](../agents.md)
